Comment écrire hors ligne en temps réel http://atnd.org/events/40389 Problème de référence (tortue le long de la route) http://nabetani.sakura.ne.jp/hena/ord12aloroturtle/ Exemple de mise en œuvre. rubis.
Exemples de réponses dans d'autres langues http://qiita.com/Nabetani/items/1de39df381dfeee305ab Vous pouvez suivre de.
alors. Je l'ai écrit en python, ce à quoi je ne suis pas habitué. Fonctionne à la fois avec python 3.3 et python 2.7.
Comme ça.
#coding:utf-8
import re
MAP = [
range(i*11, i*11+11) for i in range(0,3)
] + [
range(33+i*3, 33+i*3+3) for i in range(0,9)
]
def chars( start, len ) :
return [ chr(c) for c in range(ord(start),ord(start)+len) ]
NAMES=chars( "A", 26 ) + chars( "a", 26 ) + chars( "0", 10 )
def turn( d, r ):
return [r*d[1],-r*d[0]]
def name( t ):
return NAMES[ MAP[ t[0][1] & 0xff][ t[0][0] & 0xff] & 0xff]
def move(t):
n=name(t)
for warp in [[2,11,"efg"], [10,2,"567"]]:
if n in warp[2] and t[1][1]==1 :
t[0]=[warp[0]-warp[2].index(n),warp[1]]
t[1]=[0,-1]
break
else:
t[0][0]+=t[1][0]
t[0][1]+=t[1][1]
def solve( src ):
t=[[0,0],[1,0]]
r="A"
try:
for c in src :
if c=="L" or c=="R":
t[1]=turn(t[1], 1 if c=="L" else -1)
else:
for i in range(int(c,16)):
move(t)
r+=name(t)
except IndexError:
r+="?"
return r
def test( samples ) :
for line in samples.splitlines():
a=re.split( "\s+", line ) # num, input, expected
if 2<len(a):
actual = solve( a[1] )
ok=actual==a[2]
print( [ "ok" if ok else "***NG***", a[1:3], actual ] )
test( """
0 2RcL3LL22 ABCNYjmpsvy147edcbcdef
1 L3R4L5RR5R3L5 A?
40 6LR2R1LR5LRLRL484L63 ABCDEFGHITe741yxw?""" )
Comme d'habitude, la plupart des données de test sont omises.
La politique de mise en œuvre consiste à lire la carte afin qu'elle ait un système de coordonnées orthogonales et à la déformer là où elle est nécessaire.
45 lignes hors tests. Ce n'est pas comme si c'était long.
La méthode de nom & 0xff
sert à convertir un index négatif en un index invalide. Se sentir mal.
Cette fois, pour la première fois, j'ai essayé d'utiliser else et les exceptions dans l'instruction for. Je pense que l'exception est l'utilisation qui n'est pas bonne.
Cependant, peu importe le nombre de fois que je l'écris, l'expression if est désagréable.
Recommended Posts