プログラミングのお題スレ Part3
■ このスレッドは過去ログ倉庫に格納されています
0058デフォルトの名無しさん
2014/02/01(土) 17:27:30.38伝家の宝刀「なぜか動いた」。脳みそ0mgでお送りします。
少なくとも1..101と1..1001のときなぜか答えを返すのを確認。
def f52(r)
trios = r.inject([]) {|trios, i|
cs = i.to_s.scan(/./)
l, r = cs.first.to_i, cs.last.to_i
r == 0 ? trios : trios << [l, i, r]
}
l, r = [trios.shift], [trios.pop]
while 0 < trios.size
trio = trios.shift
if l.last.last == trio.first
l.push trio
elsif trio.last == r.first.first
r.unshift trio
else
trios.push trio
trios.push l.pop if 1 < l.size
end
end
l.last.last == r.first.first ? (l + r).map {|trio| trio[1]} : nil
end
p f52(1..1001)
■ このスレッドは過去ログ倉庫に格納されています