Số nguyên đầu ra theo thứ tự âm, tăng số nguyên tối đa mọi lúc


44

Nhiệm vụ chính

Nhiệm vụ của bạn là in ra các số nguyên theo thứ tự giảm dần, bắt đầu từ 1 và tăng dần khi bạn tiếp tục nhấn 1 lần nữa, cho đến khi đạt được đầu vào đã cho, sau đó, in ra phần còn lại cho đến khi bạn nhấn lại 1 lần nữa. Ví dụ với đầu vào 6:

1
21
321
4321
54321
654321
Without newlines (valid output):
121321432154321654321
Lưu ý bên lề: đây là A004736 trong OEIS. Ngoài ra, ví dụ đầu tiên (với dòng mới) là một đầu ra không hợp lệ, như được quy định trong các quy tắc.

Đầu vào

Mã của bạn có thể lấy bất kỳ loại đầu vào nào (đồ họa, STDIN) dưới dạng số nguyên hoặc số.

Đầu ra

Mã của bạn sẽ xuất chuỗi được mô tả ở trên, cho đến khi đạt được số đầu vào, sau đó kết thúc để xuất cho đến khi đạt đến 1 lần nữa. Đầu ra có thể là bất cứ thứ gì, do đó, số, chuỗi, số nguyên hoặc đầu ra đồ họa. Cần phải in ra một số duy nhất (không có dòng mới nếu đó là một chuỗi). Đầu ra của bạn có thể được giới thiệu và xuất hiện với bao nhiêu ký tự bạn cần (ví dụ []).

Vì có một số hiểu lầm, đây là mô hình regex bạn có thể thử kết quả đầu ra của mình.

^(\D*(\d)+\D*)$

Quy tắc

  • Đầu ra phải là một số đầy đủ, không bị chia tách bởi bất cứ điều gì, thậm chí không phải là dòng mới.
  • Thuật toán không nên kiểm tra phiên bản đầu tiên của N xuất hiện theo bất kỳ cách nào (ví dụ: 21trong 121321), mà thay vào đó, ví dụ đầu tiên của N là số thực tế.
  • Một dòng mới duy nhất được cho phép.
  • Việc xử lý đầu vào tiêu cực hoàn toàn là sự lựa chọn của bạn, số âm không phải là trường hợp bạn nên kiểm tra.

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

Input: 6
Output: 121321432154321654321

Input: 1 Output: 1

Input: 26 Output: 121321432154321654321765432187654321987654321109876543211110987654321121110987654321131211109876543211413121110987654321151413121110987654321161514131211109876543211716151413121110987654321181716151413121110987654321191817161514131211109876543212019181716151413121110987654321212019181716151413121110987654321222120191817161514131211109876543212322212019181716151413121110987654321242322212019181716151413121110987654321252423222120191817161514131211109876543212625242322212019181716151413121110987654321

Input: 0 Output: 0, Empty, or Error

Input: 21 Output: 121321432154321654321765432187654321987654321109876543211110987654321121110987654321131211109876543211413121110987654321151413121110987654321161514131211109876543211716151413121110987654321181716151413121110987654321191817161514131211109876543212019181716151413121110987654321212019181716151413121110987654321

Cảm ơn @Emigna, tôi đã sử dụng thuật toán của anh ấy để tính toán các trường hợp thử nghiệm này.

Người chiến thắng

Người chiến thắng đã được chọn! Đó là câu trả lời của ErikGolfer với 5 byte ấn tượng ! Xin chúc mừng!


The output must be a full number ...Bạn có nghĩa là toàn bộ chuỗi, hoặc chỉ các chuỗi con khác nhau (1, 2-1, 3-1 ...)? Ví dụ đầu tiên của bạn dường như không khớp với tuyên bố này.
steenbergh

1
Nếu đầu ra phải là một số duy nhất, làm thế nào nó có thể là "mảng"?
smls

Mảng này sẽ được chấp nhận như đầu ra? [1, 21, 321, 4321, 54321, 654321] Cái này thì sao? [1,2,1,3,2,1,4,3,2,1,5,4,3,2,1,6,5,4,3,2,1] Hay bạn chỉ đang nói về mảng với một yếu tố duy nhất, như thế [121321432154321654321]nào?
smls

1
Tôi bối rối về định dạng đầu ra. Bạn có thể cho ví dụ về những gì được chấp nhận? Mảng số? Chuỗi có số cách nhau bởi khoảng trắng?
Luis Mendo

1
Regex của bạn cho phép đầu ra của mickey321211mouse. Thực sự các \Dbộ phận không có lý do để ở đó
edc65

Câu trả lời:



19

05AB1E , 6 byte

L€LíJJ

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

Giải trình

Ví dụ đầu vào 4

L       # range [1 ... input]
        # STACK: [1,2,3,4]
 €L     # map: range
        # STACK: [[1],[1,2],[1,2,3],[1,2,3,4]]
   í    # reverse each
        # STACK: [[1],[2,1],[3,2,1],[4,3,2,1]]
    J   # join inner lists
        # STACK: ['1','21','321','4321']
     J  # join list
        # OUTPUT: 1213214321

13

JavaScript (ES6), 37 byte

f=(n,k=1)=>k>n?n--?f(n):'':f(n,k+1)+k

Bản giới thiệu

Phương pháp thay thế cho n <10, 34 byte (không cạnh tranh)

f=(n,s='1')=>--n?s+f(n,++s[0]+s):s

Trong JavaScript, chuỗi là bất biến. Do đó, không thể thay đổi nội dung của ký tự thứ N của chuỗi sbằng cách gán giá trị mới cho s[N].

Tuy nhiên, biểu thức ++s[N]là hợp lệ và được đánh giá như người ta mong đợi, ngay cả khi chuỗi vẫn không thay đổi. Ví dụ:

++"1"[0] // equals 2

Và bằng cách mở rộng:

s = "21"
++s[0] + s // equals "321"

Có vẻ như không hoạt động cho n> 9
edc65

@ edc65 Bạn nói đúng, tất nhiên. Tôi không biết tại sao tôi nghĩ dừng lại ở 9.
Arnauld

12

V, 29 28 27 23 19 17 16 byte

8 byte được lưu nhờ @DJMcMayhem

3 byte được lưu nhờ vào @ nmjcman101

"apÀ­ñÄòy$jpkgJ

Nhân vật ẩn:

"apÀ<C-x>ñÄ<C-x>òy$jpkgJ

C-x là Ctrl + x.

Hãy thử trực tuyến! nhận đầu vào thông qua các đối số dòng lệnh

Hexdump:

0000000: 2261 70c0 adf1 c418 f279 246a 706b 674a  "ap......y$jpkgJ

Giải trình

"ap            Paste the argument
À<C-x>         Argument minus 1 times (so that we exclude the 0)
ñ ... ò        Loop (for some weird reason the ò closes the ñ)
Ä<C-x>         paste current line above and decrement it

Bây giờ nó trông giống như:

1
2
...
n

tiếp tục ...

ò             recursively do (until a breaking error)
y$             yank this line
  jp           paste it down
    kgJ        go up and join
              implicit ò end

GIF (lỗi thời)

(cho tranh luận 6)

ảnh động


Tôi đã nhận được một vài bằng cách thay đổi vòng lặp của bạn thành a) kết thúc hoàn toàn và b) tham gia các dòng khi nó đi (chứ không phải ở cuối)òy$jpkgJ
nmjcman101

@ nmjcman101 Cảm ơn vì đã giúp tôi tiết kiệm 2 byte!
Kritixi Lithos

Đây là golf khá tốt. Tôi đã sử dụng bộ não của mình trong 20 phút và tôi không thể nghĩ gì ngắn hơn. :)
DJMcMayhem

@DJMcMayhem Đó là vì tôi đã có một số trợ giúp tuyệt vời :)
Kritixi Lithos

Tôi đã làm nó! Bạn có thể nhận được tới 16 byte. Nếu bạn dán đối số và sau đó sao chép / giảm dần lên trên, bạn có thể xóa H. Sau đó, nếu bạn sử dụng toán tử giảm dần trên À, bạn sẽ không có 0 ở trên cùng để bạn có thể xóa x. Sau đó, APPARENTLY a òsẽ đóng a ­ñđể bạn có thể loại bỏ cái thứ hai ­ñ(là byte bạn lưu). Liên kết vì điều đó không có ý nghĩa
nmjcman101

11

C #, 72 69 65 byte

n=>{for(int i=0,j;i<n;)for(j=++i;j>0;)System.Console.Write(j--);}

Nếu đầu ra chỉ có thể được trả về chứ không phải được ghi vào bàn điều khiển

C #, 71 68 64 byte

n=>{var s="";for(int i=0,j;i<n;)for(j=++i;j>0;)s+=j--;return s;}

Cảm ơn @VisualMelon đã lưu rất nhiều byte

Kiểm tra nó ở đây (một cách hài hước trình biên dịch trực tuyến phá vỡ bất kỳ số nào trên 420)


Điều đó thực sự nhanh chóng.
devR Rich

@devR Rich Tôi có thể nói gì, tôi đang chờ đợi một cái gì đó được đăng: P
Alfie Goodacre

2
Không bao giờ có lý do để sử dụng vòng lặp while trong golf mã C #, vòng lặp for sẽ luôn hoạt động tốt nếu không muốn nói là tốt hơn. Trong trường hợp này, bạn có thể bao gồm việc gán j=1trong vòng lặp for và lưu dấu chấm phẩy. Bạn cũng có thể khai báo jcùng với i, để lưu int. Cũng i++có thể được chuyển đến j=ibài tập, lưu một byte. Bạn cũng có thể thay thế i<=nbằng i<nnếu bạn thực hiện j=++ithay thế và bắt đầu itại 0.
VisualMelon

@VisualMelon đã chỉnh sửa nó, lưu 3 byte! Việc khai báo các số nguyên với nhau thực sự không có sự khác biệt nào về số byte nhưng nó làm cho các vòng lặp trông đẹp hơn một chút
Alfie Goodacre

@Alfieoodacre nếu bạn khai báo chúng cùng nhau trong vòng lặp for, thì bạn sẽ tiết kiệm thêm 2 byte for(int i=0,j;i<n;);) Cũng không cần {}vòng lặp bên trong vòng lặp for.
VisualMelon

8

Bash tinh khiết, 34

eval eval printf %s \\{{1..$1}..1}

Hai cấp độ mở rộng niềng răng. Với đầu vào 6, cấp độ đầu tiên mở rộng đến {1..1} {2..1} {3..1} {4..1} {5..1} {6..1}. Điều này sau đó mở rộng ra 1 2 1 3 2 1 4 3 2 1 5 4 3 2 1 6 5 4 3 2 1, được kết hợp thành một chuỗi với printf %s. evalYêu cầu ở cả hai cấp độ mở rộng - đối với cấp đầu tiên để $1tham số được mở rộng trước và cho cấp thứ hai để mở rộng sau cấp thứ nhất.

Dùng thử trực tuyến


8

Perl, 21 byte

Sử dụng -Emà không mất thêm chi phí.

say map$}=$_.$},1..<>

Sử dụng

perl -E 'say map$}=$_.$},1..<>' <<< 6
121321432154321654321

7

Bình thường, 7 byte

jks}R1S

Một chương trình lấy đầu vào của một số nguyên và in kết quả.

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

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

jks}R1S   Program. Input: Q
jks}R1SQ  Implicit input fill
    R     Map
      SQ  over [1, 2, 3, 4, ..., Q] with i:
   } 1     Yield [i, i-1, i-2, i-3, ..., 1]
  s       Merge
jk        Join
          Implicitly print

Cá nhân tôi rất thất vọng vì jk_hC.:Snó dài hơn, nhưng công việc tốt!
FryAmTheEggman

7

GeoGebra , 67 byte

1
InputBox[a]
Sum[Join[Sequence[Sequence[Text[j],j,i,1,-1],i,1,a]]]

Mỗi dòng được nhập riêng vào thanh đầu vào. Đầu vào được lấy từ một hộp đầu vào.

Đây là một gif của việc thực hiện:

Thực hiện chương trình

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

Nhập 1ngầm định gán acho 1InputBoxlệnh liên kết một hộp đầu vào với a. Sau đó, với mỗi itrong {1, 2, 3, ..., a}, danh sách {i, i-1, i-2, ..., 1}được tạo bằng Sequencelệnh và mỗi jtrong danh sách đó được chuyển đổi thành một chuỗi bằng cách sử dụng Text. Cuối cùng, Joinhợp nhất tất cả các danh sách và Sumnối tất cả các thành phần với một đối tượng văn bản, được hiển thị.


@devR Rich Điều đó có vẻ hợp lý. Cảm ơn!
TheBikingViking


7

Võng mạc , 26 22 byte

Số lượng byte giả định mã hóa ISO 8859-1.

.+
$*

$`¶
1
$.%'
0?¶

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

Giải trình

.+
$*

Chuyển đổi đầu vào thành unary.


$`¶

Tại mỗi vị trí, chèn tiền tố cho đến thời điểm đó, cũng như nguồn cấp dữ liệu. Điều này tạo ra một phạm vi unary từ 2đến n+1, một giá trị trên mỗi dòng.

1
$.%'

Thay thế mỗi 1bằng số lượng ký tự sau nó trên cùng một dòng. Điều này biến một cái gì đó như 11111thành 43210.

0?¶

Loại bỏ tất cả các nguồn cấp dữ liệu và các số không trước chúng.


5

Ngôn ngữ GameMaker, 65 byte

b=""for(i=1;i<=argument0;i++){c=i while(j)b+=string(c--)}return b

5

APL, 10 byte

∊⍕¨∘⌽∘⍳¨∘⍳

Ví dụ:

      (∊⍕¨∘⌽∘⍳¨∘⍳)6
121321432154321654321

Giải trình:

  • : lấy các số từ 1 đến N.
  • ⍳¨∘: cho mỗi số đó, lấy các số từ 1 đến N.
  • ⌽∘: đảo ngược danh sách đó
  • ⍕¨∘: lấy biểu diễn ký tự của từng mục (để nó không xuất ra các số có khoảng trắng ở giữa)
  • : làm phẳng mảng kết quả

Vì vậy, nó phân tích cú pháp mã ngược?
devR Rich

là thành phần chức năng, tôi đã đưa ra lời giải thích theo thứ tự các chức năng được đánh giá thực sự
marinus

1
Đây là cây phân tích cú pháp, cho người tò mò: tryapl.org/ Lời
marinus

5

Python 2, 71 68 byte

Tôi cá là một giải pháp đệ quy có thể ngắn hơn, nhưng tôi gặp khó khăn khi biến nó thành một.

n=input()
i=0
o=""
while i<n:
    i+=1;j=i
    while j:o+=`j`;j-=1
print o

Dùng thử trực tuyến


5

Thực tế 8 byte

RR♂RΣRεj

Lần đầu tiên đăng một câu trả lời trong thực tế để nó có thể được chơi golf.

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

Program takes implicit input, implicit print at EOF
R           Takes the input and creates a range (1, input)   
                STACK = [1,2,..,n]
 R          Reverse the top stack item (our range)
                STACK = [n,..,2,1]
  ♂R        For each item in our range, create a range (1, rangeitem)
                STACK = [[1,2,..,n], .., [1,2], [1]]
    Σ       Stitch the items of the list together
                STACK = [n,..,1,2,3,1,2,1]
     R      Reverse the top stack item again (our answer)
                STACK = [1,2,1,3,2,1,..n]
      εj    Create an empty string and append each item from the list to it.
            (turns non string items into strings)

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


1
Tôi không chắc rằng có một giải pháp ngắn hơn, nhưng tôi đã chứng minh bản thân mình sai trước. Trong mọi trường hợp, đây là một liên kết Dùng thử trực tuyến cho câu trả lời của bạn.
Sherlock9

1
R♂R♂RΣεjnày có cùng số byte, nhưng có thể dễ dàng hơn để viết một lời giải thích cho.
Sherlock9

@ Sherlock9 cách của bạn thanh lịch hơn một chút, tôi đã thêm liên kết và một lời giải thích mà tôi quên thêm vào ngày hôm qua để thử giải thích thêm một chút.
Teal bồ nông


4

Perl 6 , 22 byte

{[~] flat [\R,] 1..$_}

Một lambda trả về một chuỗi.

( Dùng thử trực tuyến. )

Giải trình:

  • 1..$_: Phạm vi số nguyên ... (1 2 3 4)
  • [,] 1..$_: Giảm ("gấp") so với toán tử dấu phẩy ... (1 2 3 4)
  • [\,] 1..$_: Với kết quả trung gian ( giảm tam giác ) ...((1) (1 2) (1 2 3) (1 2 3 4))
  • [\R,] 1..$_: Áp dụng toán tử meta đảo ngược cho dấu phẩy ...((1) (2 1) (3 2 1) (4 3 2 1))
  • [~] flat ...: Xóa danh sách lồng nhau và gập lên toán tử concat chuỗi ... 1213214321

4

Haskell, 35 byte

f x=[1..x]>>= \y->[y,y-1..1]>>=show

Ví dụ sử dụng: f 6-> "121321432154321654321".

Đối với tất cả các số xtrong 1 ... xmột danh sách x,x-1, ... ,1, hãy biến các số thành một chuỗi và nối chúng thành một chuỗi. Một lần nữa, nối các chuỗi đó thành một chuỗi.


4

C89, 54 byte

i,j;f(n){for(i=1;j<=n;j=i++)while(j)printf("%d",j--);}

56 -2 = 54 nhờ ErikGolfer!


Tôi nghĩ bạn có thể làm (j=i++)thay vì (j=i)và loại bỏ cái cuối cùng i++(chưa được kiểm tra).
Erik the Outgolfer

Đây là phiên bản đệ quy ngắn hơn: i,j;f(n){j=++i;while(j)printf("%d",j--);i-n?f(n):0;}(52 byte)
Steadybox

@Steadybox Bạn có thể thêm câu đó làm câu trả lời của riêng bạn nếu bạn thích, nhưng cảm ơn!
mèo

@cat Ok, cảm ơn, vừa mới làm. Không chắc chắn nếu tôi chỉ nên chỉnh sửa giải pháp của bạn.
Steadybox

4

Python 3, 87 92 83 74 byte

lambda n:"".join(["".join([str(i)for i in range(1,k)][::-1])for k in range(1,n+2)])

Câu trả lời ngắn hơn sử dụng đệ quy:

f=lambda n:f(n-1)+"".join([str(i)for i in range(1,n+1)][::-1])if n>0else""

Có thể không phải là ngắn nhất nhưng nó chỉ được thực hiện với sự hiểu biết danh sách của Python!

(Đã chỉnh sửa để thêm chức năng in và xóa \ n)

(Đã chỉnh sửa để xóa chức năng in và thay đổi n + 1, k + 1 thành n, k + 2)


Hoạt động với k, n + 2 nhưng không hoạt động với k + 2, n, cảm ơn vì ý tưởng này :)
Sygmei

Mã mà bạn đang ghi phải là đầu tiên. Ngoài ra, bạn nên sử dụng Python 2 và sau đó sử dụng `i`thay vì str(i). Và bạn có thể sử dụng "".join(...)thay vì "".join([...]), và range(1,k,-1)để loại bỏ [...][::-1].
mbomb007

Ngoài ra, n>0có thể được n. Và tôi muốn nói range(n,0,-1). Và sử dụng n and f(n-1)+...)or"".
mbomb007

1
62 byte . Trên thực tế, điều này có thể đang trở nên quá gần với câu trả lời này .
mbomb007

Vâng, điều này đang trở nên khá gần, tôi đã thấy rằng sau khi thực hiện phiên bản thứ hai của mình :(
Sygmei

3

Bình thường, 8 byte

jks_M._S

Giải trình

jks_M._SQ   Implicit input
       SQ   Get the range [1, 2, ..., N]
     ._     Get each prefix
   _M       Reverse each prefix
jks         Join everything as a string


3

Toán học, 36 byte

ToString/@(""<>Range[Range@#,1,-1])&

Ném một loạt các cảnh báo có thể được bỏ qua một cách an toàn.

Giải trình

Sử dụng đầu vào 5làm ví dụ:

Range@#

Tạo ra một phạm vi {1, 2, 3, 4, 5}.

Range[...,1,-1]

Rangecó thể liệt kê để chúng tôi có thể cung cấp cho nó một danh sách cho bất kỳ đối số nào của nó và nó sẽ tự động xâu chuỗi đối số đó. Vì vậy, điều này cung cấp cho chúng tôi một loạt các danh sách đảo ngược:

{{1}, {2, 1}, {3, 2, 1}, {4, 3, 2, 1}, {5, 4, 3, 2, 1}}

Kế tiếp:

(""<>...)

Điều này tham gia danh sách lồng nhau với chuỗi rỗng. Vì danh sách lồng nhau không thực sự chứa bất kỳ chuỗi nào, nên nó không thể thực sự tham gia các giá trị (đó là nơi tạo ra các cảnh báo), nhưng ""<>có tác dụng phụ là làm phẳng danh sách. Vì vậy, điều này mang lại cho chúng tôi

1 <> 2 <> 1 <> 3 <> 2 <> 1 <> 4 <> 3 <> 2 <> 1 <> 5 <> 4 <> 3 <> 2 <> 1

Bây giờ đến tính năng tuyệt đẹp của Mathematica mà Mapkhông quan tâm đến cấu trúc mà nó ánh xạ. Bạn thường áp dụng nó vào một danh sách, nhưng nó hoạt động với bất kỳ đầu nào. f /@ h[a, b, c]chỉ đơn giản là cung cấp cho bạn h[f[a], f[b], f[c]]. Trong trường hợp của chúng tôi, phần đầu là StringJoinvà các giá trị là các số nguyên.

ToString/@...

Vì vậy, điều này chỉ đơn giản là biến các số nguyên thành chuỗi. Tại thời điểm đó StringJoin[...]biết phải làm gì với chúng và nối tất cả chúng thành một chuỗi:

"121321432154321"

1
Điều đó thật khó chịu. :)
Greg Martin

3

GolfScript , 14 byte

~,{),{)}%-1%}%

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

Tất nhiên, phương pháp thông thường, nhưng đây là GolfScript.

Giải thích cho đoạn mã VAST này :

~,{),{)}%-1%}% # Code
               # Initial stack.      ["n"]
~              # Eval ToS.           [n]
 ,             # ToS' lowered range. [[0..n)]
  {),{)}%-1%}  # Block. 1 argument.  [a]
   )           # Increment.          [a+1]
    ,          # Range.              [[0..a)]
     {)}       # Block. 1 argument.  [b]
      )        # Increment.          [b+1]
        %      # Map.                [[1..a]]
         -1    # Integer. -1         [[1..a] -1]
           %   # Each nth element.   [[a..1]]
             % # Map.                [[[1],[2,1],...,[n..1]]]
               # Implicit output.    121...n..1

Lưu ý rằng đầu ra là một số duy nhất. Trailing \n.


3

R, 38 33 44 byte

if((n=scan())>0)for(i in 1:n)cat(i:1,sep="")

Đưa đầu vào vào STDIN và lặp từ 1 đến n, tạo chuỗi i thành 1 cho mỗi bước và in nó.

Chỉnh sửa: được thay thế seq(i,1)bằng cách i:1lưu 5 byte và cho biết lý do tại sao tôi không nên chơi gôn trong các cuộc họp.


Điều này tạo ra 101nếu đầu vào là 0. if((n=scan())>0)for(i in 1:n)cat(i:1,sep="")không lừa
Frédéric

Chết tiệt, giả sử đầu vào khác không :(
JAD

if(n<-scan())nên là đủ
Giuseppe

3

MATL , 14 11 byte

:"@:P]v!VXz

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

Giải trình

:      % Input N implicitly. Push range [1 2 ...N]
"      % For each k in [1 2 ...N]
  @:   %   Push range [1 2 ... k]
  P    %   Reverse
]      % End
v!     % Concatenate all arrays horizontally
V      % Convert to string
Xz     % Remove spaces. Display implicitly

not split up by anything, đừng nghĩ cái thứ hai được cho phép.
JAD

2
@JarkoDubbeldam Tôi sẽ xóa cái đó cho đến khi OP làm rõ
Luis Mendo

1
@Jarko OP làm rõ. Giải pháp hiện tại phù hợp với thông số kỹ thuật
Luis Mendo

3

Brainfuck, 17 byte

>,[>[+.>]+.[<]>-]

Giải trình

>           keep the first cell at 0
 ,          input of the decimal number into the cell
  [>        start a conditionnal loop and go to the next cell
   [+.>]    while it don't find 0, increment each cells and output the value
    +.      increment the new cell and output
     [<]    go to the first cell
      >-]   decrement the second cell and restart

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


Chào mừng đến với PPCG! Bạn đã đọc trang tour du lịch và các câu hỏi meta nóng nhất chưa? Tôi khuyên bạn, chúng hữu ích! Ngoài ra, bọc mã của bạn trong định dạng mã! Bạn đã đọc các định dạng giúp đỡ? Bạn cũng nên giải thích cách mã của bạn hoạt động, nếu bạn có thể!
devR Rich

@muddyfish Tôi vừa thêm lời giải thích
Milihhard

Tôi đã sử dụng một ứng dụng di động. Bạn có thể thấy màn hình của kết quả.
Milihhard

Không, nó ổn Nhưng trong liên kết, ouput ở dạng ascii chứ không phải ở dạng thập phân, vì vậy bạn không thực sự thấy đầu ra
Milihhard

@muddyfish Permalink của bạn là một chút khó hiểu. Có một 0x06 vô hình trong đầu vào, theo sau là chữ số thập phân 6 .
Dennis

3

Python , 63 57 59 byte

Một giải pháp đệ quy hoạt động trong cả Python 2 và 3. Điều này có thể được đánh gôn hơn nữa. Gợi ý chơi golf chào mừng! Hãy thử trực tuyến!

Chỉnh sửa: -6 byte nhờ Jonathan Allan. +2 byte với lời cảm ơn đến mbomb007 vì đã chỉ ra một vấn đề với câu trả lời của tôi.

f=lambda n:n and f(n-1)+"".join(map(str,range(n,0,-1)))or""

Ungolfing

def f(n):
    s = ""
    for i in range(n+1):
        m = map(str, range(n, 0, -1))
        s += "".join(m)
    return s

2
Sử dụng a mapđể lưu 6 byte:lambda n:n and f(n-1)+"".join(map(str,range(n,0,-1)))or""
Jonathan Allan

2

PHP, 35 34 33 byte

Đã lưu một byte vì tôi đã nhầm, cảm ơn Titus! Và khác!

while($i++<$argv[1])echo$s=$i.$s;

Chạy từ dòng lệnh với -r.

Câu trả lời khá đơn giản, các vòng lặp từ 1 đến đầu vào của chúng tôi n, xử lý số ở đầu chuỗi và in ra.


Tôi đếm 34. Một byte ngắn hơn với tăng sau.
Tít

33 byte:while($i++<$argv[1])echo$s=$i.$s;
từ

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.