Lost Viking (new level) feedback


#1

First time posting, please don’t hesitate to offer guidance. Looking forward to giving regular feedback and bug descriptions.

Gave this new level a try, and I haven’t managed to complete it with default Anya/Tharin (no speed boosts like Ring of Speed). It is winnable with speed boosts or a much faster hero.

Problems so far:

  1. Time to complete too short.
    The goal is reached after 35 steps (x: 140), with a time limit of 50 seconds.
    On my best attempt with default Anya/Tharin, I had just finished step 28 (x: 112) when time ran out.
    Suggestion: Set time limit to 70 seconds or more. (2 seconds per step * 35 steps needed) should be enough for a correct solution to work for the slowest hero for any of the level layout variations.

#2

Good catch. I expanded the level’s time limit. Need to remember to unequip my speed ring while testing :stuck_out_tongue:


#3

Haha great, thought that might be the case.


#4

What is wrong ?

while steps <= 35:
 
    # Take the next step:
    self.moveXY(steps * X_PACE_LENGTH, sideSteps * Y_PACE_LENGTH)
    
    # Increment steps and sideSteps as appropriate, taking into account the special rules.
    steps += 1
    
    if steps%7 ==0:
        sideSteps-=1
    
        
    elif steps%11 ==0:
        sideSteps*=2
    else:
        sideSteps+=1

#5

If your numbers are 7 and 11 then I think the following applies…

Looks like you aren’t quite doing this one

  • When the number of steps you have taken is divisible by 7,
    you SWITCH to sideStepping south instead of north.
    (The 7th step will be to the north, the 8th to the south).

What is the starting value of “steps” then look at the order you do “moveXY”, “steps += 1”, and “steps%7”…

and the other seems like the same idea. Did you mean to have “*=2”?

(psst, is once enough?)

#6

The 7th step will be to the north, the 8th to the south .
And the 9th step ? North or south ?


#7

I’ve made some changes to the help guide that should hopefully clarify the puzzle. Thanks for testing :smile:


#8

It’s not a new level anymore, but I found an issue:

I tried the level on a guest account (not signed in) and was able to easily pass it using basic equipment just by using a lot of moveXY()s.
For example:

self.moveXY(24, 34)
self.moveXY(38, 15)

self.moveXY(40, 15)
self.moveXY(44, 55)

self.moveXY(52, 55)
self.moveXY(56,8)

self.moveXY(72,25)

self.moveXY(83,8)
self.moveXY(88,57)
self.moveXY(96,49)
self.moveXY(104,57)

self.moveXY(108,11)
self.moveXY(120,29)
self.moveXY(135,10)
self.moveXY(140,63)

The above code passed the level and I got the rewards and helmet without even having acquired the first sword yet.


#9

I think the underlying problem is that there is no way to pass information from the referee (the brain of the level) to the player on program-start. You can only do it via hints (here: bird), and that information is necessarily static. But static information is bad, because you can overfit a program to it. As far as I know though this problem is already being tackled by our code wizards. If this particular level will be changed afterwards remains to be seen though.


#10

I passed the level the “right” way, but first I found that it is quite easy to use a boss star to summon an ally and command him/her to walk into the nearest fire trap (unless the goal coordinates change after you hit “submit” or something, I guess).


#11

Levels such as this and Sand snakes should disallow boss stars.
Maybe there should be a way to require having nothing equipped in a particular slot as opposed to banning individual items.


#12

hi, i have this for javascript:

var SLIDE = 10;
var SWITCH = 6;
var SKIP = 9 ;
var S = 1;

var sideSteps = 1;

var steps = 1;

var X_PACE_LENGTH = 4;

var Y_PACE_LENGTH = 6;

while (steps <= 35)
{
    this.moveXY((steps*X_PACE_LENGTH),(sideSteps*Y_PACE_LENGTH));
    if (steps%SWITCH === 0)
    
        S = -S;
    
    if (steps%SKIP === 0)
    
        sideSteps += S;
    
    sideSteps += S;
    
     if (sideSteps < 1)
     
         sideSteps = SLIDE;
     
     if (sideSteps > SLIDE)
     
         sideSteps = 1;
     
    steps += 1;
}

#13

[redacted, we don’t post correct code]
try this code, it worked for me


#14

Please completely format your code according to the discourse FAQ.


#15

Also, I passed it by using self.moveXY() relative to my position. I don’t know if there is any edit that can be made to solve this problem though.


#17

@xXSWAGGERXx please avoid posting level solutions. That takes away the whole point of the game.

(in any case, the solution you have posted with hardcoded moveXY coordinates would only work for you; the level map is randomized for each player)