Puzzle Level Limit

This forum is for discussions related to the Runaway Robot puzzle
Post Reply
User avatar
bok
Site Admin
Posts: 24
Joined: Tue Jan 30, 2007 11:49 pm

Puzzle Level Limit

Post by bok »

At the moment, the server is not able to generate puzzle boards beyond level 513... so if your solver gets there, you're get a server error (500 Internal Server Error) when you try to post your solution to 513...
We might fix this in the future. For now, consider that you've "reached the end" if you get to 513
raft
Posts: 1
Joined: Thu Feb 26, 2009 5:41 pm

Post by raft »

indeed it accepts solution of 513, sends 514, but does not accept solution of 514, saying 513 is max and my solution sucks :/
boyo1991
Posts: 5
Joined: Sat Dec 19, 2009 4:58 am

Post by boyo1991 »

i have reached lvl 20 on this puzzle... how come i cant post still.... (it says lvl 21 on it..)
Dumbear
Posts: 1
Joined: Wed Jul 22, 2009 3:28 am

Post by Dumbear »

Will you fix it? That's I expected!
uws8505
Posts: 32
Joined: Sun Jan 23, 2011 8:57 pm

Post by uws8505 »

I finally solved 513...
(I'm using C++ and text file I/O, so it took more than a minute to copy/paste the board into
the text file and a few seconds to get the answer :D )

...and I could get the answer for 514, but answer submission for 514 seems to be currently blocked.

I want to know if there is some possibility that there will be more problems for this puzzle...?
jonik555
Posts: 43
Joined: Mon Aug 31, 2009 6:18 pm
Location: Prague

Post by jonik555 »

I think it wouldnt be any useful to have more levels. Think that there isn't any better algorhytm than mine one and also that everybody who solved last level used the same.
There are 10 types of people, those who understand ternary, those who think that this joke is about binary and the others.
User avatar
CodeX
Posts: 350
Joined: Fri Oct 17, 2008 5:28 pm

Post by CodeX »

If you really want to see how your program fares at higher levels you can generate them yourself fairly easily imagine, just create a n*m grid where each tile is given by something like:

Code: Select all

*tile = ( (float)rand()/(float)RAND_MAX ) >= density ? '.' : 'X'
where density is the likelihood of a tile being non-traversable. Then determine some min & max move values then generate a random path of random length between min and max, then go over that path on the grid and make them all .s and finally spit it all out in a form you can work with.
User avatar
CodeX
Posts: 350
Joined: Fri Oct 17, 2008 5:28 pm

Post by CodeX »

I figured I'd throw some Python together to generate levels for you to test your RR solver with and so here it is! Frankly it's a bit lame but does use the same pattern that the existing challenges use to give the grid dimension and minimum+maximum moves so might be of interest if you wanted to use the same method for whatever sadistic reason.

Code: Select all

# resulting levels will have over 2^30 tiles by level 2,147,483,642
def methodA(n):
	dimension = (n//2) + 3
	minimum = n//6 + 2
	maximum = n//24*7 + (1,1,2,2,2,2,3,3,3,3,4,4,5,5,5,5,5,5,7,7,7,7,7,7)[n%24]+1
	return (dimension,minimum,maximum)

# resulting levels will have over 2^30 tiles by level 1067
def methodB(n):
	dimension = 253 + int(30.5*n)
	minimum = 65 + int(61*(n+2)/6)
	maximum = 165 + (n-1)//11*196 + (0,18,36,54,72,90,107,125,142,161,179)[(n-1)%11]
	return (dimension,minimum,maximum)
methodA is employed on levels 1 to 500 and methodB works for 501-514 (n at 501 = 1) and maybe beyond but there isn't much to go on. As the comments show; methodB gets unmanageable rather quickly when compared to methodA.

The following code generates a random matrix then clears a path through it:

Code: Select all

from random import *
def generate(info):
	dim,min,max = info
	matrix = [[ choice(('.','X')) for tile in range(dim)] for row in range(dim)]
	path = ''.join([ choice(('R','D')) for step in range(randint(min,max))])
	
	x = y = pos = 0
	while x < dim and y < dim:
		matrix[y][x] = '.'
		if path[pos % len(path)] == 'R': x +=1
		else: y += 1
		pos += 1
		
	return ''.join([''.join(row) for row in matrix])
Finally this last bit uses the above code generate levels that resemble the online level, these levels are then passed to a solver but you'd probably want to change it a bit if you were to ever use it (aside from Solver.exe to your program name):

Code: Select all

from os import system
def useFVString(s):
	system("Solver.exe %s"%(s))
	
level = 1
while level <= 500:
	info = methodA(level)
	FVString = "FVterrainString=%s&FVinsMax=%i&FVinsMin=%i&FVboardX=%i&FVboardY=%i&FVlevel=%i"%(generate(info),info[2],info[1],info[0],info[0],level)
	useFVString(s)
	level += 1 

while True:
	info = methodB(level-500)
	FVString = "FVterrainString=%s&FVinsMax=%i&FVinsMin=%i&FVboardX=%i&FVboardY=%i&FVlevel=%i"%(generate(info),info[2],info[1],info[0],info[0],level)
	useFVString(s)
	level += 1
All work and no play makes Ollie a dull boy.
trofi
Posts: 23
Joined: Mon Oct 14, 2013 7:20 pm

Re: Puzzle Level Limit

Post by trofi »

bok wrote:At the moment, the server is not able to generate puzzle boards beyond level 513... so if your solver gets there, you're get a server error (500 Internal Server Error) when you try to post your solution to 513...
We might fix this in the future. For now, consider that you've "reached the end" if you get to 513
Is it still valid? Server returns 200 now, but a bit confusing error:

Code: Select all

max level is 513
your solution sucked
No matter valid answer you post or not. It's not clear if it's solvable.
Thanks!
AMindForeverVoyaging
Forum Admin
Posts: 496
Joined: Sat May 28, 2011 9:14 am
Location: Germany

Post by AMindForeverVoyaging »

bok has run away long ago, so I don't think that asking him will yield an answer ;)

To the best of my knowledge, 513 is still the limit.
Post Reply