2015渋谷幕張中算数大問5「ひっくり返す」って何だ!?

2015渋谷幕張中からもう1問
2015makuhari5

【問題】
同じ大きさの立方体をいくつか使って、立方体の面どうしをはり合わせることで新しい立体をつくります。立方体の面どうしをはり合わせるときは、どこもずれずにぴったり重なるようにします。このようにしてできる立体のうち、回転したりひっくり返したりして同じ形になる立体は同じ種類の立体とします。例えば、3 個の立方体を使ってできる新しい立体は、図のような2 種類です。

次の各問いに答えなさい。
(1) 4 個の立方体を使ってできる新しい立体は全部で何種類ですか。
(2) 5 個の立方体を使ってできる新しい立体は全部で何種類ですか。

どうなんだろう? 「ひっくり返す」って意味。
ひっくり返すがもし鏡像を意味するのなら,(1)7種類, (2)23種類が正解だ。
回転するが2次元の回転,ひっくり返すが3次元の回転を意味するとすれば,鏡像は区別することになるので(1)8種類, (2)29種類

採点はどのようにされるのだろうか?

— posted by GKT at 07:39 pm   commentComment [0]  pingTrackBack [0]

 

2015渋谷幕張中算数大問2(2)(3)をMathematicaで検算

昨年より全般に難しかった渋谷幕張の算数。本問を書き出しで正解出来た少年少女には頭が下がります。いやほんと。それな^^;

【問題】
図1のように,6 つの座席①,②,...,⑥と「待機場所」があり,座席にA,B,C,D,E,Fの6人が座っています。

2015makuhari2

次のような[約束]で移動をくり返して席がえをします。ただし,席がえ後,もとの座席と同じ座席に座っている人がいてもよいことにします。

[約束]
・座席または「待機場所」のうち,空いているところへ1 人移動します。
・向じ人が続けて移動することはできません。

なお,移動の回数を数えるときは,「待機場所」への移動も「待機場所」から空いた座席への移動もそれぞれ1 回と数えることにします。
次の各問いに答えなさい。

(1)略
(2)図1 の座席から,ちょうど4 回の移動で席がえが終わりました。考えられる新しい座席は何通りですか。
(3)図1 の座席から席がえが終わるまで,移動の回数が最も少なくなる場合で6 回になるような新しい座席は何通り考えられますか。

【解答】
  (以下で$m_n$はモンモール数(攪乱数列の総数)Link ,$m_1=0, m_2=1, m_3=2, m_4=9, m_5=44,...$を表します。)

(1) $4$回移動すると,$3$人の座席が入れ替わるので,$3$人の選び方$\times$入れ替わり方を計算する。
$${}_6C_3\times m_3=40\text{(通り)}$$
(3) $3$回の移動で2人ずつの座席が入れ替わるか,または$6$回の移動で$5$人の座席が入れ替わると考えるが,
  $5$人が,$2$人,$3$人それぞれの間で入れ替わっているものは,$7$回かかるので,省かなければいけない。
$${}_6C_2\times m_2\times m_2\times {}_4C_2\times\frac12+ {}_6C_1\times (m_5-m_2\times m_3\times{}_5C_2)=189\text{(通り)}$$

【Mathematicaでブルートフォース検算】
  • A,B,C,D,E,Fには$n=$$1$〜$6$の番号を与え,待機場所は$x$とすると,交換の対象をリスト$\{1,2,3,4,5,6,x\}$で表せる。
  • 1回の移動は,$n$と$x$の交換だと考えられるので,そういう交換を連ねた順列を用意する。
  • ただし,同じ交換が2度つづくものは省いておく。
  • 交換の順列をリスト$\{1,2,3,4,5,6,x\}$に次々に適用し,第7要素が$x$であるものだけを取り出し,重複を省いて並べる。
  • $xlist$…4回交換後のリストのリスト
  • $ylist$…6回交換後のリストのリスト
  • $zlist$…1〜5回交換後のリストのリスト
  • (1)は$xlist$の要素数を数えれば好い
  • (2)は$ylist$から$zlist$と共通のものを省いたあとの要素数を数えれば好い

ClearAll["Global`*"];
xlist={};
xch=Range[1,6];
xchs=Tuples[xch,4];
xchs=DeleteCases[xchs,{___,a_,a_,___}];
For[i=1,i<= Length[xchs],i++,
y={1,2,3,4,5,6,x};
For[j=1,j<= Length[xchs[[i]]],j++,
y=y/.{xchs[[i,j]]->x,x-> xchs[[i,j]]}
];
xlist=Append[xlist,y];
]
xlist=Cases[xlist,{__,x}]//DeleteDuplicates;

ylist={};
xch=Range[1,6];
xchs=Tuples[xch,6];
xchs=DeleteCases[xchs,{___,a_,a_,___}];
For[i=1,i<= Length[xchs],i++,
y={1,2,3,4,5,6,x};
For[j=1,j<= Length[xchs[[i]]],j++,
y=y/.{xchs[[i,j]]->x,x-> xchs[[i,j]]}
];
ylist=Append[ylist,y];
]
ylist=Cases[ylist,{__,x}]//DeleteDuplicates;

zlist={};
xch=Table[Range[1,6],{k,1,5}]//Flatten;
xchs=Permutations[xch,5];
xchs=DeleteCases[xchs,{___,a_,a_,___}];
For[i=1,i<= Length[xchs],i++,
y={1,2,3,4,5,6,x};
For[j=1,j<= Length[xchs[[i]]],j++,
y=y/.{xchs[[i,j]]->x,x-> xchs[[i,j]]}
];
zlist=Append[zlist,y];
]
zlist=Cases[zlist,{__,x}]//DeleteDuplicates;

Print["(2)",Length[xlist],"通り"]
Print["(3)",Length[ylist]-Length[ylist\[Intersection]zlist],"通り"]


(2)40通り
(3)189通り

— posted by GKT at 02:53 pm   commentComment [0]  pingTrackBack [0]

2015開智先端A大問4(3)(4)をMathematicaでオトナ解き

ここは毎年こういう無理筋の問題を出す。

【問題】
長針と短針の長さが同じ時計があります.どちらの針も,それぞれ一定の速さで動いています.
夜中の0時から昼の12時までの半日の間で時刻を考えます.
但し昼の12時ちょうどは除きます.
(1)(2) 略
(3) この時計から読み取れる時刻が2通りになってしまう時刻は何回ありますか.
(4) (3)の中で,長針と短針の針の間の角が最も大きくなるときの角度は何度ですか.ただし,間の角は180度以下とします.

↓Mathematicaコード(実際に解いているのはFor文の中)
ClearAll["Global`*"]; a = {};
mn[r_] := {IntegerPart[r], Rationalize[r - IntegerPart[r]]};
For[m = 0, m < 12, m++,
 For[n = 0, n < 12, n++,
  If[m != n,
   a = Append[a, Flatten[{m, mn[5 n + y], n, mn[5 m + x],
        Min[360 - Abs[5 n + y - 5 m - x]*6, Abs[5 n + y - 5 m - x]*6], ""}
       /. Solve[{12 x - y == 5 n, 12 y - x == 5 m, 0 < x < 5, 0 < y < 5}, {x, 
         y}]]]]]]
b = a /. 0 -> ""; maxAngle = 0;
For[i = 1, i <= Length[a], i++,
 maxAngle = Max[a[[i, 7]], maxAngle]]
Print["時刻の総数:", Length[a]]
Print["最大の角:", mn[maxAngle][[1]], mn[maxAngle][[2]], "度"]
Print["以下が全ての場合:"]
For[i = 1, i <= Length[a], i++,
 a[[i, 8]] = If[a[[i, 7]] == maxAngle, "(最大)", ""];
 Print["(", i, ") ", ToExpression["0" <> ToString[b[[i, 1]]]], "時",
  b[[i, 2]], b[[i, 3]], "分は", ToExpression["0" <> ToString[b[[i, 4]]]], "時",
  b[[i, 5]], b[[i, 6]], "分とも読め,このとき両針間の小さい方の角度は", " ",
  mn[a[[i, 7]]][[1]], mn[a[[i, 7]]][[2]], "度", a[[i, 8]]]]

↓実行結果

時刻の総数:132

最大の角:166$\frac2{13}$度

以下が全ての場合:

(1) 0時5$\frac{5}{143}$分は1時$\frac{60}{143}$分とも読め,このとき両針間の小さい方の角度は 27$\frac9{13}$度

(2) 0時$10\frac{10}{143}$分は2時$\frac{120}{143}$分とも読め,このとき両針間の小さい方の角度は 55$\frac5{13}$度

(3) 0時15$\frac{15}{143}$分は3時1$\frac{37}{143}$分とも読め,このとき両針間の小さい方の角度は 83$\frac1{13}$度

……(以降略)

— posted by GKT at 09:52 am   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0957 sec.
prev
2015.1
next
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31