Wise è un semplice linguaggio bit per bit che ho progettato qualche tempo fa. Si basa sulle operazioni bit per bit di Python . Ha diverse operazioni la maggior parte di queste sono uguali o molto simili al simbolo equivalente in Python.
:
Duplica la parte superiore della pila?
Ruota la parte superiore della pila verso il basso!
Ruota la parte inferiore della pila verso l'alto[
]
loop mentre la parte superiore dello stack non è zero~
non in cima allo stack (-(n+1)
)-
annulla la parte superiore dello stack (-n
)>
sposta la parte superiore dello stack una volta verso destra (n//2
)<
sposta la parte superiore dello stack una volta a sinistra (n*2
)^
xo i primi due elementi dello stack ( uguale a Python )|
o i primi due elementi dello stack ( uguale a Python )&
e i primi due elementi dello stack ( uguale a Python )
Creare un numero intero in Wise è abbastanza semplice con cui puoi fare zero ::^
e incrementare con, ~-
quindi fai zero e incrementalo un sacco di volte. Tuttavia se rimuoviamo le -
cose diventano un po 'più interessanti.
Possiamo ancora fare ogni numero usando le restanti operazioni. Ad esempio qui è 3
~<<~
Questo funziona perché ~
trasforma zero, una stringa infinita di 0
bit, in negativa, una stringa infinita di 1
bit, ognuno <
aggiunge un 0
po 'alla fine, quando abbiamo finito facciamo ciò ~
che lo trasforma in una stringa di 0
s seguita da due 1
s , o come la maggior parte delle persone lo chiama 3.
Compito
Scrivi un programma che quando viene dato un numero intero positivo produrrà un programma Wise che creerà il numero n
senza alcuno -
nella sua fonte (la fonte dell'output, che puoi usare -
nella tua fonte). Si può presumere che ci sia già uno zero nella parte superiore della pila.
Questo è code-golf non meta-golf, quindi dovresti mirare a minimizzare il codice sorgente di generazione, non necessariamente l'output.
Esempi di output
Questo elenco non è esaustivo, sono semplicemente uscite possibili
1 -> ~<~
2 -> ~<~<
3 -> ~<<~
4 -> ~<~<<
5 -> ~<~:<<|
6 -> ~<<~<
7 -> ~<<<~
8 -> ~<~<<<
9 -> ~<~:<<<|
10 -> ~<~:<<|<
11 -> ~<<~:><<<|
12 -> ~<<~<<
13 -> ~<<~:<<<|>
14 -> ~<<<~<
15 -> ~<<<<~
16 -> ~<~<<<<
:
applicato su una pila vuota spinge a 0
. Penso che questo dovrebbe essere specificato, poiché non è ovvio che la duplicazione da uno stack vuoto dovrebbe dare0
positive integers