Bilangan bulat keluaran dalam urutan negatif, tambahkan bilangan bulat maksimum setiap kali


44

Tugas utama

Tugas Anda adalah mencetak bilangan bulat dalam urutan menurun, mulai dari 1, dan meningkat saat Anda terus menekan 1 lagi, hingga input yang diberikan tercapai, kemudian, cetak sisanya hingga Anda menekan 1 lagi. Contoh dengan input 6:

1
21
321
4321
54321
654321
Without newlines (valid output):
121321432154321654321
Catatan: ini adalah A004736 di OEIS. Juga, contoh pertama (dengan baris baru) adalah output yang tidak valid, sebagaimana ditentukan dalam aturan.

Memasukkan

Kode Anda dapat mengambil segala jenis input (grafis, STDIN) dalam bentuk bilangan bulat atau angka.

Keluaran

Kode Anda harus menampilkan urutan yang dijelaskan di atas, hingga nomor input tercapai, lalu selesai untuk output hingga mencapai 1 lagi. Keluaran bisa berupa apa saja, oleh karena itu angka, string, bilangan bulat, atau keluaran grafis. Diperlukan untuk mencetak nomor tunggal (tidak ada baris baru jika itu adalah string). Output Anda dapat di-dan outroduced dengan karakter sebanyak yang Anda butuhkan (misalnya []).

Karena ada beberapa kesalahpahaman, inilah pola regex Anda dapat mencoba output Anda.

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

Aturan

  • Keluaran harus berupa angka penuh, tidak terpecah oleh apa pun, bahkan bukan baris baru.
  • Algoritme seharusnya tidak memeriksa instance N pertama yang muncul dengan cara apa pun (misalnya 21in 121321), melainkan untuk instance N pertama sebagai angka aktual.
  • Satu baris baru yang dibiarkan diizinkan.
  • Penanganan untuk input negatif sepenuhnya adalah pilihan Anda, angka negatif bukan merupakan kasus yang harus Anda uji.

Uji kasus

Input: 6
Output: 121321432154321654321

Input: 1 Output: 1

Input: 26 Output: 121321432154321654321765432187654321987654321109876543211110987654321121110987654321131211109876543211413121110987654321151413121110987654321161514131211109876543211716151413121110987654321181716151413121110987654321191817161514131211109876543212019181716151413121110987654321212019181716151413121110987654321222120191817161514131211109876543212322212019181716151413121110987654321242322212019181716151413121110987654321252423222120191817161514131211109876543212625242322212019181716151413121110987654321

Input: 0 Output: 0, Empty, or Error

Input: 21 Output: 121321432154321654321765432187654321987654321109876543211110987654321121110987654321131211109876543211413121110987654321151413121110987654321161514131211109876543211716151413121110987654321181716151413121110987654321191817161514131211109876543212019181716151413121110987654321212019181716151413121110987654321

Terima kasih @ Emigna, saya menggunakan algoritmanya untuk menghitung kasus uji ini.

Pemenang

Pemenang telah dipilih! Itu adalah jawaban ErikGolfer dengan 5 byte yang mengesankan ! Selamat!


The output must be a full number ...Apakah maksud Anda seluruh urutan, atau hanya substring yang berbeda (1, 2-1, 3-1 ...)? Contoh pertama Anda tampaknya tidak cocok dengan pernyataan ini.
steenbergh

1
Jika output harus berupa angka tunggal, bagaimana bisa "array"?
smls

Apakah array ini dapat diterima sebagai output? [1, 21, 321, 4321, 54321, 654321] Bagaimana dengan yang ini? [1,2,1,3,2,1,4,3,2,1,5,4,3,2,1,6,5,4,3,2,1] Atau apakah Anda hanya berbicara tentang array dengan elemen tunggal, seperti [121321432154321654321]?
smls

1
Saya bingung tentang format output. Bisakah Anda memberi contoh apa yang bisa diterima? Array angka? String dengan angka yang dipisahkan oleh spasi?
Luis Mendo

1
Regex Anda mengizinkan output dari mickey321211mouse. Sungguh \Dbagian - bagian tidak memiliki alasan untuk berada di sana
edc65

Jawaban:


13

Jelly , 5 byte

RRUVV

Cobalah online!

Formula bukan milikku.

Saya menduga ada terlalu banyak hal yang terjadi di sini ...

[JAWABAN DITERIMA] Saya telah memberikan 5 perwakilan kepada Dennis, tetapi ini bukan Pertukaran Reputasi. Dennis menunjukkan kepadaku VVperilakunya. Yang mengejutkan saya, ini lebih pendek dari 05AB1E.


Selamat, kode ini memiliki jumlah kode paling sedikit!
devRicher

19

05AB1E , 6 byte

L€LíJJ

Cobalah online!

Penjelasan

Contoh input 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

Demo

Metode alternatif untuk n <10, 34 byte (tidak bersaing)

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

Dalam JavaScript, string tidak dapat diubah. Oleh karena itu, tidak mungkin untuk mengubah konten karakter Nth string sdengan menetapkan nilai baru s[N].

Namun, ekspresi ++s[N]itu valid dan mengevaluasi seperti yang diharapkan, bahkan jika string tetap tidak berubah. Misalnya:

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

Dan dengan ekstensi:

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

Tampaknya tidak bekerja untuk n> 9
edc65

@ edc65 Kamu benar, tentu saja. Saya tidak tahu mengapa saya pikir tidak masalah untuk berhenti pada jam 9.
Arnauld

12

V, 29 28 27 23 19 17 16 byte

8 byte disimpan berkat @DJMcMayhem

3 byte disimpan berkat @ nmjcman101

"apÀ­ñÄòy$jpkgJ

Karakter tersembunyi:

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

C-x adalah Ctrl + x.

Cobalah online! mengambil input melalui argumen baris perintah

Hexdump:

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

Penjelasan

"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

Sekarang sepertinya:

1
2
...
n

melanjutkan ...

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

GIF (kedaluwarsa)

(untuk arg 6)

gif


Saya mendapatkan beberapa dengan mengubah loop Anda ke a) end secara implisit dan b) bergabung dengan garis saat berjalan (daripada di akhir)òy$jpkgJ
nmjcman101

@ nmjcman101 Terima kasih telah membantu saya menghemat 2 byte!
Kritixi Lithos

Ini golf yang cukup bagus. Saya telah memeras otak saya selama 20 menit, dan saya tidak bisa memikirkan yang lebih pendek. :)
DJMcMayhem

@DJMcMayhem Ini karena saya sudah banyak membantu :)
Kritixi Lithos

Saya melakukannya! Anda bisa turun ke 16 byte. Jika Anda menempelkan arg, dan kemudian menggandakan / mengurangi ke atas, Anda bisa menghapus H. Kemudian jika Anda menggunakan operator penurunan pada Anda À, Anda tidak akan memiliki 0 di bagian atas sehingga Anda dapat menghapus x. Kemudian SEPENUHNYA a òakan menutup ­ñsehingga Anda dapat menghapus yang kedua ­ñ(yang merupakan byte yang Anda simpan). Tautan karena itu tidak masuk akal
nmjcman101

11

C #, 72 69 65 byte

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

Jika output hanya dapat dikembalikan dan bukannya Ditulis ke konsol

C #, 71 68 64 byte

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

Terima kasih kepada @VisualMelon karena telah menghemat banyak byte

Uji di sini (Hebat kompiler online rusak pada nomor di atas 420)


Itu sangat cepat.
devRicher

@devRicher Apa yang bisa saya katakan, saya sedang menunggu sesuatu untuk diposting: P
Alfie Goodacre

2
Tidak pernah ada alasan untuk menggunakan loop sementara dalam kode C # golf, for-loop akan selalu berkinerja baik jika tidak lebih baik. Dalam hal ini, Anda dapat memasukkan tugas j=1dalam for-loop, dan menyimpan titik koma. Anda juga dapat mendeklarasikan jbersama i, untuk menyimpan int. Itu i++juga bisa dipindahkan ke j=itugas, menyimpan byte. Anda juga harus dapat mengganti i<=ndengan i<njika Anda membuatnya j=++idan mulai idari 0.
VisualMelon

@VisualMelon mengeditnya, menyimpan 3 byte! Mendeklarasikan int bersama-sama sebenarnya tidak membuat perbedaan pada jumlah byte tetapi itu membuat loop terlihat sedikit lebih bagus
Alfie Goodacre

@AlfieGoodacre jika Anda mendeklarasikannya bersama-sama di dalam for loop, maka Anda akan menghemat 2 byte lebih banyak for(int i=0,j;i<n;);) Juga tidak perlu untuk {}sekitar inner untuk loop.
VisualMelon

8

Bash murni, 34

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

Dua tingkat ekspansi brace. Dengan input 6, level pertama diperluas ke {1..1} {2..1} {3..1} {4..1} {5..1} {6..1}. Ini kemudian berkembang menjadi 1 2 1 3 2 1 4 3 2 1 5 4 3 2 1 6 5 4 3 2 1, yang dihancurkan bersama menjadi satu string dengan printf %s. evalDiperlukan pada kedua tingkat ekspansi - untuk tingkat pertama sehingga $1parameter diperluas terlebih dahulu, dan untuk tingkat kedua agar diperluas setelah tingkat pertama.

Cobalah online


8

Perl, 21 byte

Penggunaan -Etanpa biaya tambahan.

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

Pemakaian

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

7

Pyth, 7 byte

jks}R1S

Program yang mengambil input bilangan bulat dan mencetak hasilnya.

Cobalah secara Online!

Bagaimana itu bekerja

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

Secara pribadi saya sangat kecewa itu jk_hC.:Slebih lama, tapi kerja bagus!
FryAmTheEggman

7

GeoGebra , 67 byte

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

Setiap baris dimasukkan secara terpisah ke bilah input. Input diambil dari kotak input.

Berikut adalah gif dari eksekusi:

Eksekusi program

Bagaimana itu bekerja

Memasukkan 1secara implisit ditugaskan ake 1, dan InputBoxperintah mengaitkan kotak input dengan a. Kemudian, untuk masing-masing idalam {1, 2, 3, ..., a}, daftar {i, i-1, i-2, ..., 1}dibuat menggunakan Sequenceperintah, dan masing-masing jdalam daftar itu dikonversi ke string menggunakan Text. Akhirnya, Joingabungkan semua daftar, dan Sumgabungkan semua elemen ke satu objek teks, yang ditampilkan.


@devRicher Tampaknya masuk akal. Terima kasih!
TheBikingViking


7

Retina , 26 22 byte

Hitungan byte mengasumsikan penyandian ISO 8859-1.

.+
$*

$`¶
1
$.%'
0?¶

Cobalah online!

Penjelasan

.+
$*

Konversikan input ke unary.


$`¶

Di setiap posisi, masukkan awalan hingga titik itu, serta umpan baris. Ini menciptakan kisaran unary dari 2hingga n+1, satu nilai per baris.

1
$.%'

Ganti masing 1- masing dengan jumlah karakter setelah itu pada baris yang sama. Ini mengubah sesuatu 11111menjadi 43210.

0?¶

Hapus semua umpan garis dan nol di depannya.


5

Bahasa GameMaker, 65 byte

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

5

APL, 10 byte

∊⍕¨∘⌽∘⍳¨∘⍳

Misalnya:

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

Penjelasan:

  • : dapatkan angka dari 1 hingga N.
  • ⍳¨∘: untuk masing-masing, dapatkan angka dari 1 hingga N.
  • ⌽∘: membalikkan daftar itu
  • ⍕¨∘: dapatkan representasi karakter dari setiap item (sehingga tidak menghasilkan angka dengan spasi di antaranya)
  • : ratakan array yang dihasilkan

Jadi itu parsing kode mundur?
devRicher

adalah komposisi fungsi, saya memberikan penjelasan agar fungsi-fungsi tersebut benar-benar dievaluasi
marinus

1
Ini pohon parse, untuk yang penasaran: tryapl.org/…
marinus

5

Python 2, 71 68 byte

Saya yakin solusi rekursif bisa lebih pendek, tapi saya kesulitan memformulasikannya menjadi satu.

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

Cobalah online


5

Sebenarnya 8 byte

RR♂RΣRεj

Pertama kali memposting jawaban di Sebenarnya sehingga mungkin bisa bermain golf.

Bagaimana itu bekerja

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)

Cobalah online!


1
Saya tidak yakin bahwa ada adalah solusi yang lebih pendek, tapi aku sudah membuktikan sendiri yang salah sebelumnya. Bagaimanapun, inilah tautan Try It Online untuk jawaban Anda.
Sherlock9

1
Kode R♂R♂RΣεjini memiliki jumlah byte yang sama, tetapi mungkin lebih mudah untuk menulis penjelasan.
Sherlock9

@ Sherlock9 cara Anda sedikit lebih elegan, saya telah menambahkan tautan dan penjelasan yang saya lupa tambahkan kemarin untuk mencoba menjelaskannya sedikit lagi.
Teal pelican

4

Brachylog , 8 byte

yb@[rcw\

Cobalah online!

Penjelasan

yb         The list [1, ..., Input]
  @[       Take a prefix of that list
    rc     Reverse it and concatenate into an integer
      w    Write to STDOUT
       \   Backtrack: try another prefix

4

Perl 6 , 22 byte

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

Lambda yang mengembalikan string.

( Cobalah online. )

Penjelasan:

  • 1..$_: Rentang bilangan bulat ... (1 2 3 4)
  • [,] 1..$_: Kurangi ("lipat") melalui operator koma ... (1 2 3 4)
  • [\,] 1..$_: Dengan hasil antara ( pengurangan segitiga ) ...((1) (1 2) (1 2 3) (1 2 3 4))
  • [\R,] 1..$_: Terapkan pembalikan meta-operator ke koma ...((1) (2 1) (3 2 1) (4 3 2 1))
  • [~] flat ...: Hapus daftar sarang, dan lipat operator string concat ... 1213214321

4

Haskell, 35 byte

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

Contoh penggunaan: f 6-> "121321432154321654321".

Untuk semua angka xdalam 1 ... xdaftar x,x-1, ... ,1, ubah angka menjadi string dan gabungkan menjadi string tunggal. Sekali lagi, gabungkan string-string itu menjadi satu string.


4

C89, 54 byte

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

56 -2 = 54 terima kasih kepada ErikGolfer!


Saya pikir Anda bisa melakukan (j=i++)alih - alih (j=i)dan menghapus yang terakhir i++(belum diuji).
Erik the Outgolfer

Berikut ini adalah versi rekursif yang lebih pendek: i,j;f(n){j=++i;while(j)printf("%d",j--);i-n?f(n):0;}(52 byte)
Steadybox

@Steadybox Anda dapat menambahkan itu sebagai jawaban Anda sendiri jika mau, tapi terima kasih!
kucing

@cat Ok, terima kasih, baru saja melakukannya. Tidak yakin apakah saya harus melakukannya karena saya hanya mengedit solusi Anda.
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)])

Jawaban singkat menggunakan rekursi:

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

Mungkin bukan yang terpendek tetapi hanya dibuat dengan pemahaman daftar Python!

(Diedit untuk menambahkan fungsi cetak dan menghapus \ n)

(Diedit untuk menghapus fungsi cetak, dan ubah n + 1, k + 1 menjadi n, k + 2)


Bekerja dengan k, n + 2 tetapi tidak dengan k + 2, n, terima kasih atas idenya :)
Sygmei

Kode yang Anda nilai harus menjadi yang pertama. Juga, Anda harus menggunakan Python 2 dan kemudian menggunakan `i`bukannya str(i). Dan Anda bisa menggunakan "".join(...)alih-alih "".join([...]), dan range(1,k,-1)untuk menghapus [...][::-1].
mbomb007

Juga n>0bisa n. Dan maksud saya range(n,0,-1). Dan gunakan n and f(n-1)+...)or"".
mbomb007

1
62 byte . Sebenarnya, ini mungkin terlalu dekat dengan jawaban ini .
mbomb007

Ya ini semakin dekat, saya melihat bahwa setelah melakukan versi kedua saya :(
Sygmei

3

Pyth, 8 byte

jks_M._S

Penjelasan

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

Mathematica, 36 byte

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

Melempar banyak peringatan yang bisa diabaikan dengan aman.

Penjelasan

Menggunakan input 5sebagai contoh:

Range@#

Membuat kisaran {1, 2, 3, 4, 5}.

Range[...,1,-1]

Rangedapat didaftar sehingga kami dapat memberikan daftar untuk setiap argumennya dan secara otomatis akan membalik argumen tersebut. Jadi ini memberi kita banyak daftar terbalik:

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

Lanjut:

(""<>...)

Ini bergabung dengan daftar bersarang dengan string kosong. Karena daftar bersarang tidak benar-benar mengandung string apa pun, itu tidak dapat benar-benar bergabung dengan nilai-nilai (yang merupakan tempat peringatan itu dihasilkan), tetapi ""<>memiliki efek samping meratakan daftar. Jadi ini memberi kita

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

Sekarang hadir fitur cantik Mathematica yang Maptidak peduli dengan struktur yang dipetakannya. Anda biasanya menerapkannya ke daftar, tetapi berfungsi dengan kepala apa pun. f /@ h[a, b, c]hanya memberi Anda h[f[a], f[b], f[c]]. Dalam kasus kami, head adalah StringJoindan nilainya adalah integer.

ToString/@...

Jadi ini hanya mengubah bilangan bulat menjadi string. Pada saat itu StringJoin[...]tahu apa yang harus dilakukan dengan mereka dan menggabungkan mereka semua menjadi satu string:

"121321432154321"

1
Itu benar-benar tidak menyenangkan. :)
Greg Martin

3

GolfScript , 14 byte

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

Cobalah online!

Metode yang biasa tentu saja, tetapi ini adalah GolfScript.

Penjelasan untuk potongan kode VAST ini :

~,{),{)}%-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

Perhatikan bahwa output adalah sebagai nomor tunggal. Tertinggal \n.


3

R, 38 33 44 byte

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

Mengambil input ke STDIN, dan loop dari 1 ke n, membuat urutan i ke 1 untuk setiap langkah dan mencetaknya.

Sunting: diganti seq(i,1)dengan i:1menyimpan 5 byte dan menunjukkan mengapa saya tidak boleh bermain golf selama rapat.


Ini menghasilkan 101jika input 0. if((n=scan())>0)for(i in 1:n)cat(i:1,sep="")lakukan triknya.
Frédéric

Sial, diasumsikan input non-nol :(
JAD

if(n<-scan())harus cukup.
Giuseppe

3

MATL , 14 11 byte

:"@:P]v!VXz

Cobalah online!

Penjelasan

:      % 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, jangan pikir yang kedua diizinkan.
JAD

2
@JarkoDubbeldam saya akan menghapus yang itu sampai OP mengklarifikasi
Luis Mendo

1
@Jarko OP mengklarifikasi. Solusi saat ini sesuai dengan spec
Luis Mendo

3

brainfuck, 17 byte

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

Penjelasan

>           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

Cobalah online!


Selamat datang di PPCG! Sudahkah Anda membaca halaman tur dan pertanyaan meta terpanas? Saya menyarankan Anda untuk, mereka sangat membantu! Juga, bungkus kode Anda dalam pemformatan kode! Sudahkah Anda membaca bantuan pemformatan? Anda juga harus menjelaskan cara kerja kode Anda, jika Anda bisa!
devRicher

@muddyfish Saya baru saja menambahkan penjelasan
Milihhard

Saya telah menggunakan aplikasi seluler. Anda dapat melihat layar hasilnya.
Milihhard

Tidak, tidak apa-apa. Tetapi di tautan, ouput ada di ascii dan tidak dalam desimal, jadi Anda tidak benar-benar melihat hasilnya
Milihhard

@muddyfish Permalink Anda sedikit membingungkan. Ada 0x06 yang tidak terlihat dalam input, diikuti oleh angka desimal 6 .
Dennis

3

Python , 63 57 59 byte

Solusi rekursif yang bekerja di kedua Python 2 dan 3. Ini mungkin bisa golf lebih lanjut. Selamat datang saran bermain golf! Cobalah online!

Sunting: -6 bytes terima kasih kepada Jonathan Allan. +2 byte dengan terima kasih kepada mbomb007 karena menunjukkan masalah dengan jawaban saya.

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

Tidak melakukanolf

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

2
Gunakan a mapuntuk menyimpan 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

Disimpan satu byte karena saya salah hitung, terima kasih Titus! Dan satu lagi!

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

Jalankan dari baris perintah dengan -r.

Jawaban yang cukup sederhana, loop dari 1 hingga input kami n, menempelkan nomor ke awal string dan mencetaknya.


Saya menghitung 34. Satu byte lebih pendek dengan post-increment.
Titus

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.