Bagi mereka yang tidak terbiasa dengan Pola Kacang polong , ini adalah pola matematika sederhana.
Ada beberapa variasi dari pola ini, tetapi kami akan fokus dalam satu:
Pola Kacang Ascending
Ini terlihat seperti ini:
1
11
21
1112
3112
211213
...
Tampaknya sangat sulit untuk mendapatkan baris berikut, tetapi sangat mudah. Cara untuk mendapatkan baris berikutnya adalah dengan menghitung berapa kali angka telah diulang pada baris sebelumnya (mulai menghitung dengan yang terendah, hingga terbesar):
one
one one
two ones
one one, one two
three ones, one two
two ones, one two, one three
...
Persyaratan / Aturan:
- Kami akan mulai
1
- Itu akan menjadi cuplikan
- Harus ada cara untuk menentukan jumlah baris yang dihasilkan (mis.
5
Akan memberikan 5 baris pertama) - Kode harus sesingkat mungkin
- Itu harus mulai menghitung dari terendah ke terbesar (variasi Ascending)
21322314
. Apakah ini benar?Jawaban:
APL, 32 karakter
Ini menghasilkan baris mulai dari 0 (yaitu
0
menghasilkan1
,1
menghasilkan1
diikuti oleh1 1
, dll.), Seperti yang ditentukan oleh input pengguna. Saya menggunakan Dyalog APL untuk ini, dan⎕IO
harus ditetapkan ke default 1.Contoh:
Setelah saya mendapatkan waktu lagi, saya akan menulis penjelasan. ⍨
sumber
Python (2.x),
8180 karakterSemua tips atau komentar diterima!
sumber
Perl, 83
Saya cukup yakin beberapa guru Perl bisa mengalahkan ini, tapi begini:
Diperluas:
Jumlah baris dilewatkan melalui STDIN.
sumber
J,
60463926 karakterSunting 3 : Datang dengan cara yang lebih baik untuk mengekspresikan ini.
Sunting 2 : Akhirnya menemukan cara untuk memindahkan argumen ke akhir urutan dan menyingkirkan hal-hal tugas yang tidak perlu.
Sebelumnya:
Sunting 1 : Memperbaiki output yang seharusnya
y
baris daripada barisy
ke - th. Juga mempersingkat hal-hal sedikit. Malu tentang0
s, sepertinya tidak bisa menyingkirkan barang-barang sialan itu.Pemakaian:
Diakui penggunaannya lebih buruk sekarang, tetapi kecantikan bukan nama permainan di sini ...
sumber
Haskell, 116
Pemakaian:
sumber
Gangguan Umum, 140 karakter
Ini adalah Lisp, jadi fungsinya mengembalikan daftar daftar. (mx) menghasilkan X sublists.
sumber
Mathematica, 70
sumber
Jelly ,
1311 byte (Umpan balik dihargai)Cobalah online!
sumber
U€
bisa sajaU
, itu vectorizes ke tingkat baris. Kemudian Anda dapat menyimpan byte inlining lainnyaṢŒrUF
, menggunakanƲ
(4 tautan terakhir sebagai monad):1ṢŒrUFƲСṖY
ṢŒrU€FƲ
akan bekerja dengan baik - menggelinding [Ṣ
,Œr
,U€
,F
.] Ke monad Mungkin saya gunakan "kemudian" sedikit menyesatkan ^^; Demikian pula, dalam sesuatu sepertiabc$de$fƲ
akan beroperasi pada 4 link [a
,bc$
,de$
,f
] dan gulung mereka menjadi monad. Ini adalah pengertian di mana Anda dapat menganggap quicks sebagai "operator stack parse-time": hasil mereka didorong kembali ke stack, dan bertindak seolah-olah itu adalah salah satu tautan untuk quick quick di masa depan. )