String bebas persegi jika tidak mengandung substring dua kali berturut-turut.
Dimungkinkan untuk memiliki kata bebas persegi panjang sembarang menggunakan alfabet 3 huruf.
Tulis sebuah program yang menerima bilangan bulat positif n dari stdin dan mencetak kata panjang bebas persegi n, menggunakan karakter A
, B
dan C
.
Kode terpendek menang.
exec"x+=[1-y for y in x];"*n
menghemat 6 karakter dengan mengorbankan efisiensi - tapi hei ini golf!Python,
129125119Menggunakan metode John Leech seperti yang dijelaskan pada halaman wiki yang tertaut.
sumber
'ABCBCACABBCAABCCABBCACABABCBCACABBCAABC'[ord(t)%5::3]
while s[:n]==s:
hemat 1 lagiPython2 - 112 karakter
Ini sangat tidak efisien. Ini menghasilkan string yang jauh lebih lama dari yang dibutuhkan dan kemudian memotongnya. Misalnya perantara
s
untukn=7
62748517 (13 n ) karaktersumber
Mathematica
159 140134Sunting : Menulis ulang lengkap, menggunakan rekursi (
NestWhile
). Jauh lebih cepat dan tidak ada usaha yang sia-sia.Kode
Pemakaian
Dibutuhkan sekitar 1/40 detik untuk menghasilkan kata bebas terner persegi dengan satu juta karakter.
Memverifikasi
f
akan menguji apakah sebuah string bebas persegi.Memeriksa output di atas dan satu case di mana string "CC" muncul.
sumber