O Wise é uma linguagem bit a bit simples que projetei há um tempo. É baseado nas operações bit a bit do Python . Possui várias operações, a maioria delas é igual ou muito semelhante ao símbolo equivalente no Python.
:Duplique a parte superior da pilha?Gire a parte superior da pilha para baixo!Gire a parte inferior da pilha para o topo[]enquanto o topo da pilha não é zero~não é o topo da pilha (-(n+1))-negar o topo da pilha (-n)>mova a parte superior da pilha uma vez para a direita (n//2)<deslocar o topo da pilha uma vez para a esquerda (n*2)^xou os dois principais itens da pilha (o mesmo que Python )|ou os dois principais itens da pilha (o mesmo que Python )&e os dois principais itens da pilha (o mesmo que Python )
Criar um número inteiro no Wise é bastante simples: você pode zerar ::^e incrementá-lo ~-para que você faça zero e aumente várias vezes. No entanto, se removermos as -coisas se tornam um pouco mais interessantes.
Ainda podemos fazer todos os números usando as operações restantes. Por exemplo, aqui está 3
~<<~
Isso funciona porque ~transforma zero, uma sequência infinita de 0bits, em negativo, uma sequência infinita de 1bits, cada <um acrescenta um 0pouco ao final; quando terminamos, o que faz com ~que cada um seja uma sequência de 0s seguida por dois 1s ou como a maioria das pessoas chama 3
Tarefa
Escreva um programa que, quando determinado um número inteiro positivo, produzirá um programa Wise que criará o número nsem nenhum -em sua fonte (a fonte da saída, você pode usar -em sua própria fonte). Você pode assumir que já existe um zero no topo da pilha.
Como código-golfe e não meta-golfe , você deve tentar minimizar o código-fonte de geração e não necessariamente a saída.
Saídas de exemplo
Esta lista não é exaustiva, são simplesmente saídas possíveis
1 -> ~<~
2 -> ~<~<
3 -> ~<<~
4 -> ~<~<<
5 -> ~<~:<<|
6 -> ~<<~<
7 -> ~<<<~
8 -> ~<~<<<
9 -> ~<~:<<<|
10 -> ~<~:<<|<
11 -> ~<<~:><<<|
12 -> ~<<~<<
13 -> ~<<~:<<<|>
14 -> ~<<<~<
15 -> ~<<<<~
16 -> ~<~<<<<
:aplicado em uma pilha vazia, empurra a 0. Eu acho que isso deve ser especificado, já que não é óbvio que a duplicação de uma pilha vazia deve dar0
positive integers