A regra 110 é um autômato celular com algumas propriedades interessantes. Seu objetivo é simular uma regra 110 no menor número de caracteres possível.
Para quem não sabe, a regra 110 é simulada linha por linha em uma grade. Cada quadrado em uma linha da grade olha para os quadrados acima, acima da esquerda e acima da direita para determinar qual célula deve ser.
current pattern 111 110 101 100 011 010 001 000
new cell 0 1 1 0 1 1 1 0
Entrada: números de 0 a 39 representando a linha superior do enésimo quadrado de entrada, em qualquer formato razoável (sequência separada por vírgula, lista, argumentos de função). Para acomodar idiomas indexados em 1, os números também podem ser indexados em 1 e variam de 1 a 40.
Exemplo de entrada:
38,39
Saída: Uma grade de 40 x 40 representando os autômatos em execução, incluindo a primeira linha. Você deve deixar 0 em branco e 1 como qualquer caractere de impressão visível. Os espaços à direita são permitidos, desde que a grade real possa ser razoavelmente distinguida. A parte inferior da grade pode ter uma nova linha, mas não deve haver linhas em branco entre as linhas da grade.
Exemplo de saída:
XX
XXX
XX X
XXXXX
XX X
XXX XX
XX X XXX
XXXXXXX X
XX XXX
XXX XX X
XX X XXXXX
XXXXX XX X
XX X XXX XX
XXX XXXX X XXX
etc.
Nota: Uma pergunta semelhante sobre autômatos celulares 1D já foi feita, mas espero que, usando apenas uma regra, respostas mais curtas possam ser escritas.