ひとつのサイコロの配置の数

ひとつのサイコロを特定の方向から見たばあい、その「見かけ」は全部で何とおりあるのでしょうか。
20180428164919
20180428164915
 
Ruby で解いてみました。コード。

table = {E: [3, 2, 6, 1, 5, 4], N: [5, 1, 3, 4, 6, 2],
         S: [2, 6, 3, 4, 1, 5], W: [4, 2, 1, 6, 5, 3],
         R: [1, 4, 2, 5, 3, 6], L: [1, 3, 5, 2, 4, 6]}
table1 = {}
table.each_key {|k| table1[k] = table[k].map(&:pred)}
      
throw = ->(dice) {
  memo  = [dice]
  stack = [dice]
  while (dice1 = stack.shift)
    [:E, :N, :S, :W, :R, :L].each do |c|
      next_dice = Array.new(6, 0)
      dice1.each_with_index do |d, i|
        next_dice[table1[c.to_sym][i]] = d
      end
      next if memo.include?(next_dice)
      memo  << next_dice
      stack << next_dice
    end
  end
  p memo
  puts memo.size
}

throw.([1, 2, 3, 4, 5, 6])

転がり方は上の図の N, S, E, W の方向の他、真上から見た左回転(L)と右回転(R)があります。いったん出た「見かけ」は変数 memo に入れておき、重複しないようにしています。幅優先探索で求めています。
 
結果。

[[1, 2, 3, 4, 5, 6], [4, 2, 1, 6, 5, 3], [2, 6, 3, 4, 1, 5], [5, 1, 3, 4, 6, 2],
 [3, 2, 6, 1, 5, 4], [1, 3, 5, 2, 4, 6], [1, 4, 2, 5, 3, 6], [6, 2, 4, 3, 5, 1],
 [2, 3, 1, 6, 4, 5], [5, 4, 1, 6, 3, 2], [4, 1, 5, 2, 6, 3], [4, 6, 2, 5, 1, 3],
 [6, 5, 3, 4, 2, 1], [3, 6, 5, 2, 1, 4], [2, 4, 6, 1, 3, 5], [3, 1, 2, 5, 6, 4],
 [5, 3, 6, 1, 4, 2], [1, 5, 4, 3, 2, 6], [2, 1, 4, 3, 6, 5], [5, 6, 4, 3, 1, 2],
 [6, 4, 5, 2, 3, 1], [6, 3, 2, 5, 4, 1], [3, 5, 1, 6, 2, 4], [4, 5, 6, 1, 2, 3]]
24

24とおりですか。

これはプログラミングで解かなくてもわかりますね。例えば上面を考えてそれは 6とおりあり、真上から見ての回転でそれぞれにつき 4とおりですから、6×4 = 24 とおりか。

なお、上のコードは N, S, E, W, R, L のすべての転がし方を考えていますが、じつは例えば E と N の 2種類の転がし方だけで同じ結果を得ることができます。