8queen
研究室で再帰で組み合わせを出すコードを死ぬほど考えたが全く出来ず終わる頭の悪さだったので、
パターンを自分で考えずに他人に頼ることにした。
def eight_queen(n = 8, m = 8) run(n, m, []) end def run(kinds, len, a) return unless can_set_queen?(a) if len == 0 then puts a.join(',') else kinds.times do |i| run(kinds,len-1,a+[i]) end end end def can_set_queen?(a) return false if a.size != a.uniq.size a.each_with_index do |v, i| a.each_with_index do |vv, ii| next if i == ii diff = i - ii return false if vv == v - diff or vv == v + diff end end return true end eight_queen()