Hexagony, 37. 35 34 31
10"+}(=${";<$<1}42/.0@_=<>\;>(_
Expandido:
1 0 " +
} ( = $ {
" ; < $ < 1
} 4 2 / . 0 @
_ = < > \ ;
> ( _ . .
. . . .
Experimente online
Basicamente, existem apenas dois para loops, contando de dez a zero, imprimindo um asterisco no loop interno e uma nova linha no loop externo.
Explicação:
Este programa consiste em três partes principais: inicialização da memória, um loop que imprime dez asteriscos e um loop que imprime uma nova linha. O loop que imprime uma nova linha também contém o loop que imprime os asteriscos.
Primeiro, o código executa a inicialização da memória totalmente linear. O código trabalha-se: 10"+}42
. Isso define a memória das bordas próximas para se parecer com:
10 \ / 10
|
42
42 é o código ASCII para o caractere asterisco e as duas dezenas serão usadas como nossos contadores de loop. É digno de nota que o ponteiro da memória está atualmente apontando para fora das duas dezenas, portanto, retroceder nos colocará em uma das dezenas.
Em seguida, iniciamos o ciclo de impressão astersisk. Linearmente, o código se parece com: ;".._(
. Isso imprime um asterisco, move o ponteiro da memória para trás e para a esquerda e, finalmente, diminui o valor lá. Após uma iteração, a memória seria semelhante a:
10 \ / 9
|
42
Então atingimos a condição do loop: o canto inferior esquerdo >
. Se a borda que acabamos de decrescer ainda é positiva, pulamos e executamos a {
para nos mover de volta para a 42. Em seguida, pressionamos a $
e retornamos ao início do ciclo de impressão ;
, pulando o <
. Se o valor for zero, vamos para o outro loop.
O loop externo começa redefinindo a borda da memória recentemente zerada para dez (este é 10
o código, indo para sudoeste). Em seguida, imprimimos esses dez como um caractere ASCII, que é uma nova linha. Em seguida, vamos passar para a outra margem memória e diminui-lo com {(
e, em seguida, executar o que equivale a um monte de noops: =${_=
. Agora, após uma iteração desse loop, a memória seria semelhante a:
9 \ / 10
|
42
Desta vez, a memória está voltada para fora a partir da borda, armazenando nove no diagrama acima. Em seguida, executamos o <
que atua como condição do loop externo. Se o valor for diferente de zero, saltaremos de alguns espelhos e começaremos a executar instruções significativas novamente depois de entrar no topo do hexágono no "
sudoeste em movimento. Isso nos leva a recuar e a esquerda para os 42 novamente, mas voltados para dentro. Então ele =
vira em nossa direção, redefinindo o estado adequadamente para iniciar o loop interno novamente. Se a borda foi ajustada para zero, o ponteiro de instruções inicia uma pequena aventura que não faz nada até sair do programa.
A aventura começa com o ponteiro de instruções que se dirige para o nordeste, desconsiderando perigosamente a segurança das direções cardeais. Corajosamente ignora um espelho que está alinhado com sua direção ( /
) e heroicamente salta de um trampolim ($
) escapando inteiramente da armadilha mortal de outro trampolim totalmente idêntico. Observando o vazio das arestas hexagonais não inicializadas, o ponteiro, sem hesitar por um momento, adiciona as duas arestas em branco que enfrenta, definindo a aresta atual em sua soma: 0 (a aresta era realmente zero antes, mas o ponteiro gosta de acredite que isso foi muito importante). Como a margem é zero, o ponteiro faz uma curva à esquerda na bifurcação da estrada, entrando em uma floresta misteriosa (de hexágonos). Lá, ele se vê desorientado, movendo-se para frente e para trás e para frente, até acabar no mesmo lugar na memória que começou. Pensando que o problema deve ser que a borda atual foi zerada da última vez, o ponteiro bravamente planta um1
na borda atual. Então, o apontador nobre investiga outro caminho, um colocado com ... uma armadilha! A aresta atual é decrementada e volta a zero! O ponteiro, atordoado pela reviravolta chocante dos eventos, volta a tropeçar na armadilha, colocando a borda atual em negativa. Enfurecido, o ponteiro tenta retornar à floresta relativamente agradável, apenas para perceber que, como a borda atual não é positiva, os caminhos mudaram novamente e o ponteiro se vê entrando em uma caverna. E por uma caverna, quero dizer a boca de um verme hexagonal gigante. Desamparado, o ponteiro amaldiçoa a sexualidade com seu hálito moribundo. Além disso, o programa termina.