Eine Zeichenfolge ist quadratfrei, wenn sie zweimal hintereinander keine Teilzeichenfolge enthält.
Es ist möglich, ein beliebig langes quadratfreies Wort mit einem 3-Buchstaben-Alphabet zu haben.
Ein Programm schreiben , das eine positive ganze Zahl n von stdin nimmt und druckt jedes quadrat Wort der Länge n, unter Verwendung von Zeichen A
, B
und C
.
Der kürzeste Code gewinnt.
exec"x+=[1-y for y in x];"*n
spart 6 Zeichen auf Kosten der Effizienz - aber hey, das ist Golf!Python,
129125119Verwenden Sie die Methode von John Leech, wie auf der verlinkten Wiki-Seite beschrieben.
quelle
'ABCBCACABBCAABCCABBCACABABCBCACABBCAABC'[ord(t)%5::3]
while s[:n]==s:
spart 1 mehrPython2 - 112 Zeichen
Das ist ziemlich ineffizient. Es generiert eine viel, viel längere Zeichenfolge als erforderlich und schneidet sie dann ab. Das Zwischenprodukt
s
fürn=7
ist beispielsweise 62748517 (13 n ) Zeichen langquelle
Mathematica
159 140134Bearbeiten : Ein vollständiges Umschreiben mit Rekursion (
NestWhile
). Viel schneller und ohne unnötigen Aufwand.Code
Verwendungszweck
Es dauert ungefähr 1/40 Sek., Um ein ternäres quadratfreies Wort mit einer Million Zeichen zu erzeugen.
Überprüfen
f
testet, ob eine Zeichenfolge quadratfrei ist.Überprüfen Sie die obigen Ausgänge und einen Fall, in dem die Zeichenfolge "CC" angezeigt wird.
quelle