めぐるセル
一瞬びびってしまったが、鍋谷さんの仰る通り確かに楽でした。
(backports gemが必要ですが)Ruby 1.8でも動作します。
それなりにDRYにしたつもり。
hena25.rb
#!/usr/bin/env ruby
#http://qiita.com/Nabetani/items/636fce060e1ebbc95f9b
#http://nabetani.sakura.ne.jp/hena/ord25rotcell/
if RUBY_VERSION<'1.9'
require 'rubygems'
require 'backports' # (Math.cbrtと異なり)1.8のArray#rotateはbackportsに存在するので、ありがたく使わせて頂きます
end
if $0==__FILE__
STDOUT.sync=true
while gets
str=''
area=[*'a'..'y'].each_slice(5).to_a
$_.chomp.split(',').each{|s|
x,y=2.times.map{|i|[*0...area[0].size].product([*0...area.size]).find{|x,y|area[y][x]==s[i,1]}}.transpose
minx,maxx=x.minmax.zip([-1,1]).map{|e|e.reduce(:+)}
miny,maxy=y.minmax.zip([-1,1]).map{|e|e.reduce(:+)}
x=minx
y=miny
rotaters=[]
rotaters<<[x+=1,y] while x<maxx
rotaters<<[x,y+=1] while y<maxy
rotaters<<[x-=1,y] while x>minx
rotaters<<[x,y-=1] while y>miny
rotaters=rotaters.select{|x,y|0<=y&&y<area.size && 0<=x&&x<area[y].size}
str=rotaters.map{|x,y|area[y][x]}.rotate(-1)
rotaters.each_with_index{|(x,y),i|area[y][x]=str[i]}
}
puts str.empty? ? :none : str.sort*''
end
end
Author And Source
この問題について(めぐるセル), 我々は、より多くの情報をここで見つけました https://qiita.com/cielavenir/items/66fd3fa5472b830977cb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .