I am loving the challenge and exercise, though the whole thing with the esoterik programming languages is garbage. Had a perfect run until 333% but then lost the joy with that.
(But hey at least now I can read Whenever code ;-) I never thought I would care)
There is a Whenever code that even takes user input. Doesn't make sense.
Actually even the syntax is wrong since there should be a comma between multiple commands. It is missing after the print statements in lines 2,5,7,8.
Since the order of Whenever code lines being executed is arbitrary the result is purely hypothetical.
Also this program will end up in an endless loop, hence it will never end.
I'd say that the INTERCAL program is wrong and unsolveable.
A -> B -> jump to (2) put current line on stack -> jump to (3) put current line on stack -> variable 5 is not defined, hence error 621 "RESUME statement evaluated to 0"
If you take the "DO RESUME .5" as a condition then the third solution is correct.
Still I think this should be fixed or annotated.
For anybody who wants to play around with this can use the code at the end of the post
(1) DO READ OUT #1
DO READ OUT #2
DO (2) NEXT
DO READ OUT #3
DO RESUME #1
(2) DO (3) NEXT
DO FORGET #1
DO READ OUT #4
DO (4) NEXT
(3) DO RESUME #1
(4) DO FORGET #1
DO READ OUT #5
DO READ OUT #6
DO (5) NEXT
PLEASE (4) NEXT
(5) PLEASE (3) NEXT
PLEASE DO READ OUT #7
PLEASE RESUME #2
Definitely put something at the level for INTERCAL that the .5 variable should be interpreted in your way. Otherwise there is no way to know.
Regarding Whenever you need to explain how the read() should be interpreted and please make a comma, so the syntax is correct.
Also it would need to be stated how to interpret the order of execution, since Whenever does not guarantee the order. Otherwise the sequence could as well start with "D E" or "F". For what it is worth the complete sequence could even be "F A B". Though with defining the order it would take all the fun of Whenever.
(That's the main reason I really dislike this level. I doesn't give you a fair chance.)
Also, regardless of the start, the way it is now your code will end up in an endless loop with line 6 being executed forever. (Line 3 actually has chance to be completely removed from the todo list.) So none of the solutions is correct for end is never reached. This can be easily fixed the same way as it is done for line 3.
I guess you will have to come up with some other code to make this work.
Are you overlooking the effect of "defer"? AFAICT in your screenshot execution order is deterministic up to conditions, and the program terminates successfully (i.e. with empty "to-do list").
Anyway the hints are now available in-game, and I've also placed print() statements on separate lines (the spec, while being somewhat loose, doesn't allow both print() and lines specifications on the same line).
"... A Whenever program is executed by a language interpreter ... . It takes the program code and treats each line as an item in a to-do list. The interpreter chooses an item from the list at random, with equal probability, to execute, and executes the statement. ..."
← Return to game
Comments
Log in with itch.io to leave a comment.
===== major spoilers below =====
I am loving the challenge and exercise, though the whole thing with the esoterik programming languages is garbage. Had a perfect run until 333% but then lost the joy with that.
(But hey at least now I can read Whenever code ;-) I never thought I would care)
There is a Whenever code that even takes user input. Doesn't make sense.
Actually even the syntax is wrong since there should be a comma between multiple commands. It is missing after the print statements in lines 2,5,7,8.
Since the order of Whenever code lines being executed is arbitrary the result is purely hypothetical.
Also this program will end up in an endless loop, hence it will never end.
<discussion moved to the comment below>
I'd say that the INTERCAL program is wrong and unsolveable.
A -> B -> jump to (2) put current line on stack -> jump to (3) put current line on stack -> variable 5 is not defined, hence error 621 "RESUME statement evaluated to 0"
If you take the "DO RESUME .5" as a condition then the third solution is correct.
Still I think this should be fixed or annotated.
For anybody who wants to play around with this can use the code at the end of the post
https://www.tutorialspoint.com/compile_intercal_online.php
The description has been updated with some details about (my use of) these two languages - I may incorporate the info in-game if you find it helpful.
Definitely put something at the level for INTERCAL that the .5 variable should be interpreted in your way. Otherwise there is no way to know.
Regarding Whenever you need to explain how the read() should be interpreted and please make a comma, so the syntax is correct.
Also it would need to be stated how to interpret the order of execution, since Whenever does not guarantee the order. Otherwise the sequence could as well start with "D E" or "F". For what it is worth the complete sequence could even be "F A B". Though with defining the order it would take all the fun of Whenever.
(That's the main reason I really dislike this level. I doesn't give you a fair chance.)
Also, regardless of the start, the way it is now your code will end up in an endless loop with line 6 being executed forever. (Line 3 actually has chance to be completely removed from the todo list.) So none of the solutions is correct for end is never reached. This can be easily fixed the same way as it is done for line 3.
I guess you will have to come up with some other code to make this work.
Are you overlooking the effect of "defer"? AFAICT in your screenshot execution order is deterministic up to conditions, and the program terminates successfully (i.e. with empty "to-do list").
Anyway the hints are now available in-game, and I've also placed print() statements on separate lines (the spec, while being somewhat loose, doesn't allow both print() and lines specifications on the same line).
"... A Whenever program is executed by a language interpreter ... . It takes the program code and treats each line as an item in a to-do list. The interpreter chooses an item from the list at random, with equal probability, to execute, and executes the statement. ..."
https://www.dangermouse.net/esoteric/whenever.html
Heh, the practice of reading language specs selectively. You're in good company, that has failed me more than once...