過去ログ

なか
回転して一致するものを排除という条件がついたので、
120度回転対称を考慮して、数えて見ました。

上から下に、左から右に1〜9まで番号をつけたとき、
(1,3,4),(9,8,7),(5,6,2)と、
3つの台形に分けて考える。

台形の3ますを2進数に見立てると、
台形内で黒が並ばないのは 0,1,2,4,5 の5通り、
この台形を3つ環状に並べればよい。例題の形だと 450。
台形間の黒ますが不適となるのは、隣り合う台形の
値が 12 または 52 のときなのでこれを除けばよい。

紙に書いてもいけそうですが、perl ならこんな感じです。

foreach $a(0,1,2,4,5){
foreach $b(0,1,2,4,5){
foreach $c(0,1,2,4,5){
  if($a.$b.$c<=$b.$c.$a && $a.$b.$c<=$c.$a.$b){
    $ring=$a.$b.$c.$a;
    if($ring !~ /12/ && $ring !~ /52/){
      $n++;
      print "($n) $a,$b,$c\n";
    }
  }
}}}
北国   6月12日(金) 1:58:55   MAIL:naka@sansu.org HomePage:naka's Home Page  34635

過去問題一覧へ戻る