while c=$<.getc r=[] while c!=?: r<<[c.to_i] c=$<.getc end c=$<.getc pos=c.ord-56 s=0 r.each do |e| case (pos-e[0])%8 when 0 e<< true s+=1 pos+=1 when 1 e<< true s+=1 pos+=7 end end if s>0 8.times do |i| pos=i+9 r.reverse_each do |e| t=false case (pos-e[0])%8 when 0 t=true pos+=1 when 1 t=true pos+=7 end break if t&&e[1] end and putc 65+i end else (0..c.ord-66).each do |i| putc 65+i end (c.ord-64..7).each do |i| putc 65+i end end putc $<.getc end