Mari kita sebut daftar string yang tidak kosong sebagai mesa jika kondisi berikut ini berlaku:
- Setiap string yang terdaftar tidak kosong dan hanya menggunakan karakter yang muncul di string pertama.
- Setiap string berturut-turut persis satu karakter lebih panjang dari string sebelumnya.
- Tidak ada string dalam daftar adalah subsequence dari string lain dalam daftar.
Istilah "mesa" berasal dari memvisualisasikan seperti ini (di mana x
karakter harus beragam):
xx..x
xx..xx
xx..xxx
.
.
.
xx..xxx..x
NB: Ini adalah fakta matematis bahwa hanya sedikit mesa yang dimulai dengan string tertentu. Perhatikan perbedaan antara berikutnya vs substring ; misalnya, 'anna' adalah urutan (tetapi bukan substring) dari 'pisang'.
Tantangan:
- Tulis program terpendek yang menggunakan string input alfanumerik non-kosong sembarang dan menghasilkan jumlah mesa yang dimulai dengan string itu.
Input (stdin):
- String alfanumerik yang tidak kosong.
Output (stdout):
- Jumlah mesa yang dimulai dengan string input.
Mencetak:
- Pemenangnya adalah program dengan jumlah byte terkecil.
Contoh mesa
Hanya satu mesa yang dimulai dengan a
:
a
Hanya satu mesa yang dimulai dengan aa
:
aa
Banyak mesa dimulai dengan ab
:
ab ab ab ab (and so on)
baa aaa bbb
bbba bbaa
baaaa
aaaaaa
ab
,bbb
sebagai seorang mesa hanya dengan berhenti pada semester kedua. Apakah itu valid? Atau apakah harus selalu dibuat selama mungkin? Juga, jika ada beberapa kemungkinan penyusunan ulang darinth
istilah (sepertibaa
,aba
,aab
), apakah mereka juga dihitung sebagai mesa terpisah juga (menyediakan tentu saja mereka semua mengikuti aturan)?ab
,ab/baa
,ab/bbb
,ab/bbb/bbaa
,ab/bbb/bbaa/baaaa
,ab/bbb/bbaa/baaaa/aaaaaa
yang mesa berbeda.Jawaban:
GolfScript (
106103 karakter)Di suatu tempat di hati, tentu saja, adalah beberapa kode dari Apakah string X merupakan lanjutan dari string Y?
sumber
Ruby, 142 karakter
Algoritma ini konstruktif, yaitu membangun semua kemungkinan mesa untuk string input dan menghitungnya. Itu membuat program ini benar-benar lambat - tapi hei, itu codegolf.
Contoh berjalan:
sumber
aab
) Memiliki panjang yang layak, tapi saya tidak yakin - program Anda telah berjalan sekitar satu jam untuk contoh itu. NB: Tidak akan ada output yang layak untuk input apa pun yang melibatkan lebih dari dua huruf berbeda; misalnya, beberapa mesa yang dimulai denganabc
memiliki panjang lebih besar dari angka Ackermann ke - 7000 .300,000
entri denganaab
saya masih melihat 10 istilah pertama atau lebih semuanya identik. Jadi saya pikir itu tidak mungkin untuk sesuatu yang lebih besar dari dua karakter. Setidaknya, bukan tanpa kecerdasan dan perhitungan heuristik.