In một chuỗi lượn sóng theo từng dòng


23

Thử thách

Viết chương trình hoặc hàm lấy chuỗi svà số nguyên nlàm tham số. Chương trình của bạn sẽ in (hoặc trả lại) chuỗi khi được chuyển đổi như sau:

Bắt đầu từ trên cùng bên trái và di chuyển xuống và sang phải, viết snhư một làn sóng chiều cao n. Sau đó, từ trên xuống dưới, kết hợp mỗi hàng dưới dạng một chuỗi (không có khoảng trắng).

Thí dụ

Cho chuỗi "WATERMELON" và chiều cao là 3:

Sóng sẽ như thế này:

W   R   O
 A E M L N
  T   E

Sau đó, kết hợp các hàng từ trên xuống dưới:

WRO
AEMLN
TE

Vì vậy, chương trình của bạn sẽ trả về chuỗi "WROAEMLNTE"

Tương tự như vậy, "BÌNH THƯỜNG" với chiều cao 4 sẽ tạo ra sóng sau:

W     E
 A   M L
  T R   O
   E     N

Chương trình của bạn sau đó sẽ trả về chuỗi "WEAMLTROEN"

Quy tắc

Đầu vào

Đầu vào có thể được thực hiện trong bất kỳ định dạng hợp lý. Chuỗi có thể trong mọi trường hợp bạn thích. Bạn có thể cho rằng0 < n <= s.length

Đầu ra

Đầu ra chỉ bao gồm chuỗi được chuyển đổi (cho dù được trả lại hoặc được in thành STDOUT), cộng với bất kỳ dòng mới nào.

Chấm điểm

Đây là , vì vậy câu trả lời ngắn nhất bằng byte thắng! Sơ hở tiêu chuẩn không được phép.

Các trường hợp thử nghiệm

Input                        Output

programmingpuzzles, 5 ->     piermnlsomgzgapzru
codegolf, 3           ->     cgoeofdl
elephant, 4           ->     enlatehp
1234567, 3            ->     1524637
qwertyuiop, 1         ->     qwertyuiop

Chúng ta có thể giả sử n> 1? Vui lòng làm rõ và nếu không thêm trường hợp thử nghiệm
Luis Mendo

1
Bạn có thể giả định n > 0, nhưng n=1là một trường hợp hợp lệ. Tôi sẽ cập nhật câu hỏi ngay bây giờ.
Cowabunghole

2
@Cowabunghole tôi biết. :) Liên quan chỉ có nghĩa là nó hơi giống nhau và câu trả lời hiện có có thể hữu ích cho thử thách này. Tôi chỉ đề cập đến nó để chúng xuất hiện ở các câu hỏi được liên kết ở bên phải. Liên quan! = Nhân đôi. ;)
Kevin Cruijssen

5
Tôi chưa bao giờ thấy một mật mã hàng rào đường sắt được mã hóa chỉ với một đường ray. Chỉ cần nói '
wooshinyobject

1
@Veskah À đúng rồi, trò lừa đảo cũ13.
wooshinyobject

Câu trả lời:


5

Husk , 6 byte

δÖK…¢ḣ

Hãy thử trực tuyến!

Làm việc cho n = 1là tốt.

Giải trình

δÖK…¢ḣ  Implicit inputs, say n=4 and s="WATERMELON"
     ḣ  Range: [1,2,3,4]
    ¢   Cycle: [1,2,3,4,1,2,3,4,1,2,3,4..
   …    Rangify: [1,2,3,4,3,2,1,2,3,4,3,2..
δÖK     Sort s by this list: "WEAMLTROEN"
        Print implicitly.

Các chức năng bậc cao hoạt δđộng như thế này dưới mui xe. Giả sử bạn có hàm bậc cao hơn có hàm unary và danh sách và trả về danh sách mới. Ví dụ, Ölấy một hàm và sắp xếp một danh sách bằng cách sử dụng nó làm khóa. Sau đó, δÖlấy một hàm nhị phân và hai danh sách, nén các danh sách lại với nhau, áp dụng Öđể sắp xếp các cặp sử dụng hàm nhị phân làm khóa và cuối cùng chiếu các cặp sang tọa độ thứ hai. Chúng tôi sử dụng Knhư là hàm chính, chỉ đơn giản trả về đối số đầu tiên của nó và bỏ qua đối số thứ hai.


6

MATL , 16 byte

Zv3L)t?yn:)2$S}i

Hãy thử trực tuyến! Hoặc xác minh tất cả các trường hợp thử nghiệm .

Giải trình

Xem xét đầu vào 5, 'programmingpuzzles'.

Zv     % Input, implicit: number n. Symmetric range
       % STACK: [1 2 3 4 5 4 3 2 1]
3L     % Push [1 -1+1j]. When used as an index, this means 1:end-1
       % STACK: [1 2 3 4 5 4 3 2 1], [1 -1+1j]
)      % Index. Removes last element
       % STACK: [1 2 3 4 5 4 3 2]
t      % Duplicate
       % STACK: [1 2 3 4 5 4 3 2], [1 2 3 4 5 4 3 2]
?      %   If non-empty and non-zero
       %   STACK: [1 2 3 4 5 4 3 2]
  y    %   Implict input: string s. Duplicate from below
       %   STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 'programmingpuzzles'
  n    %   Number of elements
       %   STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 18
  :    %   Range
       %   STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], [1 2 3 ··· 17 18]
  )    %   Index modularly
       %   STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 2]
  2$S  %   Two-input sort: stably sorts first input as given by the second
       %   STACK: 'piermnlsomgzgapzru'
}      % Else. This branch is entered when n=1. The stack contains an empty array
       %   STACK: []
  i    %   Take input
       %   STACK: [], [], 'programmingpuzzles'
       % End, implicit
       % Display stack, implicit. Empty arrays are not displayed


5

J , 54, 29, 27 26 byte

-1 byte nhờ hoosierEE

([\:#@[$[:}:|@i:@<:@]) ::[

Hãy thử trực tuyến!


@LuisMendo Hmm, một lần nữa tôi đã bỏ lỡ một điều quan trọng. Cảm ơn! Đã sửa.
Galen Ivanov

1
Ban đầu tôi cũng nhớ nó, sau đó nhận ra và hỏi OP. Đáng lẽ phải có một trường hợp thử nghiệm n=1ngay từ đầu
Luis Mendo

1
|@i:thay vì [:|i:tiết kiệm một byte
hoosierEE

@hoosierEE Vâng, cảm ơn!
Galen Ivanov

5

R , 68 byte

function(s,n)intToUtf8(unlist(split(utf8ToInt(s),-(n:(2.9-n)-1)^2)))

Hãy thử trực tuyến!

  • -10 byte nhờ @Giuseppe
  • -17 byte vì tôi ngớ ngẩn
  • -9 byte và n=1trường hợp được cố định nhờ @ J.Doe
  • -3 byte nhờ @JayCe


3

05AB1E (di sản) , 11 8 byte

Σ²Lû¨¾è¼

Lấy cảm hứng từ câu trả lời MATL của @LuisMendo .
-3 byte nhờ @Adnan vì tôi là thằng ngốc ..>.>

Hãy thử trực tuyến .

Giải trình:

Σ           # Sort the (implicit) input-string by:
 ²L         #  Create a list in the range [1, second input-integer]
            #   i.e. 5 → [1,2,3,4,5]
   û        #  Palindromize it
            #   i.e. [1,2,3,4,5] → [1,2,3,4,5,4,3,2,1]
    ¨       #  Remove the last item
            #   i.e. [1,2,3,4,5,4,3,2,1] → [1,2,3,4,5,4,3,2]
     ¾è     #  Index into it (with wraparound) using the counter_variable (default 0)
            #   i.e. counter_variable = 0 → 1
            #   i.e. counter_variable = 13 → 4
       ¼    #  And after every iteration, increase the counter_variable by 1

LƯU Ý: counter_variableĐược sử dụng, bởi vì trong phiên bản Python Legacy của 05AB1E, Σkhông có chỉ mục dựng sẵn N- mà nó có trong phiên bản viết lại Elixir mới của 05AB1E. Vậy tại sao tôi vẫn sử dụng phiên bản Legacy? Bởi vì trong Elixir viết lại, nó biến đổi hoàn toàn chuỗi thành một danh sách các ký tự, yêu cầu bổ sung }Jđể chuyển đổi lại thành chuỗi thành đầu ra (và nó cũng có một lỗi ngay bây giờ khi èkhông hoạt động để lập chỉ mục vào danh sách kéo dài ..: S)


Bạn không cần ¹g∍phần vì 05AB1E sử dụng lập chỉ mục theo chu kỳ cho è.
Ad Nam

@Adnan Ah, tôi là một thằng ngốc ..>.> Cảm ơn!
Kevin Cruijssen

2

Japt , 16 byte

¬üÏu´VÑ aV°ÃÔc q

Kiểm tra nó trực tuyến!

Giải trình

 ¬ üÏ   u´ VÑ  aV° Ã Ô c q
Uq üXY{Yu--V*2 aV++} w c q    Ungolfed
                               Implicit: U = input string, V = size of wave
Uq                             Split U into chars.
   üXY{            }           Group the items in U by the following key function:
       Y                         Take the index of the item.
        u--V*2                   Find its value modulo (V-1) * 2.
               aV++              Take the absolute difference between this and (V-1).
                                 This maps e.g. indices [0,1,2,3,4,5,6,7,...] with V=3 to
                                                        [2,1,0,1,2,1,0,1,...]
                                 The items are then grouped by these values, leading to
                                 [[2,6,...],[1,3,5,7,...],[0,4,...]].
                     w         Reverse the result, giving [[0,4,...],[1,3,5,7,...],[2,6,...]].
                       c       Flatten.
                         q     Join back into a single string.

üPhương pháp đó có mới không?
Luis felipe De jesus Munoz

Đúng, được thêm vào Thứ Bảy :-)
Sản phẩm ETH

Bạn có thể lấy đầu vào dưới dạng một mảng ký tự để lưu một byte và xuất một byte hoặc sử dụng -Pcờ để lưu thêm 2.
Shaggy

2

Thạch , 8 byte

6 byter thất bại cho chiều cao 1; hai byte được sử dụng để giải quyết nó ... có thể tìm thấy 7?

ŒḄṖȯ1ṁỤị

Một liên kết dyadic chấp nhận một số nguyên dương và một danh sách các ký tự mang lại một danh sách các ký tự.

Hãy thử trực tuyến!

Làm sao?

ŒḄṖȯ1ṁỤị - Link: positive integer N; list of characters, T
ŒḄ       - bounce (implicit range of) N -> [1,2,3,...,N-1,N,N-1,...,3,2,1]
  Ṗ      - pop off the final entry         [1,2,3,...,N-1,N,N-1,...,3,2]
   ȯ1    - OR one                          if this is [] get 1 instead
     ṁ   - mould like T (trim or repeat to make this list the same length as T)
      Ụ  - grade-up (get indices ordered by value - e.g. [1,2,3,2,1,2] -> [1,5,2,4,6,3])
       ị - index into T

2

JavaScript (ES6), 75 byte

Công thức ngắn hơn được đề xuất bởi @MattH (-3 byte)

Đưa đầu vào là (string)(n).

s=>n=>--n?[...s].map((c,x)=>o[x=x/n&1?n-x%n:x%n]=[o[x]]+c,o=[])&&o.join``:s

Hãy thử trực tuyến!


JavaScript (ES7), 78 byte

Đã lưu 4 byte nhờ @ETHproductions

Đưa đầu vào là (string)(n).

s=>n=>--n?[...s].map((c,x)=>o[x=n*n-(x%(n*2)-n)**2]=[o[x]]+c,o=[])&&o.join``:s

Hãy thử trực tuyến!


Giải pháp của tôi đã kết thúc khá giống với bạn. Bạn có thể lưu -3 byte tính toán chỉ số chèn obằng x/n&1?n-x%n:x%nthay vì n*n-(x%(n*2)-n)**2.
MattH

@MattH Hoàn thành tốt. Cảm ơn!
Arnauld


1

MBASIC , 146 159 155 byte

1 INPUT S$,N:DIM C$(N):P=1:D=1:FOR I=1 TO LEN(S$):C$(P)=C$(P)+MID$(S$,I,1)
2 IF N>1 THEN P=P+D
3 IF P=N OR P=1 THEN D=-D
4 NEXT:FOR I=1 TO N:PRINT C$(I);:NEXT

Đã cập nhật để xử lý n = 1

Đầu ra:

? programmingpuzzles, 5
piermnlsomgzgapzru

? codegolf, 3
cgoeofdl

? elephant, 4
enlatehp

? 1234567, 3
1524637

? WATERMELON, 4
WEAMLTROEN

? qwertyuiop, 1
qwertyuiop

Hiện tại không suppport trường hợp n = 1.
wooshinyobject

Đã cập nhật để xử lý trường hợp n = 1
wooshinyobject

Đã lưu 4 byte bằng cách dọn dẹp các so sánh.
wooshinyobject

1

Perl 6 , 49 byte

->\n{*.comb.sort({-abs n-1-$++%(2*n-2||1)}).join}

Hãy thử trực tuyến!

Đưa đầu vào như một chức năng curried.

Giải trình:

->\n{*.comb.sort({-abs n-1-$++%(2*n-2||1)}).join}
->\n{                                           }  # Take an number
     *.comb        # Turn the string into a list of chars
           .sort({                       })   # And sort them by
                           $++    # The index of the char
                              %(2*n-2||1)  # Moduloed by 2*(n-1) or 1 if n is 0
                       n-1-       # Subtract that from n-1
                   abs            # get the absolute value
                  -               # And negate to reverse the list
                                          .join  # and join the characters

Trình tự được sắp xếp theo hình như thế này (for n=5):

(-4 -3 -2 -1 0 -1 -2 -3 -4 -3 -2 -1 0 -1 -2 -3 -4 -3 -2 -1)

1

J , 24 byte

4 :'x\:(#x)$}:|i:<:y'::[

Hãy thử trực tuyến!

Động từ dyadic rõ ràng. Chạy nó như thế nào 'codegolf' f 3.

Làm thế nào nó hoạt động

4 :'x\:(#x)$}:|i:<:y'::[    x: string, y: height
4 :                         Define a dyadic verb:
               i:<:y        Generate a range of -(y-1) .. y-1
            }:|             Take absolute value and remove last
       (#x)$             1) Repeat to match the string's length
    x\:                     Sort x by the decreasing order of above
                     ::[    If 1) causes `Length Error`, return the input string instead

Thông thường, hàm tường minh có thêm 5 byte ở dạng n :'...'. Nhưng nếu xử lý lỗi được thêm vào, sự khác biệt sẽ giảm xuống còn 2 byte do các phần tử và không gian trong (tacit)<space>::.


Tại sao tôi luôn có xu hướng sử dụng sort up?! Động từ rõ ràng của bạn vẫn ngắn hơn 3 byte. Quyết định tốt!
Galen Ivanov


1

Powershell, 99 95 byte

param($s,$n)$r=,''*$n
$s|% t*y|%{$r[((1..$n+$n..1)*$s.Length|gu)[$i++*($n-gt1)]-1]+=$_}
-join$r

Kịch bản thử nghiệm:

$f = {

param($s,$n)$r=,''*$n
$s|% t*y|%{$r[((1..$n+$n..1)*$s.Length|gu)[$i++*($n-gt1)]-1]+=$_}
-join$r

}

@(
    ,("1234567", 3            ,     "1524637")
    ,("qwertyuiop", 1         ,     "qwertyuiop")
    ,("codegolf", 3           ,     "cgoeofdl")
    ,("elephant", 4           ,     "enlatehp")
    ,("programmingpuzzles", 5 ,     "piermnlsomgzgapzru")
) | % {
    $s,$n,$e = $_
    $r = &$f $s $n
    "$($r-eq$e): $r"
}

Đầu ra:

True: 1524637
True: qwertyuiop
True: cgoeofdl
True: enlatehp
True: piermnlsomgzgapzru

Giải trình

Kịch bản:

  • tạo ra một mảng các hàng
  • điền vào các hàng với các giá trị phù hợp,
  • và trả về các hàng đã tham gia.

Biểu thức ((1..$n+$n..1)*$s.Length|gu tạo ra một chuỗi như 1,2,3,3,2,1,1,2,3,3,2,1... và loại bỏ các trùng lặp liền kề. gulà bí danh cho Get-Unique .

  • Đối với $n=3trình tự lặp lại là:1,2,3,2,1,2,3,2,1...
  • Đối với $n=1trình tự lặp lại là:1

Biểu thức $i++*($n-gt1) trả về một chỉ mục trong chuỗi lặp lại. =$i++nếu $n>1, nếu không=0


1

Ruby , 75 65 byte

->s,h{a=['']*h;x=-k=1;s.map{|c|a[x+=k=h-x<2?-1:x<1?1:k]+=c};a*''}

Hãy thử trực tuyến!

Lấy đầu vào là một mảng ký tự, trả về chuỗi

Làm thế nào nó wokrs:

  • Tạo hchuỗi
  • Đối với mỗi ký tự trong chuỗi đầu vào, hãy quyết định chuỗi nào sẽ được đặt dựa trên chỉ mục của chuỗi đó (chỉ mục của chuỗi cần sửa đổi sẽ tăng lên cho đến khi hgiảm xuống cho đến khi 0và cứ thế tiếp tục)
  • Trả lại tất cả các chuỗi được nối với nhau


@GB nó không hoạt động cho trường hợp cuối cùng
Asone Tuhid

1

C, 142 134 byte

8 byte được lưu nhờ Jonathan Frech

Mã số:

t;i;j;d;f(s,n)char*s;{for(t=strlen(s),i=0;i<n;i++)for(j=0;j+i<t;j=d+i+(n<2))d=j-i+2*~-n,putchar(s[i+j]),i>0&i<n-1&d<t&&putchar(s[d]);}

Giải trình:

// C variable and function declaration magic
t;i;j;d;f(s,n)char*s;{
    // Iterate through each "row" of the string
    for(t=strlen(s),i=0;i<n;i++)
        // Iterate through each element on the row
        // Original index iterator here was j+=2*(n-1), which is a full "zig-zag" forward
        // The (n<2) is for the edge case of n==1, which will break the existing logic.
        for(j=0; j+i<t; j=d+i+(n<2))
            // If j+i is the "zig", d is the "zag": Original index was d=j+i+2*(n-i-1)
            // Two's complement swag here courtesy of Jonathan Frech
            d=j-i+2*~-n,
            putchar(s[i+j]),
            // Short circuit logic to write the "zag" character for the middle rows
            i>0 & i<n-1 & d<t && putchar(s[d]);
}

Hãy thử trực tuyến!


1
Xin chào và chào mừng đến với PPCG; golf đầu tiên tốt đẹp. 134 byte (giả sử GCC).
Jonathan Frech

0

Than , 21 byte

⭆NΦη¬⌊E²﹪⁺μ⎇νι±ι∨⊗⊖θ¹

mim±i=0(mod2n2)

 N                      First input as a number
⭆                       Map over implicit range and join
   η                    Second input
  Φ                     Filter over characters
       ²                Literal 2
      E                 Map over implicit range
          μ             Character index
             ι ι        Outer index
              ±         Negate
            ν           Inner index
           ⎇            Ternary
         ⁺              Plus
                   θ    First input
                  ⊖     Decremented
                 ⊗      Doubled
                    ¹   Literal 1
                ∨       Logical Or
        ﹪               Modulo
     ⌊                  Minimum
    ¬                   Logical Not
                        Implicitly print

0

SNOBOL4 (CSNOBOL4) , 191 byte

	S =INPUT
	N =INPUT
	A =ARRAY(N)
	A<1> =EQ(N,1) S	:S(O)
I	I =I + -1 ^ D
	S LEN(1) . X REM . S	:F(O)
	A<I> =A<I> X
	D =EQ(I,N) 1
	D =EQ(I * D,1)	:(I)
O	Y =Y + 1
	O =O A<Y>	:S(O)
	OUTPUT =O
END

Hãy thử trực tuyến!

Mất Ssau đó Ntrên các dòng riêng biệt.

Giải trình:

	S =INPUT			;* read S
	N =INPUT			;* read N
	A =ARRAY(N)			;* create array of size N
	A<1> =EQ(N,1) S	:S(O)		;* if N = 1, set A<1> to S and jump to O
I	I =I + -1 ^ D			;* index into I by I + (-1)^D (D starts as '' == 0)
	S LEN(1) . X REM . S	:F(O)	;* extract the first character as X and set S to the
					;* remaining characters, jumping to O when S is empty
	A<I> =A<I> X			;* set A<I> to A<I> concatenated with X
	D =EQ(I,N) 1			;* if I == N, D=1
	D =EQ(I * D,1)	:(I)		;* if I == D == 1, D = 0. Goto I
O	Y =Y + 1			;* increment the counter
	O =O A<Y>	:S(O)		;* concatenate the array contents until last cell
	OUTPUT =O			;* and print
END



0

Pyth , 22 21 byte

|seMhD,V*lz+PUQP_UQzz

Đưa đầu vào ntheo sau strên các dòng riêng biệt. Dùng thử trực tuyến tại đây hoặc xác minh tất cả các trường hợp thử nghiệm cùng một lúc tại đây .

|seMhD,V*lz+PUQP_UQzz   Implicit: Q=eval(input()), z=remaining input

             UQ         Range [0-Q)
            P           All but last from the above
                         e.g. for Q=3, yields [0,1]
               P_UQ     All but last of reversed range
                         e.g. for Q=3, yields [2,1]
           +            Concatenate the previous two results
                          e.g. for Q=3, yields [0,1,2,1]
        *lz              Repeat len(z) times
      ,V           z    Vectorised pair the above with z, truncating longer to length of shorter
                          e.g. for Q=3, z=WATERMELON, yields:
                          [[0,'W'],[1,'A'],[2,'T'],[1,'E'],[0,'R'],[1,'M'],[2,'E'],[1,'L'],[0,'O'],[1,'N']]
    hD                  Sort the above by the first element
                          Note this is a stable sort, so relative ordering between equal keys is preserved
  eM                    Take the last element of each
 s                      Concatenate into string
                          Note that if n=1, the result of the above will be 0 (sum of empty array)
|                   z   If result of above is falsey, yield z instead

Chỉnh sửa: đã lưu một byte bằng cách di chuyển kiểm tra trống đến cuối quá trình xử lý. Phiên bản trước: seMhD,V*lz|+PUQP_UQ]0z


0

Màu đỏ , 153 byte

func[s n][i: v: m: 1 b: collect[foreach c s[keep/only reduce[v i c]v: v + m
if all[n > 1(i: i + 1)%(n - 1)= 1][m: -1 * m]]]foreach k sort b[prin last k]]

Hãy thử trực tuyến!

Giải trình:

f: func [ s n ] [                      ; s is the string, n is the height
    i: 1                               ; index of the current character in the string
    v: 1                               ; value of the "ladder"
    m: 1                               ; step (1 or -1)
    b: collect [                       ; collect the values in a block b
        foreach c s [                  ; foreach character in the string 
            keep/only reduce [ v i c ] ; keep a block of the evaluated [value index char] 
            i: i + 1                   ; increase the index
            v: v + m                   ; calculate the value 
            if all [ n > 1             ; if height is greater than 1 and
                    i % (n - 1) = 1    ; we are at a pick/bottom of the ladder
                   ]
                [ m: -1 * m ]          ; reverse the step
        ]
    ]
    foreach k sort b [ prin last k ]   ; print the characters in the sorted block of blocks
]

0

Tôi có hai giải pháp cho vấn đề. Giải pháp đầu tiên tôi đã làm trước tiên sau đó tôi nghĩ ra một cách khác để làm điều đó mà tôi nghĩ sẽ tiết kiệm được byte nhưng dù sao tôi cũng không bao gồm nó.


Giải pháp 1

PHP , 152 144 116 byte

<?php
for($i=0;$i<$n=$argv[2];$i++)
    for($j=$i;$s=$argv[1][$j];$j+=$n<2|(($f=!$f|!$i)?$i<$n-1?$n+~$i:$i:$i)*2)
        echo $s;
  • 8 byte nhờ @JoKing
  • 28 byte nhờ @Shaggy

Hãy thử trực tuyến!


Giải pháp 2

PHP , 162 byte

<?php
$s=$argv[0];
$n=$argv[1];
$l=strlen($s);
for($i=0;$i<$l;){
    for($j=0;$j<$n&&$i<$l;)
        $a[$j++].=$s[$i++];
    for($j=$n-2;$j>0&&$i<$l;)
        $a[$j--].=$s[$i++];
}
echo join($a);

Hãy thử trực tuyến!


Bạn không cần phải khởi tạo $f$n-1-$icó thể $n-~$i. 144 byte
Jo King

-28 byte trên các cải tiến của @ JoKing.
Xù xì

Oop; mà phá vỡ khi n=1. Cái này hoạt động cho cùng một số byte.
Xù xì

Bạn cũng có thể sử dụng các thẻ ngắn và xóa khoảng trống sau echođể lưu thêm 5 byte
Shaggy

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.