Codeforces 143 A. Help Vasilisa the Wise 2
問題
4つの□に、1〜9の相違なる整数を入れる。
□□
□□
入れた後の数字の、各列の和、各行の和、対角線の和が与えられる。
このとき、数字の入れ方として正しいものをどれか1通り出力せよ。
正しい入れ方が存在しないときは-1を出力せよ。
制約条件
c1,c2,r1,r2,d1,d2≦20
方針
総当り。
rubyで書いてみた。
.permutationを使うと簡潔に書けるっぽい。
ソースコード
r1, r2 = gets.split(" ").map(&:to_i) c1, c2 = gets.split(" ").map(&:to_i) d1, d2 = gets.split(" ").map(&:to_i) for a11 in 1..9 for a12 in 1..9 for a21 in 1..9 for a22 in 1..9 if [a11, a12, a21, a22].uniq.length == 4 && a11+a12 == r1 && a21+a22 == r2 && a11+a21 == c1 && a12+a22 == c2 && a11+a22 == d1 && a12+a21 == d2 puts [a11, a12].join(" "), [a21, a22].join(" ") exit end end end end end p -1