Contrainte d'une chaîne à un entier dans GolfScript

12

GolfScript contraint automatiquement les valeurs, selon la séquence de «priorité» suivante:

entier → tableau → chaîne → bloc

(du plus bas au plus élevé.)

Cela signifie que "1"7+laisse la chaîne "17"sur la pile (et non 8), car les chaînes ont une priorité plus élevée que les entiers.

[ À ces vétérans de GolfScript - des excuses pour avoir insulté vos intelligences respectives. ]

Comment serait-il possible de procéder autrement? Autrement dit, pour contraindre une chaîne en un entier ?

digitale_
la source
name:~ args:1 functions:bitwise not, dump, eval
Leaky Nun
Cela donne 8.
Leaky Nun
@LeakyNun; Agréable! Voulez-vous vouloir mettre cela dans une réponse? Je l'accepterais certainement.
digitalis_
@downvoter; pourriez-vous s'il vous plaît laisser un commentaire expliquant pourquoi vous avez voté contre?
digitalis_

Réponses:

10

Il y a un opérateur ~dans golfscript, qui effectue les opérations suivantes: bitwise not, dump, eval.

Par conséquent, "1"donnera la chaîne "1"tandis que "1"~évaluera cette chaîne (dans l'entier 1).

Ensuite, tout ce que vous devez faire est "1"~7+.

Essayez-le en ligne!

Leaky Nun
la source
5
Il convient de mentionner qu'il s'agit d'un evalcode de golf, ce qui signifie, par exemple, "1.0"~fait quelque chose d'inattendu.
Lynn