Coercing a string to an integer in GolfScript

11

GolfScript automatically coerces values, according to the following ‘priority’ sequence:

integer → array → string → block

(listed from lowest to highest.)

This means that "1"7+ leaves the string "17" on the stack (and not 8), because strings have a higher priority than integers.

[To those GolfScript veterans – apologies for insulting your respective intelligences.]

How would it be possible to do this the other way? That is, to coerce a string into an integer?

digitalis_

Posted 2016-07-16T18:57:31.717

Reputation: 221

name:~ args:1 functions:bitwise not, dump, eval – Leaky Nun – 2016-07-16T18:59:47.117

This gives 8. – Leaky Nun – 2016-07-16T19:00:47.403

@LeakyNun; Nice! Do you want to want to put this in an answer? I'd certainly accept it. – digitalis_ – 2016-07-16T19:02:15.620

6

@closevoter Questions asking tips about golfing code are on-topic.

– user8397947 – 2016-07-16T19:10:05.767

@downvoter; could you please leave a comment explaining why you have downvoted? – digitalis_ – 2016-07-18T16:45:47.533

Answers

10

There's an operator ~ in golfscript, which does the following: bitwise not, dump, eval.

Therefore, "1" will give the string "1" while "1"~ will evaluate that string (into the integer 1).

Then, all you need to do is "1"~7+.

Try it online!

Leaky Nun

Posted 2016-07-16T18:57:31.717

Reputation: 45 011

5It's worth mentioning that this is an eval of golfscript code, meaning e.g. "1.0"~ does something unexpected. – Lynn – 2016-07-17T09:25:09.063