M → Dica , 4 bytes
Ṅ×ịß
Experimente online!
O link TIO adiciona um rodapé para chamar a função com o exemplo do programa Tip mostrado na página Esolang (o "invólucro automático" de M para chamar funções como se fossem programas que não possam lidar com números racionais ou de ponto fixo, ou pelo menos eu não descobri como contar, então preciso transformar a função em um programa completo manualmente para poder executá-lo.)
Na verdade, isso imprime saída de depuração útil; o programa não pode ser escrito em 3 bytes em M porque um programa que consiste em exatamente três díades aciona um caso especial no analisador, então tive que adicionar um comando extra para evitar o caso especial. Torná-lo Ṅ
(imprimir com nova linha), pelo menos, proporciona uma finalidade útil.
ı
i=−1−−−√
Não implementa E / S (exceto halt / no-halt). AE / S é uma extensão do Tip (não faz parte do próprio idioma) e não é necessária para a conclusão de Turing.
Explicação / Antecedentes
Ṅ×ịß
Ṅ Print {the left argument} and a newline; also resolves a parser ambiguity
ị {The left argument}th element of {the right argument}, wrapping on OoB
× Multiply {the left argument} by {the chosen element}
ß Recursive call; arguments: {the product} and {the same right argument}
[1,2,3]
[1,2,3,1,2,3,1,2,3,…]
rx+s, que é um polinômio, e a "conversão de base" incorporada por muitas línguas de golfe é, na verdade, um avaliador polinomial de uso geral disfarçado. Então, tudo o que precisamos fazer é indexar em uma lista de listas de dígitos, convertê-los com base e pronto, certo?
xx
ḅ
x⊕(x⊗y)x⊗y⊕. Claro, poderíamos substituir o comportamento do encadeamento para praticamente qualquer coisa que desejássemos, mas isso custaria um byte inteiro, e as entradas do idioma do golfe para essa pergunta estão ficando tão curtas que um byte é muito.
Então olhei para trás e reavaliei um pouco. Existem operações que poderíamos usar em vez da avaliação polinomial? Idealmente, aqueles que são comutativos, para que não tenhamos que nos preocupar com a ordem dos argumentos? Logo depois, percebi que as funções Collatz são mais complexas do que precisam.
s
E, é claro, diferentemente da conversão base ( ḅ
), a multiplicação ( ×
) é comutativa e, portanto, não importa em que ordem os argumentos são colocados. Portanto, tudo o que precisamos escrever é ×ị
e, em seguida, colocar o programa em uma recursão infinita com ß
, e temos uma linguagem completa de Turing. Direita?
(x⊙y)⊕(x⊗y)¹×ịß
¹
¹
Ṅ
é uma boa opção porque produz saída de depuração útil.
Três bytes são possíveis? A menos que eu esteja perdendo alguma coisa, não com esta escolha específica de linguagem de implementação e implementação, mas neste momento certamente parece que seria possível de alguma forma, pois existem muitas maneiras de fazê-lo em quatro e tantos Turing-complete idiomas que você pode implementar.
eval
soluções triviais .