Jahooma's LogicBox
Brightly colored shapes and arrows. Classical music. Devious programming puzzles. They're all key ingredients in Jahooma's LogicBox, a rather apt name for a game involving lots of boxes and logic and made by a developer named Jahooma. Like SpaceChem and Robot Unlock before it, Jahooma's LogicBox is a game for programmers, and a good one at that. At 18 levels including 4 challenge levels, LogicBox is a little short, but Jahooma promises more to come.
Read More85 Comments
There was an update posted today that fixed a few bugs and also addressed the problem of Level 8's Genius score being too loose (108 steps instead of the optimum - and required for later levels - 88 steps).
The correct target for Level 8 is 88 steps using 11 boxes.
And for a more general hint, the first thing you should figure out when going for Genius Rank is how many boxes you can use and still get 10/10 for boxes (level 5 in particular was bad about this prior to the update). If you're going under this, you may be able to rework some boxes to just use primitives to decrease the total number of steps. The start primitive in each box DOES count as a step (this is why the optimized rotate box costs 3 steps when used instead of 2)
[Latest version uploaded. Thank you for pointing it out! -Jay]
I don't understand why more boxes but fewer steps is less optimum than fewer boxes and more steps. Because you can get level 8 in 50 steps using 13 boxes:
Start goes to compare.
* Green exits south;
* Red adds star, rotates 1, adds star, moves to next compare.
Second compare:
* Green deletes twice, exits north;
* Red deletes once, rotates three times, exits south
This only works because of the particular test set, but it DOES use many fewer steps!
I got that far. But I can't figure out how to do something like
if first character is an asterisk
which would allow me to
delete the first character and move along
Wait, wait, power of the post. In each loop, do something like this later on:
1. add asterisk.
2. compare2
3. green: delete 1st char and exit
Thanks!
@Adorkable: That tends to happen surprisingly frequently around here. Now if only I could find the "correct" solution to 6 ("only one char type" - I actually ended up hacking up a solution to that that uses a few too many boxes for Genius) and a workable solution to 12 ("Count Zeros", no store/load and no "IsEmpty?" box) and 14 ("Duplicate").
(and as I post this, I actually find a way to shave off 2 boxes and a few steps on Level 10... which doesn't help me as I already have Genius on it)
The obvious comparison here is going to be manufactoria. I think this game was an interesting take on the same premise. What I liked here was the idea of taking some of the common tasks and encapsulating them inside of "higher order" blocks.
But the one thing that killed it for me was the "add *". The special "never an input, cannot be incremented" character should make the puzzles solvable, but it doesn't because you have no way to detect it. There is no way to uniquely pull out a "**" that you inserted instead of the "oo" in the middle of "Joohma". You could instead insert "***" but that to is vulnerable to the word "jooohma" (and a kludge to detect in a loop). What this game needs is an asterisk conditional block.
@IIAOPSW:
The asterisk is detectable under certain circumstances.
If there's another asterisk next to it.
Insert an asterisk. Use "compare 2" to compare it to the next character which will also remove it and that will give you a branch to remove the next character if you want.
If you're specifically looking for a pair of asterisks...
You can do the same thing just described to find the first one, and a compare afterwards to find the second one.
It's a little involved, but it doesn't actually take up that much space.
IIAOPSW: There may not be a single block that tests for asterisks...
... but if you know for certain that there is an asterisk at the start of your input,
for instance, if you JUST put one there as your previous action...
it should be pretty easy to see if the second object in your input is also an asterisk.
Good Luck!
As a note - this hits a 4/5 for me because the game doesn't let me skip right to the answer. It takes a LONG time watching these animations and listening to the sounds, especially when you're one point away from genius level on something like, say, level 12...
Ugh... still can't figure out 12. I'm one point away in steps taken... so for some questions:
Do I NEED to use copy? I found a very cheap answer that doesn't use it and also uses only 7 blocks... not sure what I'm missing from that, or if that's the right direction.... But on top of that, should I continue trying to optimize solutions that increment every character, or should I look for one that drastically reduces steps by not doing so. I've had a few ideas, but the problem is that testing for the final zero is a huge pain!
I'm mostly looking for nudges in the right direction here, so if you have some I'd be quite grateful!
As a programmer I both love and hate this game. And both for the same reason - it defies almost all programming principles except precious few.
I love this because it forces me to think outside the box. I'm not searching for what would be the "true" optimal solution, I'm searching for the one defined within the confines of the game mechanics. I'm also restricted to a really weird subset of functions. This can sometimes be quite a bit of challenge, and I enjoy it.
However, this also bugs me about the game. The 2D plot does not allow easy branching without placing unnecessary redirects (which the game sees as suboptimal), and the usual principles of testing and debugging are all but impossible. Trying to use this game as a programming teaching tool would be disastrous for everyone involved.
So all in all, this will hardly be one of my favorite games, but it's neat find, and a type of game I'd like to see more of.
I am missing a bit on 5 and 8.
5: 4 boxes, 60 steps. Need fewer steps.
Start pointing right to Compare.
Compare with Green pointing up, Red pointing down to Copy.
Copy pointing left to Rotate.
Rotate pointing up to Start.
8: 11 boxes, 125 steps. Need fewer steps.
Put an asterisk at each end of the string, and check to see if those are the only characters. If so, strip them out and exit green. If not, keep rotating the word until the first two characters are asterisks, then strip them out and exit red.
Any ideas?
One thing to think about:
When you're reusing a previous solution in a later puzzle, the efficiency (steps required) of the submodule matter, but the number of blocks the submodules uses doesn't.
As a result, it might be helpful to optimize early puzzles for efficiency at the expense of blocks, use those solutions to solve later puzzles, then go back and find "Genius" solutions to the early problems later.
@Alkalannar:
I can get #8 in 12 boxes (which is one too many, unfortunately) and only 96 steps. Curious as to where the overlap between our two solutions is, because we're taking the same approach.
As for #5 (total spoiler so read at your own risk):
You can do it without any rotation. 2 copies then delete then compare
Need some help optimizing #8, got it to 11 boxes(+10), 125 steps(+9!!). What's the genius # of steps? I've got to be close!
Add*,Rot,Add*, then Comp2- green(i.e. started w/empty string), delete remaining * and exit north.
If Comp2 exits red, then we have a string terminated by *. Keep moving letters to back until we match the terminating *:
Rot
Add*
Comp2- green, delete second * and exit south
- red, redirect back to Rot at loop start
I've actually done it in 101 steps, but it will only work for odd-length strings. That is philosophically repugnant to me, a solution acceptable only to mouth-breathing barbarians.
@ samdulmage
That does work, not sure why I didn't think of it, but its still a bit of a kludge. The whole point of * is using it to pick out where you are in the string. The thing that separates this from manufactoria is blocks encapsulating common, tedious actions. Using two blocks just to detect * is self defeating IMO.
@Alkalannar, brspies:
Got it! 11/106
Some progressive hints:
brspies solution to #5 without using rotations is useful.
OtherBill's observation that the efficiency of submodules is important, but the number of modules within is not.
Though (Copy,Delete) uses one more block than (Rotate), it is a bit more efficient.
Complete spoiler:
Replace any (Rotation) in a loop with a (Copy, Delete) pair.
Looks like #8 is a case where you can save steps by adding boxes (to reduce the number of times it goes through a loop, for example).
Since the "red" loop from that first compare is the one that happens over and over and over, that's where you need to optimize. With my setup using compare2 at the first junction instead of compare ended up adding steps, because it involved extra add*s each time the loop cycled, just as an example.
Also, add*/rotate/add* can be accomplished with just add*/copy. Saves some steps since rotate is a multi-step object, no?
Solutions to Non-challenge levels
(still working on them)
Level 2
Level 3
Level 4
Level 5
Level 7
Level 8
Level 9
Level 11
Level 13
Level 15
Level 16
Level 17
Level 18
For anyone stuck on twelve, the genius score requires
8 boxes (7 plus your start box), and took 1169 steps for my solution
If you have a solution that works, try keeping the same logic but rearranging the boxes on the board. You can solve this level without any redirects with clever placement. Also, moving boxes around can help you spot places with redundant logic.
For some more hints on how to solve 12, in order of increasing spoilery-ness:
Yes, you will have to increment every digit in the string
You'll use every block EXCEPT the redirect at least once
Put the input straight into a comparison right away to detect the just one digit case. This comparison can be reused in part of the loop for the other cases
You'll have two loops. One to increment every digit, and the second to determine when you've whittled the string down to just the final count
And finally, the solution:
Delete->| C->no. | ....Delete.....|
........| | .....| ...... | ......|...
........| V .....| ...... | ......|...
........| yes....| ...... V ......|...
--------+--------+----------------+-----
^.......|........| ........ ......|...^
|.......|........| ........ ......|...|
|.......|........| ........ ......|...|
Copy....|<-Incr..|yes<-Compare->no| Incr
--------+--------+----------------+------
........|........|....Start.......|
After fiddling with this some more, I've really come to hate the entire "testing" design choices. It's all kinda clumsy, inefficient and occasionally frustrating.
I really think the player should be allowed to choose which test to run, instead of being forced to sit through all the tests every time you run the "program". Also, a step-by-step feature with a "step backward" button would be greatly appreciated; blink-and-you'll-miss-it debugging procedure might be fun for some but I've come to despise it, especially if my "program" brakes on the last test.
My high scores :
1 : 3 boxes 9 steps
2 : 4 boxes 30 steps
3 : 4 boxes 12 steps
4 : 3 boxes 52 steps
5 : 4 boxes 54 steps or (5, 39)
6 : 5 boxes 78 steps
7 : 5 boxes 21 steps
8 : 10 boxes 137 steps*
9 : 7 boxes 162 steps*
10 : 10 boxes 310 steps
11 : 10 boxes 40 steps
12 : 7 boxes 1244 steps
13 : 8 boxes 1795 steps
14 : 13 boxes 412 steps or (15, 333)
15 : 16 boxes 54 steps
16 : 7 boxes 429 steps
17 : 7 boxes 628 steps
18 : 7 boxes 758 steps
19 : 14 boxes 3116 steps or (16,2176)
* further levels are not done with these boxes
Does someone have higher scores than that ? They all give (+10/+10).
Jahooma's LogicBox Walkthrough
General Information
-
There is more than one solution to every level.
-
The screenshots show one of the solutions that will give a "Genius" rating.
-
In levels 1, 3, 6, and 8 you will build blocks that will be used later. If you build them inefficiently, your score on the later levels will suffer as well.
Solutions
New Update :
-Made Start and Redirect take 0 steps!
-The above change changes the scoring on every level, run your tests again to get your updated score.
-Tightened the scoring a lot on most levels! It is now much harder to get all geniuses. Also, if you get a 10 on your steps score, you are definitely good for using that box on later levels to get max score.
Level 12 can be solved with an entirely different logic as well
The main loop looks like this:
1. increment
2. rotate
3. compare
--- yes: rotate and goto 3
--- no: delete and goto 1
so you end up only incrementing the same digit repeatedly, rather than all of them. I watched for the end by fudging step 2 - in the middle you can check if copying to the end will make a compare succeed. I optimized it to 10 boxes, which is enough for a score of 19, but not 20.
It's a *lot* faster though.
Genius Score for Level 10:
Start -> "Add *" #1
"Add *" #1 -> "Rotate" #1
"Rotate" #1 -> "Add *" #2
"Add *" #2 -> "Compare2" #1
"Compare2" #1 green -> "Delete" #1
"Delete" #1 -> North exit
"Compare2" #1 red -> "Compare" #1
"Compare" #1 red -> "Rotate" #1
"Compare" #1 green -> "Compare2" #2
"Compare2" #2 red -> "Compare" #1
"Compare2" #2 green -> "Redirect" #1
"Redirect" #1 -> "Compare2" #2
I have completed all levels on genius except one. 19 is the only one i have not done. so is there someone who has completed it for genius. Here's my score so far:
Boxes/Steps
1.3/6
2.4/18
3.4/8
4.2/32
5.4/36
6.5/71
7.4/15
8.10/110
9.7/124
10.9/230
11.10/36
12.8/1234
13.8/1750
14.13/330
15.16/48
16.7/414
17.7/618
18.7/685
and currently for 19.16/2651 which is +9/+9.
Im 2 point off a perfect score.
Finally got the revised level 19 super genius
start-->isEmpty
isEmpty-green->out
isEmpty-red->add*(1)
add*(1)-->rotate
rotate-->add*(2)
add*(2)-->compare2(1)
compare2(1)-green->delete-->keepUnique-->load(1)->out
compare2(1)-red->load(2)-->store-->compare2(2)
compare2(2)-green->redirect->compare2(2)
compare2(2)-red->rotate
thanks for the advice wulfbane
I'm learning a lot about playing the game from the comments here, but no one has touched on an issue of pure curiosity for me--why do you level up? Is there a purpose that relates to the game? So far, I can't find any reasoning for it. It seems grinding for perfect scores only gives you the one or two points you're missing the first time around, so you grind for the shield, not the level-up points. Is it pertinent to the game? (as an RPG fanatic, I want it to mean something!)
got (11,6393) and (12,2619) (genius) on level 19
http://s1058.beta.photobucket.com/user/already_done/library/LogicBox
I love this game until the last three levels. Then we get into recursion.
And even when I see the solutions to those last three levels and get a genius score off them, I still don't understand how the recursive boxes work. I have no idea what a recursive box is going to do when I place it down, and why.
Leave a comment [top of page]
Walkthrough Guide
(Please allow page to fully load for spoiler tags to be functional.)
Jahooma's LogicBox Walkthrough
General Information
There is more than one solution to every level.
The screenshots show one of the solutions that will give a "Genius" rating.
In levels 1, 3, 6, and 8 you will build blocks that will be used later. If you build them inefficiently, your score on the later levels will suffer as well.
Solutions
Level 1
Level 2
Level 3
Level 4
Level 5
Level 6
Level 7
Level 8
Level 9
Level 10
Level 11
Level 12
Level 13
Level 14
Level 15
Level 16
Level 17
Level 18
Level 19
Posted by: cheeko | September 1, 2012 7:20 PM