Una cadena es cuadrada si no contiene ninguna subcadena dos veces seguidas.
Es posible tener una palabra arbitrariamente larga sin cuadrados utilizando un alfabeto de 3 letras.
Escriba un programa que acepte un entero positivo n de stdin e imprima cualquier palabra cuadrada de longitud n, usando caracteres A, By C.
El código más corto gana.

exec"x+=[1-y for y in x];"*nahorra 6 caracteres a expensas de la eficiencia, pero bueno, ¡esto es golf!Python,
129125119Usando el método de John Leech como se describe en la página wiki vinculada.
fuente
'ABCBCACABBCAABCCABBCACABABCBCACABBCAABC'[ord(t)%5::3]while s[:n]==s:ahorra 1 másPython2 - 112 caracteres
Esto es bastante ineficiente. Genera una cadena mucho más larga que la requerida y luego la trunca. Por ejemplo, el intermedio
sparan=7tiene 62748517 (13 n ) caracteres de longitudfuente
Mathematica
159 140134Editar : una reescritura completa, utilizando recursión (
NestWhile). Mucho más rápido y sin esfuerzo desperdiciado.Código
Uso
Se tarda aproximadamente 1/40 segundos en generar una palabra libre cuadrada ternaria con un millón de caracteres.
Verificando
fprobará si una cadena está libre de cuadrados.Verificando las salidas anteriores y un caso en el que aparece la cadena "CC".
fuente