第23回オフラインリアルタイムどう書くの問題をリアルタイムでなくRubyで解く


残念ながらリアルタイム参加できませんでした。
問題はこちら
http://nabetani.sakura.ne.jp/hena/ord23snakemoinc/

def count(bd, i)
  [-1,1,-6,6].map{|d|
    bd[i + d].to_i > bd[i].to_i ? count(bd, i + d) + 1 : 1
  }.max
end

def solve(q)
  bd = '/'*6 + q + '/'*6
  (0..bd.size-1).map{|i| bd[i]=='/' ? 0 : count(bd, i)}.max
end

DATA.readlines.each do |line|
  no,q,a,_ = line.split(/\s+/)
  ans = solve(q)
  print no + "\t" + ans.to_s
  puts ans.to_s == a ? ' o' : ' x'
end
__END__
0   01224/82925/69076/32298/21065   6   0,1,2,3,6,8 
1   03478/12569/03478/12569/03478   10  0,1,2,3,4,5,6,7,8,9 
2   09900/28127/87036/76545/87650   10  0,1,2,3,4,5,6,7,8,9 
3   77777/77777/77777/77777/77777   1   7   
4   00000/11111/22222/33333/44444   5   0,1,2,3,4   
5   01234/12345/23456/34567/45678   9   0,1,2,3,4,5,6,7,8   
6   10135/21245/43456/55567/77789   8   0,1,2,4,5,7,8,9 
7   33333/33333/55555/55555/77777   2   3,5 
8   01234/11234/22234/33334/44444   5   0,1,2,3,4   
9   98765/88765/77765/66665/55555   5   5,6,7,8,9   
10  01234/10325/23016/32107/45670   8   0,1,2,3,4,5,6,7 
11  34343/43434/34343/43434/34343   2   3,4 
12  14714/41177/71141/17414/47141   3   1,4,7   
13  13891/31983/89138/98319/13891   4   1,3,8,9 
14  01369/36901/90136/13690/69013   5   0,1,3,6,9   
15  02468/24689/46898/68986/89864   6   0,2,4,6,8,9 
16  86420/68642/46864/24686/02468   5   0,2,4,6,8   
17  77777/75557/75357/75557/77777   3   3,5,7   
18  53135/33133/11111/33133/53135   3   1,3,5   
19  01356/23501/45024/61246/13461   5   0,1,3,5,6   
20  46803/68025/91358/34792/78136   4   0,3,5,8 
21  66788/56789/55799/43210/33211   9   0,1,2,3,5,6,7,8,9   
22  40000/94321/96433/97644/98654   9   0,1,2,3,4,6,7,8,9   
23  58950/01769/24524/24779/17069   6   0,2,4,5,7,9 
24  97691/01883/98736/51934/81403   4   0,3,4,6 
25  92049/27798/69377/45936/80277   5   3,6,7,8,9   
26  97308/77113/08645/62578/44774   5   0,1,4,6,8   
27  90207/17984/01982/31272/60926   6   0,1,2,7,8,9 
28  62770/65146/06512/15407/89570   4   0,1,2,6 
29  93914/46889/27554/58581/18703   5   2,4,6,7,8   
30  42035/12430/60728/30842/90381   5   0,3,4,7,8   
31  90347/53880/67954/95256/68777   6   0,3,5,6,7,9 
32  05986/60473/01606/16425/46292   5   0,4,7,8,9   
33  18053/90486/24320/04250/03853   5   0,2,3,4,8   
34  36865/13263/67280/18600/12774   5   0,3,5,6,8   
35  72456/72052/79971/14656/41151   5   1,2,5,7,9   
36  94888/28649/05561/76571/97567   5   0,5,6,7,9   
37  50214/94693/88718/78922/55359   5   0,2,6,7,8   
38  76502/99325/17987/31737/93874   7   0,2,3,5,6,7,9   
39  87142/14764/13014/00248/73105   6   0,1,3,4,7,8 
40  24573/71679/48704/19786/91834   7   1,4,5,6,7,8,9   
41  20347/61889/06074/61263/20519   7   0,1,2,6,7,8,9   
42  74344/97459/97302/14439/35689   6   0,3,4,6,8,9 
43  04794/52198/50294/09340/24160   5   1,2,4,7,9   
44  41065/69344/64698/54167/43348   7   1,3,4,6,7,8,9   
45  39947/15696/03482/19574/70235   7   0,3,4,5,7,8,9   
46  92767/16790/84897/69765/75734   7   3,4,5,6,7,8,9   
47  09654/79610/05070/23456/74687   8   0,2,3,4,5,6,7,8 
48  73998/98799/98707/05633/23915   8   0,2,3,5,6,7,8,9 
49  35661/17480/89723/64335/27217   7   1,2,3,4,6,8,9   
50  02489/77571/84873/03879/84460   7   0,2,4,5,7,8,9