Pertimbangkan daftar berikut:
expected = [
'A',
'B',
'AB',
'C',
'D',
'CD',
'ABCD',
'E',
'F',
'EF',
'G',
'H',
'GH',
'EFGH',
'ABCDEFGH',
'I',
'J',
'IJ',
'K',
'L',
'KL',
'IJKL',
'M',
'N',
'MN',
'O',
'P',
'OP',
'MNOP',
'IJKLMNOP',
'ABCDEFGHIJKLMNOP',
...
]
Inilah salah satu cara untuk melihatnya - Anda sedang belajar cara menulis karakter Cina dan ingin belajar potongan besar dari mereka, berlatih mereka saat Anda pergi. Anda mulai dengan A, lalu pergi dengan B, lalu sudah ada urutan yang merupakan sepasang dari dua sehingga Anda menggabungkannya. Lalu Anda pergi dengan C dan D, membuat pasangan lain, berlatihlah. Kemudian Anda berlatih: ABCD. Kemudian hal yang sama berlaku dengan E hingga H, kemudian berlatih: ABCDEFGH. Daftar ini tidak terbatas.
Tujuannya adalah untuk menghasilkan dan mencetak elemen ke-n dari daftar ini, indeks naik dari nol. Asumsikan bahwa setelah 'Z', Anda mendapatkan 'A' lagi.
Kriteria yang menang adalah panjang kode sumber.
BC
atau kapanCDEF
? Apa yang memutuskan apa yang kita gabungkan dan yang tidak? Bagaimana itu tak terbatas jika dimulaiA
kembali setelahnyaZ
(maksud Anda pada titik setelahABCDEFGHIJKLMNOPQRSTUVWXZ
kita milikiABCDEFGHIJKLMNOPQRSTUVWXZAB
atau sesuatu?)x,y,z,a,b...
).Jawaban:
Python 2, 53 byte
Cobalah online!
Mirip dengan konstruksi ini dengan transformasi
x = u-v
,y = u
sumber
x^=y-x
untuk -1 byte.JavaScript (ES6), 59 byte
Kita dapat menyimpan 2 byte dengan membuat urutan 1-diindeks dan menggunakan penyederhanaan yang mirip dengan yang digunakan oleh KSab :
Cobalah online!
JavaScript (ES6), 61 byte
Mengembalikan daftar bilangan bulat non-pembungkus.
Cobalah online!
Berdasarkan konstruksi oleh Donald Knuth. Entri OEIS terkait: A182105 .
Bagaimana?
Ini adalah fungsi rekursif dua tahap.
JavaScript (ES6), 97 byte
Mengembalikan pembungkus huruf besar.
Cobalah online!
Atau 91 byte dalam huruf kecil.
sumber
Python 2 , 60 byte
Cobalah online!
Berdasarkan penggunaan konstruksi Knuth oleh Arnauld . Kondisi
u&-u==v
dapat diganti dengan kondisi yang lebih sederhanau/v%2>0
, atau sebagai alternatifu&v>0
, karenav
selalu kekuatan 2 yangu
habis dibagi.sumber
Bahasa Wolfram (Mathematica) ,
8071 byteCobalah online!
Mengembalikan daftar bilangan bulat alih-alih string alfabet pembungkus. Diindeks 0.
Menggunakan OEIS A182105 , terima kasih kepada @Arnauld.
Mencetak daftar tanpa batas, 54 byte
Cobalah online!
1-diindeks. Versi TIO
lim
bukannya∞
mencegah crash.sumber
Python 2 ,
938982 byteCobalah online!
Mengembalikan daftar bilangan bulat. Mirip dengan pendekatan Javascript Arnauld .
sumber
Jelly , 16 byte
Program lengkap. Mencetak
,
daftar integer yang terpisah.sumber
Arang ,
454235 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. 1-diindeks. Saya tidak dapat menemukan formula sederhana untuk menghasilkan hasilnya jadi saya cukup mengikuti prosedur yang diberikan dalam pertanyaan. Penjelasan:
Ulangi jumlah yang diberikan
n
kali.Dorong elemen berikutnya ke array kosong yang telah ditentukan
u
, dihitung sebagai ...... jika ada lebih dari satu elemen
u
dan dua elemen terakhir memiliki panjang yang sama ...... lalu tambahkan elemen kedua dari belakang ke elemen terakhir (yang membangun hasilnya dalam urutan terbalik) ...
... jika tidak, huruf berikutnya dapat ditemukan dengan menghitung berapa banyak huruf yang telah kita tambahkan sejauh ini dan secara siklis mengindeks ke dalam alfabet huruf besar yang telah ditentukan. (Mengambil jumlah atau panjang jumlah gagal ketika daftar kosong, dan memetakan daftar ke dalam string menghemat dua byte di atas casing khusus daftar kosong.)
Ambil elemen terakhir
u
, yang merupakann
elemen terbalik dari daftar yang diinginkan, dan cetak secara terbalik.sumber