Definisi
Tentukan susunan ke- n dari urutan CURR sebagai berikut.
Mulailah dengan array singleton A = [n] .
Untuk setiap bilangan bulat k di A , menggantikan masuk k dengan k bilangan, menghitung naik dari 1 ke k .
Ulangi langkah sebelumnya n - 1 kali lagi.
Misalnya, jika n = 3 , kita mulai dengan array [3] .
Kami mengganti 3 dengan 1, 2, 3 , menghasilkan [1, 2, 3] .
Kami sekarang mengganti 1 , 2 , dan 3 dengan 1 ; 1, 2 dan 1, 2, 3 (resp.), Menghasilkan [1, 1, 2, 1, 2, 3] .
Akhirnya, kami melakukan penggantian yang sama seperti pada langkah sebelumnya untuk semua enam bilangan bulat dalam array, menghasilkan [1, 1, 1, 2, 1, 1, 2, 1, 2, 3] . Ini adalah array CURR ketiga.
Tugas
Tulis program fungsi yang, diberi bilangan bulat positif n sebagai input, menghitung array CURR ke- n .
Outputnya harus berupa daftar datar (dan array dikembalikan dari suatu fungsi, representasi string dari sintaks array bahasa Anda, dipisahkan dengan spasi putih, dll.).
Ini adalah kode-golf . Semoga kode terpendek dalam byte menang!
Uji kasus
1 -> [1]
2 -> [1, 1, 2]
3 -> [1, 1, 1, 2, 1, 1, 2, 1, 2, 3]
4 -> [1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4]
5 -> [1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5]
6 -> [1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6]
[2]
) daripada bilangan bulat?Jawaban:
Jelly, 3 byte
Cobalah online
Penjelasan
sumber
Python, 50 byte
Penyalahgunaan ruang lingkup! Misalnya, untuk
i=3
, string yang akan dievaluasi meluas ke.Entah bagaimana, meskipun menggunakan variabel input fungsi
i
untuk semuanya, Python membedakan setiap indeks iterasi sebagai milik lingkup yang terpisah seolah-olah ekspresidengan
i
input ke fungsi.sumber
eval
, jelas kode itu sendiri perlu porting tapi saya pikir Anda bisa menganggap itu.05AB1E,
63 byteDijelaskan
Cobalah online
Disimpan 3 byte berkat @Adnan
sumber
DFL
lebih pendek 3 byte :)Retina , 33 byte
Input dan output di unary.
Cobalah online!
Meskipun saya tidak menggunakan formulir tertutup untuk tantangan terkait, mengadaptasi jawaban ini ternyata sangat sulit.
sumber
+%(M!&
adalah tag terpanjang yang pernah saya lihat.Python 2, 82 byte
Ini bukan solusi terpendek, tetapi menggambarkan metode yang menarik:
2^(2*n-1)
angka dalam binern
yangsumber
Sebenarnya, 9 byte
Cobalah online!
Penjelasan:
Terima kasih kepada Leaky Nun untuk satu byte, dan inspirasi untuk 2 byte lainnya.
sumber
;#@"♂R♂i"*ƒ
menghemat satu byte;#@`♂R♂i`n
simpan yang lain!C #, 128 Bytes
sumber
using static System.Linq.Enumerable
, Anda dapat melakukan ini:int[]J(int n){var l=new[]{n};while (n-- > 0){l = l.Select(p => Range(1, p)).SelectMany(m => m).ToArray();}return l;}
APL, 11 byte
Uji:
Penjelasan:
+⍵
: dimulai dengan⍵
,⍣⍵
: lakukan waktu berikut⍵
:⍳¨∘∊
: ratakan input, dan kemudian buat daftar [1..N] untuk setiap N dalam input∊
: meratakan hasil itusumber
{(∊⍳¨)⍣⍵⊢⍵}
{(∊∘(⍳¨))⍣⍵+⍵}
dan kemudian berpikir, bagaimana saya bisa menyingkirkan kawat gigi itu?CJam, 14 byte
Uji di sini.
Penjelasan
sumber
Mathematica,
2726 byte1 byte disimpan dengan beberapa inspirasi dari jawaban Essari.
Cukup mudah: untuk input
x
kita mulai dengan{x}
dan kemudian menerapkanRange
untuk itux
kali (Range
adalahListable
yang berarti bahwa secara otomatis berlaku untuk bilangan bulat dalam daftar sewenang-wenang bersarang). Pada akhirnyaFlatten
hasilnya.sumber
Clojure, 59 byte
Penjelasan:
Cara yang benar-benar lurus ke depan untuk menyelesaikan masalah. Bekerja dari dalam ke luar:
sumber
Python 3,
7574 byteIni hanya terjemahan langsung dari deskripsi masalah ke kode.
Sunting: Disimpan satu byte berkat @Dennis.
sumber
print
dapat pergi ke luarexec
.[k]
untuk beberapa alasan. Saya menyerah mencoba mencari tahu apakah itu masalah ruang lingkup atau sesuatu yang lain.R,
6049 byteCukup mudah digunakan
unlist
dansapply
.Terima kasih kepada @MickyT karena telah menghemat 11 byte
sumber
seq
untuk menurunkan jumlah bytephp 121
Tidak terlalu banyak trik di belakang yang satu ini. Meratakan sebuah array dalam php tidak pendek sehingga perlu untuk membuatnya datar di tempat pertama
sumber
<?
atau 6 byte dengan-r
dan tanpa tag.Haskell, 33 byte
Terima kasih kepada nimi karena telah menghemat satu byte.
Versi pointfree lebih panjang (35 byte):
sumber
iterate(>>= \a->[1..a])
kurang satu byte.JavaScript (Firefox 30-57),
6360 bytePort of @xnor's Python answer.
sumber
SyntaxError: missing : in conditional expression
) and Babel (Unexpected token (1:21)
). What am I doing wrong?)
crept into that version somehow.J, 18 bytes
Straight-forward approach based on the process described in the challenge.
Usage
Explanation
sumber
Pyth, 8 bytes
Try it online!
sumber
Jelly, 7 bytes
Quick, before Dennis answers (jk)
Try it online!
sumber
F# , 63 bytes
Returns an anonymous function taking n as input.
Replaces every entry k in A with [1..k], repeats the process n times, starting with A = [n].
sumber
Swift 3, 58 Bytes
Meant to run directly in the a playground, with n set to the input:
Ungolfed, with most short hand notation reverted:
sumber
Java, 159 Bytes
Procedure
Usage
Sample output:
sumber
Python 2,
696866 bytesEdit: Saved 1 byte thanks to @xnor. Saved 2 bytes thanks to @Dennis♦.
sumber
exec
. In Python 2, it's a keyword, not a function. I count 68 bytes btw.Bash + GNU utilities, 49
Piped recursive functions FTW!
n
is passed on the command-line. Output is newline-separated.The use of
dd
causes statistics to be sent to STDERR. I think this is OK, but if not,dd
can be replaced withcat
at a cost of 1 extra byte.sumber
{...;}
with(...)
to save a byte.Perl 5, 53 bytes
A subroutine:
See it in action as
sumber
Ruby, 61 bytes
sumber
PHP,
10098 bytesRun with
php -r '<code>' <n>
.In each iteration create a temporary copy looping from 1..(first value removed) until
$a
is empty.These two are still and will probably remain at 100 bytes:
In each iteration loop backwards through array replacing each number with a range.
In each iteration loop through array increasing index by previous number and replacing each indexed element with a range
sumber