blob: c6c43390fa59e373bfcc2b5734757e76a80cfc72 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#!/usr/bin/env ruby
def turn(v)
return case v
when [0, 1]
[1, 0]
when [1, 0]
[0, -1]
when [0, -1]
[-1, 0]
when [-1, 0]
[0, 1]
end
end
input = gets.chomp.to_i
wid = 31
hei = 31
r = (hei + 1) / 2
c = (wid + 1) / 2
going = [0, 1]
grid = []
hei.times { grid << ([0] * wid) }
grid[r][c] = 1
loop do
r += going[0]
c += going[1]
grid[r][c] =
grid[r][c+1] +
grid[r+1][c+1] +
grid[r+1][c] +
grid[r+1][c-1] +
grid[r][c-1] +
grid[r-1][c-1] +
grid[r-1][c] +
grid[r-1][c+1]
break if grid[r][c] > input
try = turn(going)
going = try if grid[r+try[0]][c+try[1]] == 0
end
puts grid[r][c]
|