Wise est un langage simple au niveau du bit que j'ai conçu il y a quelque temps. Il est basé sur les opérations bit à bit de Python . Il a plusieurs opérations dont la plupart sont identiques ou très similaires au symbole équivalent en Python.
:
Dupliquez le haut de la pile?
Faire pivoter le haut de la pile vers le bas!
Faire pivoter le bas de la pile vers le haut[
]
boucle alors que le haut de la pile n'est pas nul~
pas le haut de la pile (-(n+1)
)-
annuler le haut de la pile (-n
)>
décalage du bit une fois vers la droite en haut de la pile (n//2
)<
décaler le haut de la pile une fois vers la gauche (n*2
)^
xou les deux premiers éléments de la pile ( Identique à Python )|
ou les deux premiers éléments de la pile ( comme Python )&
et les deux premiers éléments de la pile ( identiques à Python )
Faire un entier dans Wise est assez simple, vous pouvez faire zéro avec ::^
et l'incrémenter avec ~-
donc vous faites zéro et l'incrémentez un tas de fois. Cependant, si nous supprimons les -
choses, cela devient un peu plus intéressant.
Nous pouvons toujours faire chaque numéro en utilisant les opérations restantes. Par exemple, voici 3
~<<~
Cela fonctionne parce que ~
transforme zéro, une chaîne infinie de 0
bits, en négatif, une chaîne infinie de 1
bits, chacun <
ajoute un 0
bit à la fin, lorsque nous avons terminé, nous faisons ~
ce qui le transforme en une chaîne de 0
s suivie de deux 1
s , ou comme la plupart des gens l'appellent 3.
Tâche
Écrivez un programme qui, lorsqu'il reçoit un entier positif, produira un programme Wise qui créera le nombre n
sans aucun -
dans sa source (la source de la sortie, vous pouvez l'utiliser -
dans votre propre source). Vous pouvez supposer qu'il y a déjà un zéro en haut de la pile.
Il s'agit de code-golf et non de méta-golf , vous devez donc viser à minimiser le code source généré, pas nécessairement la sortie.
Exemples de sorties
Cette liste n'est pas exhaustive ce sont simplement des sorties possibles
1 -> ~<~
2 -> ~<~<
3 -> ~<<~
4 -> ~<~<<
5 -> ~<~:<<|
6 -> ~<<~<
7 -> ~<<<~
8 -> ~<~<<<
9 -> ~<~:<<<|
10 -> ~<~:<<|<
11 -> ~<<~:><<<|
12 -> ~<<~<<
13 -> ~<<~:<<<|>
14 -> ~<<<~<
15 -> ~<<<<~
16 -> ~<~<<<<
:
appliqué sur une pile vide pousse a 0
. Je pense que cela devrait être spécifié, car il n'est pas évident que la duplication à partir d'une pile vide devrait donner0
positive integers