Tantangan ini adalah tentang mencetak urutan abacaba dengan kedalaman tertentu.
Berikut adalah diagram dari 5 urutan pertama ( a(N)
adalah urutan abacaba dengan kedalaman N, huruf besar / kecil hanya untuk menunjukkan polanya, ini tidak diperlukan dalam output program Anda):
a(0) = A
a(1) = aBa
a(2) = abaCaba
a(3) = abacabaDabacaba
a(4) = abacabadabacabaEabacabadabacaba
...
a(25) = abacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabahabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabaiabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabahabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabajabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabahabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabaia...
Seperti yang mungkin Anda tahu, urutan abacaba ke-n adalah yang terakhir dengan huruf ke-n dan itu sendiri ditambahkan lagi ke dalamnya. ( a(n) = a(n - 1) + letter(n) + a(n - 1)
)
Tugas Anda adalah membuat program atau fungsi yang mengambil integer dan mencetak urutan abacaba dari kedalaman itu. Output harus benar setidaknya untuk nilai hingga dan termasuk 15.
Jawaban:
Pyth, 11 byte
Pengurangan sederhana.
sumber
0
seharusnya menjadi urutan IMO yang kosong, tetapi saya akan menyesuaikan dengan pertanyaan ...rev-doc.txt
sebelah jawaban ini, dan harusnya mudah saja.Python, 44 byte
Terlihat mencurigakan mungkin golf.
sumber
Haskell,
3937 byteContoh penggunaan:
a 3
->"abacabadabacaba"
.Sunting: @Angs menemukan dua byte untuk disimpan. Terima kasih!
sumber
a n=a(n-1)++[97+n]++a(n-1)
bekerja Tidak dapat menguji sekarang.[97+n]
adalah daftarInteger
dana(n-1)
adalah daftarChar
(aliasString
). Anda tidak dapat menggabungkan daftar dengan tipe yang berbeda.toEnum
membuatChar
keluar dariInteger
.['a'..]!!n
lebih pendek 2 byte daritoEnum(97+n)
Pyth,
1413 byteTerima kasih kepada Jakube karena telah menghemat satu byte!
Sebuah solusi dengan 14 byte:
VhQ=ks[k@GNk;k
.Penjelasan:
Coba di sini !
sumber
V
telepon?hQ
hanyaeval(input) + 1
=k
menjadi=
. Pyth akan secara otomatis menetapkan hasilnyak
, karenak
merupakan variabel pertama dalam ekspresi+k+@GNk
.Vt^2Q=+k@Gx_.BhN`1)k
(Dalam hal ini, itu diatur untuk memberikan 2 ^ Q-1 karakter pertama sesuai tantangan yang dibutuhkan, tetapi Anda dapat melihat bagaimana mengubah itu.)Retina ,
3732 byteLinefeed tambahan sangat penting. Input diambil secara unary .
Cobalah online!
sumber
Brainfuck, 157 byte
Masukan diberikan dalam bentuk biner.
Ide dasarnya adalah berulang kali menduplikasi urutan saat ini (dimulai dengan "a") dan untuk menambah elemen terakhir setelah setiap iterasi:
a → aa → ab
ab → abab → abac
abac → abacabac → abacabac
...
Ketika semua ini telah dilakukan sebanyak yang ditentukan, hasilnya akan dicetak tidak termasuk elemen terakhir.
Penjelasan mendalam
Memori diatur dengan cara berikut:
Countdown menyimpan jumlah siklus salinan yang belum dieksekusi. Urutan ABACABA disimpan dalam blok adjecent, masing-masing terdiri dari 3 sel. Nilai memegang karakter elemen (yaitu "A", "B", "C" ...). The Copy bendera menunjukkan apakah atau tidak sesuai elemen perlu disalin dalam siklus menyalin saat ini (0 = menyalin, 1 = tidak). The End bendera diatur ke 0 untuk elemen terakhir saat itu sedang disalin (itu 1 dalam semua kasus lain).
Sekarang untuk program yang sebenarnya (sedikit ungolfed):
sumber
Haskell , 36 byte
Cobalah online!
Ini menggunakan metode rekursif yang berbeda dari sebagian besar jawaban lainnya. Untuk mendapatkan string berikutnya dalam urutan, kami tidak menggabungkan dua salinan dalam string sebelumnya dengan huruf baru di antaranya, melainkan menambah setiap huruf dan intersperse
a
.sumber
bcb
alih-alihcbc
?05AB1E , 12 byte (tidak kompetitif)
Kode:
Saya akan terkutuk. Saya memperbaiki banyak bug berkat tantangan ini haha.
Penjelasan:
sumber
JavaScript (ES6),
4342 byteSatu byte disimpan berkat @Neil !
Namun solusi rekursif sederhana lainnya ...
sumber
(n+11).toString(36)
menghemat 1 byte, dan bekerja hingga (25)!CJam (14 byte)
Demo online
sumber
Ruby (1.9 dan lebih tinggi), 38 byte
?a
adalah cara golf untuk menulis"a"
tetapi terlihat aneh ketika dicampur dengan ternary?:
sumber
R , 48 byte
Cobalah online!
Rekursi sederhana.
sumber
paste0
setara denganpaste
dengansep=""
, jadi Anda menghindari spasi di antara huruf-huruf yangpaste
akan ditambahkan secara default.C #, 59 byte
Hanya solusi C # lainnya ...
sumber
Perl, 33 byte
Tidak ada kebutuhan nyata untuk tidak bermain golf. Bangun string ke atas dengan menambahkan secara berulang karakter berikutnya dalam urutan ditambah kebalikan dari string sejauh ini, menggunakan nilai ASCII dari 'a' sebagai titik awal. Menggunakan
$\
untuk menghemat beberapa pukulan, tapi itu sama rumitnya dengan yang didapat.Berfungsi untuk
a(0)
melewatia(25)
dan bahkan melampaui. Meskipun Anda masuk ke ASCII diperpanjang setelaha(29)
, Anda akan kehabisan memori jauh sebelum Anda kehabisan kode karakter:a(25)
adalah ~ 64MiB.a(29)
adalah ~ 1GiB.Untuk menyimpan hasil
a(255)
(belum teruji!), Seseorang memerlukan 2 ^ 256 - 1 = 1.15x10 ^ 77 byte, atau kira-kira 1,15x10 ^ 65 drive 1-terabyte.sumber
Java 7, 158 byte
Saya suka mengintai PPCG dan saya senang bisa memberikan suara / mengomentari jawaban lain.
Input diberikan sebagai parameter program. Ini mengikuti format yang sama dengan banyak jawaban lain di sini dalam arti itu adalah implementasi rekursif langsung. Saya akan mengomentari jawaban lain tetapi saya belum memiliki perwakilan untuk berkomentar. Ini juga sedikit berbeda karena panggilan rekursif dilakukan dua kali daripada membangun string dan meneruskannya.
sumber
Mathematica,
3632 bytePernahkah Anda menonton TWOW 11B?
sumber
"",
dan kemudian Anda dapat menggunakan notasi infiks untukFold
.<>
s, dan # 2 hanya berfungsi untuk fungsi biner.Python,
62544645 byteSaya ingin berpikir bahwa kode ini masih bisa diturunkan entah bagaimana.
Sunting: Perbaikan bug berkat Lynn. -1 byte berkat squid.
Cobalah online!
sumber
Mathematica, 46 byte
Fungsi rekursif sederhana. Solusi lain:
sumber
K5, 18 byte
Berulang kali menerapkan fungsi ke nilai yang dibawa (
"A"
) dan setiap elemen dari suatu urutan. Urutannya adalah karakter alfabet dari B hingga beberapa angka N (`c$66+!
). Fungsi tersebut bergabung dengan argumen kiri di kedua sisi argumen kanan ({x,y,x}
).Dalam aksi:
sumber
JavaScript,
6557 1 byteDemo:
1 - terima kasih Neil untuk menyimpan 8 byte
sumber
(i+11).toString(36)
menghemat 6 byte.s="a";
ke sebelumfor
maka itu menjadi nilai pengembalian default dan Anda dapat menghapus trailing;s
untuk penghematan 2 byte lainnya.i
inline dan menjatuhkan kenaikan di for loop. Jadi ...for(i=0;i<n;)s+=(i+++11)...
Japt,
2017 byteUji secara online!
Bagaimana itu bekerja
Versi yang tidak bersaing, 14 byte
The
ô
fungsi sepertio
, tetapi menciptakan kisaran[X..X+Y]
bukan[X..Y)
. Uji secara online!Saya lebih suka mengubah 97 ke 94, dalam hal ini output untuk
5
terlihat seperti:sumber
Java, 219 byte
Upaya golf kode pertama saya. Mungkin bisa bermain golf lebih jauh, tapi saya lapar dan pergi makan siang.
Tidak Disatukan:
Algoritma rekursif brute force cukup mudah, menggunakan
char
manipulasi.sumber
public
kata kunci daria
danaddLetter
/j
.MATL , 14 byte
Ini menggunakan versi 8.0.0 dari bahasa / kompiler, yang lebih awal dari tantangan.
Contoh
Penjelasan
Secuence yang dibuat pertama dengan angka
0
,1
,2
, ... ini dikonversi ke huruf'a'
,'b'
,'c'
di akhir.Edit
Cobalah online!
sumber
Powershell,
53,46,44, 41 BytesMenempel ke konsol akan menghasilkan output erron pada jalankan kedua karena
$d
tidak diinisialisasi ulang.Simpan 2 byte dengan menggunakan + = Simpan 3 byte berkat @TimmyD
sumber
(
,)
.Gaia , 14 byte
Cobalah online!
sumber
PowerShell , 54 byte
Cobalah online!
sumber
Japt , 8 byte
Cobalah
sumber
Sekam , 12 byte
Cobalah online!
Menggunakan pengindeksan berbasis 1, yang saya harap tidak apa-apa.
Penjelasan
sumber
APL (NARS), 24 karakter, 48 byte
uji:
sumber
PHP
-r
, 43 byteregister_argc_argv
harus diaktifkan agar ini berfungsi.Cobalah online!
PHP , 51 byte
Fungsi anonim yang mencetak output secara langsung.
Cobalah online!
sumber