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 0
bits, em negativo, uma sequência infinita de 1
bits, cada <
um acrescenta um 0
pouco ao final; quando terminamos, o que faz com ~
que cada um seja uma sequência de 0
s seguida por dois 1
s 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 n
sem 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