Guys, I really need your help. I have been working for 2 days on this puzzle and my head is on fire now
This is the algorithm I thought about :
Initialize game (bridge setting, initial speed etc…)
First loop, explore all game states (i) and leave out those that do not end up winning
Keep a running queue of game states (with the commands in string as a member)
Replay the sequence by dequeuing the game states every game loop
(i) Each gamestate node has :
Array of bikes (x,y, active or destroyed)
Bikes’ speed
Command (JUMP,WAIT , etc…)
Boolean “visited?”
and an array of Child nodes
Now for some reason, the search algorithm seems to keep using the DOWN command… the bike stays stationary in the first test case for example and I run out of moves…
I am sure my code is poorly written. It is my first time implementing something this complex (backtracing) and I would love to have some feedback on why it doesn’t work. I’d feel very frustrated if I have to start from scratch again … I feel like all it needs is some logic restructuring …
Here is my code : [EDIT: NO FULL CODE]
I made sure to insert comments everyone so you can understand my line of thought …
I havn’t read and checked everything but here’s some things:
-your down and up arn’t checking if bikes can move up or down. you just node.moto[i].y++; ?
-your check for negative speed seems wrong you are doing && !node.speed it should be && node.speed I think, when you put an int in place of a bool the 0 is false and everything else is true. So if you have &&node.speed if speed is 0 it wont decrement the speed
I would also avoid 0 speed because you dont want your code to stand still, it’s a trivial stupid solution that keeps all bikes alive. So I would have speed>1 on the SLOW.
-you seem worried to pass the end of the bridge, this is actually hurting you, the bridge extends infinitely the only problem in going past the end is you might segfault depending on your code. What I did was add extra squares in my representation of the bridge
-your death check on up and down will have to be better than that, look at the rule for falling into a hole when you go up or down
You know your code better than I do so check if the things I mention are actually true
It’s better for u to make some decision value.
If decision=0 then wait
if decision=1 then speed
if decision=2 then slow
if decision=3 then jump.
also you can make jumped value
and if jumped=1 then slow