rubyで魔方陣 その2

rubyで魔方陣 その2

Gaucheとおなじく総当たりでループを選別してまわすことをやめてみるとrubyの方が遅かった。
こりゃやっぱ自分のGaucheの使い方がダサいんだな。

(1..9).to_a.permutation(3).each{|a|
  (1..9).to_a.reject{|i|a.include?(i)}.permutation(3).each{|b|
    (1..9).to_a.reject{|i|a.include?(i)||b.include?(i)}.permutation.each{|c|
      x = a[0]+a[1]+a[2]
      p [a,b,c].flatten if x==b[0]+b[1]+b[2] && x==c[0]+c[1]+c[2] && x==a[0]+b[1]+c[2] && x==a[2]+b[1]+c[0] && x==a[0]+b[0]+c[0] && x==a[1]+b[1]+c[1] && x==a[2]+b[2]+c[2]
    }
  }
}
#=>real	0m1.369s
#=>user	0m1.356s
#=>sys	0m0.008s