fork download
  1. =begin
  2.  
  3. 132 : 2023/10/16(月) 08:51:26.93 : デフォルトの名無しさん : ID:kgcCjrnK
  4.   1)
  5.   BY
  6.   RG
  7.  
  8.   2)
  9.   RG
  10.   BY
  11.  
  12.   3)
  13.   GR
  14.   YB
  15.  
  16.   1-3を回転対称で同じとみなせるグループと線対称で同じとみなせるグループに分類せよ
  17.  
  18.   4色を2x2の升にランダムに一つづつ配置して4x3x2通りのパターンを作成し
  19.   それぞれを上の基準でグループ分けせよ
  20.  
  21. =end
  22.  
  23. #> 4色を2x2の升にランダムに一つづつ配置して4x3x2通りのパターンを作成し
  24. # この文は曖昧で分かりづらいと思う
  25. # 二通りの解釈で回答してみる
  26.  
  27.  
  28. def solution( m )
  29. m.each_with_index{|n,i|
  30. print "%3d) " % [i+1], n[0..1], "\n ", n[2..3], "\n"
  31. }
  32. sym = Array.new(3){ [] }
  33. (0...m.size).to_a.combination(2){|i,j|
  34. mi = m[i].chars
  35. mj = m[j].chars
  36. s = case
  37. when mi == mj # 同一
  38. 0
  39. when mi[0] == mj[2] && mi[1] == mj[0] && mi[2] == mj[3] && mi[3] == mj[1] || # 回転対称
  40. mi[0] == mj[3] && mi[1] == mj[2] && mi[2] == mj[1] && mi[3] == mj[0] ||
  41. mi[0] == mj[1] && mi[1] == mj[3] && mi[2] == mj[0] && mi[3] == mj[2]
  42. 1
  43. when mi[0] == mj[2] && mi[1] == mj[3] && mi[2] == mj[0] && mi[3] == mj[1] || # 線対称
  44. mi[0] == mj[1] && mi[1] == mj[0] && mi[2] == mj[3] && mi[3] == mj[2] ||
  45. mi[0] == mj[0] && mi[1] == mj[2] && mi[2] == mj[1] && mi[3] == mj[3] ||
  46. mi[0] == mj[3] && mi[1] == mj[1] && mi[2] == mj[2] && mi[3] == mj[0]
  47. 2
  48. else
  49. next
  50. end
  51. sym[s] << [ i, j ]
  52. }
  53. sym.each_with_index{|n,i|
  54. print "同回線"[i], ": ", n.map{|x| "#{x[0]+1}-#{x[1]+1}" }.join(', '), "\n"
  55. }
  56. puts
  57. end
  58.  
  59. ##############################################################################
  60.  
  61. # 1-3
  62. solution( %w{ BYRG RGBY GRYB } )
  63.  
  64. # ランダムに一つづつ配置して4x3x2通り
  65. solution( Array.new(4*3*2){ 'RGBY'.chars.shuffle.join } )
  66.  
  67. # 順列 (4P4通り)をシャッフルして配置
  68. solution( 'RGBY'.chars.permutation.map{|a| a.join }.shuffle )
  69.  
Success #stdin #stdout 0.01s 6372KB
stdin
Standard input is empty
stdout
  1) BY
     RG
  2) RG
     BY
  3) GR
     YB
同: 
回: 1-3
線: 1-2, 2-3

  1) BY
     RG
  2) RG
     BY
  3) YR
     BG
  4) BY
     GR
  5) RY
     GB
  6) BY
     GR
  7) BG
     YR
  8) BR
     GY
  9) BY
     GR
 10) GR
     YB
 11) RB
     YG
 12) GY
     RB
 13) GB
     YR
 14) RY
     BG
 15) YR
     GB
 16) BG
     RY
 17) BR
     YG
 18) BG
     RY
 19) GR
     BY
 20) YR
     GB
 21) RG
     BY
 22) RG
     BY
 23) BG
     YR
 24) YR
     BG
同: 2-21, 2-22, 3-24, 4-6, 4-9, 6-9, 7-23, 15-20, 16-18, 21-22
回: 1-10, 2-12, 2-17, 3-4, 3-6, 3-9, 4-24, 5-7, 5-19, 5-23, 6-24, 7-19, 8-13, 8-14, 9-24, 11-15, 11-16, 11-18, 11-20, 12-17, 12-21, 12-22, 13-14, 15-16, 15-18, 16-20, 17-21, 17-22, 18-20, 19-23
線: 1-2, 1-12, 1-17, 1-21, 1-22, 2-10, 3-5, 3-7, 3-19, 3-23, 4-5, 4-7, 4-19, 4-23, 5-6, 5-9, 5-24, 6-7, 6-19, 6-23, 7-9, 7-24, 8-11, 8-15, 8-16, 8-18, 8-20, 9-19, 9-23, 10-12, 10-17, 10-21, 10-22, 11-13, 11-14, 13-15, 13-16, 13-18, 13-20, 14-15, 14-16, 14-18, 14-20, 19-24, 23-24

  1) BY
     RG
  2) BR
     YG
  3) YG
     RB
  4) YB
     GR
  5) RY
     GB
  6) GB
     YR
  7) YR
     GB
  8) RG
     BY
  9) BY
     GR
 10) GB
     RY
 11) RB
     YG
 12) GY
     RB
 13) YR
     BG
 14) BG
     RY
 15) RY
     BG
 16) RB
     GY
 17) GY
     BR
 18) RG
     YB
 19) YB
     RG
 20) GR
     YB
 21) BR
     GY
 22) BG
     YR
 23) GR
     BY
 24) YG
     BR
同: 
回: 1-16, 1-20, 1-24, 2-4, 2-8, 2-12, 3-6, 3-15, 3-21, 4-8, 4-12, 5-19, 5-22, 5-23, 6-15, 6-21, 7-11, 7-14, 7-17, 8-12, 9-10, 9-13, 9-18, 10-13, 10-18, 11-14, 11-17, 13-18, 14-17, 15-21, 16-20, 16-24, 19-22, 19-23, 20-24, 22-23
線: 1-2, 1-4, 1-8, 1-12, 2-16, 2-20, 2-24, 3-7, 3-11, 3-14, 3-17, 4-16, 4-20, 4-24, 5-9, 5-10, 5-13, 5-18, 6-7, 6-11, 6-14, 6-17, 7-15, 7-21, 8-16, 8-20, 8-24, 9-19, 9-22, 9-23, 10-19, 10-22, 10-23, 11-15, 11-21, 12-16, 12-20, 12-24, 13-19, 13-22, 13-23, 14-15, 14-21, 15-17, 17-21, 18-19, 18-22, 18-23