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
21
in121321
), 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.[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]
?mickey321211mouse
. Sungguh\D
bagian - bagian tidak memiliki alasan untuk berada di sanaJawaban:
Jelly , 5 byte
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
VV
perilakunya. Yang mengejutkan saya, ini lebih pendek dari 05AB1E.sumber
05AB1E , 6 byte
Cobalah online!
Penjelasan
Contoh input 4
sumber
JavaScript (ES6), 37 byte
Demo
Tampilkan cuplikan kode
Metode alternatif untuk n <10, 34 byte (tidak bersaing)
Dalam JavaScript, string tidak dapat diubah. Oleh karena itu, tidak mungkin untuk mengubah konten karakter Nth string
s
dengan menetapkan nilai barus[N]
.Namun, ekspresi
++s[N]
itu valid dan mengevaluasi seperti yang diharapkan, bahkan jika string tetap tidak berubah. Misalnya:Dan dengan ekstensi:
sumber
V,
29282723191716 byte8 byte disimpan berkat @DJMcMayhem
3 byte disimpan berkat @ nmjcman101
Karakter tersembunyi:
C-x
adalah Ctrl + x.Cobalah online! mengambil input melalui argumen baris perintah
Hexdump:
Penjelasan
Sekarang sepertinya:
melanjutkan ...
GIF (kedaluwarsa)
(untuk arg
6
)sumber
òy$jpkgJ
À
, 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 akalC #,
726965 byteJika output hanya dapat dikembalikan dan bukannya Ditulis ke konsol
C #,
716864 byteTerima kasih kepada @VisualMelon karena telah menghemat banyak byte
Uji di sini (Hebat kompiler online rusak pada nomor di atas 420)
sumber
j=1
dalam for-loop, dan menyimpan titik koma. Anda juga dapat mendeklarasikanj
bersamai
, untuk menyimpanint
. Itui++
juga bisa dipindahkan kej=i
tugas, menyimpan byte. Anda juga harus dapat menggantii<=n
dengani<n
jika Anda membuatnyaj=++i
dan mulaii
dari0
.for(int i=0,j;i<n;)
;) Juga tidak perlu untuk{}
sekitar inner untuk loop.Bash murni, 34
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 menjadi1 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 denganprintf %s
.eval
Diperlukan pada kedua tingkat ekspansi - untuk tingkat pertama sehingga$1
parameter diperluas terlebih dahulu, dan untuk tingkat kedua agar diperluas setelah tingkat pertama.Cobalah online
sumber
Perl, 21 byte
Penggunaan
-E
tanpa biaya tambahan.Pemakaian
sumber
Pyth, 7 byte
Program yang mengambil input bilangan bulat dan mencetak hasilnya.
Cobalah secara Online!
Bagaimana itu bekerja
sumber
jk_hC.:S
lebih lama, tapi kerja bagus!GeoGebra , 67 byte
Setiap baris dimasukkan secara terpisah ke bilah input. Input diambil dari kotak input.
Berikut adalah gif dari eksekusi:
Bagaimana itu bekerja
Memasukkan
1
secara implisit ditugaskana
ke1
, danInputBox
perintah mengaitkan kotak input dengana
. Kemudian, untuk masing-masingi
dalam{1, 2, 3, ..., a}
, daftar{i, i-1, i-2, ..., 1}
dibuat menggunakanSequence
perintah, dan masing-masingj
dalam daftar itu dikonversi ke string menggunakanText
. Akhirnya,Join
gabungkan semua daftar, danSum
gabungkan semua elemen ke satu objek teks, yang ditampilkan.sumber
Python 2, 51 byte
sumber
Retina ,
2622 byteHitungan byte mengasumsikan penyandian ISO 8859-1.
Cobalah online!
Penjelasan
Konversikan input ke unary.
Di setiap posisi, masukkan awalan hingga titik itu, serta umpan baris. Ini menciptakan kisaran unary dari
2
hinggan+1
, satu nilai per baris.Ganti masing
1
- masing dengan jumlah karakter setelah itu pada baris yang sama. Ini mengubah sesuatu11111
menjadi43210
.Hapus semua umpan garis dan nol di depannya.
sumber
Bahasa GameMaker, 65 byte
sumber
APL, 10 byte
Misalnya:
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 dihasilkansumber
∘
adalah komposisi fungsi, saya memberikan penjelasan agar fungsi-fungsi tersebut benar-benar dievaluasiPython 2,
7168 byteSaya yakin solusi rekursif bisa lebih pendek, tapi saya kesulitan memformulasikannya menjadi satu.
Cobalah online
sumber
Sebenarnya 8 byte
Pertama kali memposting jawaban di Sebenarnya sehingga mungkin bisa bermain golf.
Bagaimana itu bekerja
Cobalah online!
sumber
R♂R♂RΣεj
ini memiliki jumlah byte yang sama, tetapi mungkin lebih mudah untuk menulis penjelasan.Brachylog , 8 byte
Cobalah online!
Penjelasan
sumber
Perl 6 , 22 byte
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
sumber
Haskell, 35 byte
Contoh penggunaan:
f 6
->"121321432154321654321"
.Untuk semua angka
x
dalam1 ... x
daftarx,x-1, ... ,1
, ubah angka menjadi string dan gabungkan menjadi string tunggal. Sekali lagi, gabungkan string-string itu menjadi satu string.sumber
C89, 54 byte
56 -2 = 54 terima kasih kepada ErikGolfer!
sumber
(j=i++)
alih - alih(j=i)
dan menghapus yang terakhiri++
(belum diuji).i,j;f(n){j=++i;while(j)printf("%d",j--);i-n?f(n):0;}
(52 byte)Python 3,
87928374 byteJawaban singkat menggunakan rekursi:
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)
sumber
`i`
bukannyastr(i)
. Dan Anda bisa menggunakan"".join(...)
alih-alih"".join([...])
, danrange(1,k,-1)
untuk menghapus[...][::-1]
.n>0
bisan
. Dan maksud sayarange(n,0,-1)
. Dan gunakann and f(n-1)+...)or""
.Pyth, 8 byte
Penjelasan
sumber
05AB1E , 6 byte
Cobalah online!
sumber
Mathematica, 36 byte
Melempar banyak peringatan yang bisa diabaikan dengan aman.
Penjelasan
Menggunakan input
5
sebagai contoh:Membuat kisaran
{1, 2, 3, 4, 5}
.Range
dapat didaftar sehingga kami dapat memberikan daftar untuk setiap argumennya dan secara otomatis akan membalik argumen tersebut. Jadi ini memberi kita banyak daftar terbalik: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 kitaSekarang hadir fitur cantik Mathematica yang
Map
tidak peduli dengan struktur yang dipetakannya. Anda biasanya menerapkannya ke daftar, tetapi berfungsi dengan kepala apa pun.f /@ h[a, b, c]
hanya memberi Andah[f[a], f[b], f[c]]
. Dalam kasus kami, head adalahStringJoin
dan nilainya adalah integer.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:sumber
GolfScript , 14 byte
Cobalah online!
Metode yang biasa tentu saja, tetapi ini adalah GolfScript.
Penjelasan untuk potongan kode VAST ini :
Perhatikan bahwa output adalah sebagai nomor tunggal. Tertinggal
\n
.sumber
R,
383344 byteMengambil input ke STDIN, dan loop dari 1 ke n, membuat urutan i ke 1 untuk setiap langkah dan mencetaknya.
Sunting: diganti
seq(i,1)
dengani:1
menyimpan 5 byte dan menunjukkan mengapa saya tidak boleh bermain golf selama rapat.sumber
101
jika input0
.if((n=scan())>0)for(i in 1:n)cat(i:1,sep="")
lakukan triknya.if(n<-scan())
harus cukup.MATL ,
1411 byteCobalah online!
Penjelasan
sumber
not split up by anything
, jangan pikir yang kedua diizinkan.brainfuck, 17 byte
Penjelasan
Cobalah online!
sumber
Python ,
635759 byteSolusi 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.
Tidak melakukanolf
sumber
map
untuk menyimpan 6 byte:lambda n:n and f(n-1)+"".join(map(str,range(n,0,-1)))or""
PHP,
353433 byteDisimpan satu byte karena saya salah hitung, terima kasih Titus! Dan satu lagi!
Jalankan dari baris perintah dengan
-r
.Jawaban yang cukup sederhana, loop dari 1 hingga input kami
n
, menempelkan nomor ke awal string dan mencetaknya.sumber
while($i++<$argv[1])echo$s=$i.$s;
CJam, 13 byte
penerjemah
sumber
ri{),:)W%}%