0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

サイコロできるかな

Last updated at Posted at 2017-06-04

  • 追伸:FASTAフォーマットのパーサ、持っておくと塩基配列目的以外にもいろいろ便利ですよー
tyama_hena14.rb
# !/usr/bin/env ruby
# http://mtsmfm.github.io/2017/06/03/doukaku-e14.html
# http://qiita.com/mtsmfm/items/89b6634f363bbf5b47f5

def parsefasta(f)
	arc={}
	seq=[]
	line=f.gets
	line.chomp!
	name=line[1..-1]
	while line=f.gets
		line.chomp!
		if line[0,1]=='>'
			arc[name]=seq
			seq=[]
			name=line[1..-1]
		else
			seq<<line.chars.to_a
		end
	end
	arc[name]=seq
	arc
end

# cf: https://github.com/cielavenir/codeiq_solutions/blob/master/thisweek_masuipeo2/tyama_codeiq3106.rb
class Array
	def rotate180
		self.reverse.map(&:reverse)
	end
	def rotate90
		self.reverse.transpose
	end
	def rotate270
		self.transpose.reverse
	end
end

A=[
	[ # 反転
		lambda{|a|a},
		lambda{|a|a.map(&:reverse)},
	],[ # 回転
		lambda{|a|a},
		lambda{|a|a.rotate90},
		lambda{|a|a.rotate180},
		lambda{|a|a.rotate270},
	]
]
T=parsefasta(DATA).values.to_a

def solve(a)
	A[0].product(*A[1..-1]).each{|e|
		# 重複あるけど気にしないことにします…
		T.each{|b|
			c=e.reduce(b){|s,f|f.call(s)}
			(0..a.size-c.size).each{|sy|
				(0..a[0].size-c[0].size).each{|sx|
					h=Hash.new{|h,k|h[k]=[]}
					c.size.times{|y|
						c[0].size.times{|x|
							if c[y][x]!='*'
								h[c[y][x]]<< a[sy+y][sx+x]
							end
						}
					}
					if h.values.flatten.uniq.size==6 && h.all?{|k,v|v.reduce(:+)==7}
						return true
					end
				}
			}
		}
	}
	false
end

while gets
	p solve($_.chomp.split(',').map{|e|e.chars.map(&:to_i)})
	STDOUT.flush
end

__END__
>1
1***
2323
1***
>2
1***
2323
*1**
>3
1***
2323
**1*
>4
1***
2323
***1
>5
*1**
2323
*1**
>6
*1**
2323
**1*
>7
21**
*323
*1**
>8
21**
*323
**1*
>9
21**
*32*
**13
>10
21**
*323
***1
>11
121**
**323
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?