Wise es un lenguaje simple bit a bit que diseñé hace un tiempo. Se basa en las operaciones bit a bit de Python . Tiene varias operaciones, la mayoría de estas son iguales o muy similares al símbolo equivalente en Python.
:
Duplicar la parte superior de la pila.?
Gire la parte superior de la pila hacia abajo!
Gire la parte inferior de la pila hacia arriba[
]
bucle mientras la parte superior de la pila no es cero~
no la parte superior de la pila (-(n+1)
)-
negar la parte superior de la pila (-n
)>
Desplazar la parte superior de la pila una vez a la derecha (n//2
)<
desplazar la parte superior de la pila una vez a la izquierda (n*2
)^
xo los dos primeros elementos de la pila ( igual que Python )|
o los dos primeros elementos de la pila ( igual que Python )&
y los dos primeros elementos de la pila ( igual que Python )
Hacer un número entero en Wise es bastante simple, puedes hacer cero con él ::^
e incrementarlo ~-
para que puedas hacer cero e incrementarlo varias veces. Sin embargo, si eliminamos las -
cosas se vuelven un poco más interesantes.
Todavía podemos hacer cada número usando las operaciones restantes. Por ejemplo aquí hay 3
~<<~
Esto funciona porque ~
convierte cero, una cadena infinita de 0
bits, en uno negativo, una cadena infinita de 1
bits, cada uno <
agrega un 0
bit al final, cuando terminamos hacemos lo ~
que lo convierte en una cadena de 0
s seguida de dos 1
s , o como la mayoría de la gente lo llama 3.
Tarea
Escriba un programa que cuando se le dé un número entero positivo generará un programa Wise que creará el número n
sin ninguno -
en su fuente (la fuente de la salida, puede usarla -
en su propia fuente). Puede suponer que ya hay un cero en la parte superior de la pila.
Este es el código de golf, no el meta-golf, por lo que debe intentar minimizar el código fuente de generación, no necesariamente la salida.
Salidas de ejemplo
Esta lista no es exhaustiva, simplemente son salidas posibles
1 -> ~<~
2 -> ~<~<
3 -> ~<<~
4 -> ~<~<<
5 -> ~<~:<<|
6 -> ~<<~<
7 -> ~<<<~
8 -> ~<~<<<
9 -> ~<~:<<<|
10 -> ~<~:<<|<
11 -> ~<<~:><<<|
12 -> ~<<~<<
13 -> ~<<~:<<<|>
14 -> ~<<<~<
15 -> ~<<<<~
16 -> ~<~<<<<
:
aplicado en una pila vacía empuja a 0
. Creo que esto debería especificarse, ya que no es obvio que duplicar desde una pila vacía debería dar0
positive integers