平成13年3月24日

[流れ星]
第70回
数学的な応募問題
<解答募集期間:3月4日〜3月18日>
[マグネット]
太郎さんは、問題を説明するときに、教材としてときどきマグネットを使用します。
今、赤、白、青それぞれn個、計3n個のマグネットを準備しています。このマグネットを全部使って、1列に並べたいと思っています。ただし、隣り合うマグネットの色は異なるとし、左右は区別するものとします。
ここで、問題です。
問題1:n=1のとき、このような並べ方は何通りあるか。
問題2:n=2のとき、このような並べ方は何通りあるか。
問題3:n=3のとき、このような並べ方は何通りあるか。
太郎さんはn=3までしか、答を知りません。だから、一般に、nについての考え方を見いだしていません。どなたか教えてください。
NO1<「Iga」さん>からの解答 3月16日11時11分受信、3月16日更新
『お久しぶりです、Igaです。うまい考え方が分からないので、(仮称)十進BASICでプログラムを組んで、力まかせに答えだけを求めてみました。とりあえず結果を送ります。
<エクセルなどのマクロの知識があれば、もっとスマートに求められたのかもしれませんが…> N=1 のとき 6通り
N=2 のとき 30通り
N=3 のとき 174通り
ここまでは、「6倍して6を引く」という風になっていたので、次もそうかなと思っていたら、
N=4 のとき 1092通り
N=5 のとき 7188通り
N=6 のとき 48852通り
という結果が出たので、よく分からなくなってしまいました。ちなみに、N=6のときの計算時間は15時間ほどでした。(PCの力を借りた、本当に力まかせです。)
せっかく結果が出たので、とりあえず送ります。もう少し考えてはみますが…わかるかどうか…。では、また。』
* <太郎さんのコメント:実はN=3までした、答えを出していません。樹形図を書いて、3つの色の対象性から6の倍数であることには気がついていました。このように未知の問題が解けると気持ちがいいものです。>
NO2<「浜田」さん>からの解答 3月17日8時13分受信、3月17日更新
【エクセルのマクロで解きました.遅れてすみません.
n=1-6
n=2-30
n=3-174
n=4-1092
n=5-7188
n=6-48852
n=7-339720
n=8-2403588
Option Explicit
Sub Macro1()
Dim magnet(30) As Integer
Dim n As Integer
For n = 1 To 8
Cells(n, 1).Value = 0
Call check(n, 1, magnet())
Next n
End Sub
Sub check(ByVal n As Integer, ByVal j As Integer, ByRef magnet() As Integer)
magnet(j) = 1
While magnet(j) <= 3
If dame(n, j, magnet()) = 0 Then
If j <3 * n Then>
Call check(n, j + 1, magnet())
Else
Cells(n, 1).Value = Cells(n, 1).Value + 1
End If
End If
magnet(j) = magnet(j) + 1
Wend
End Sub
Private Function dame(ByVal n As Integer, ByVal j As Integer, ByRef magnet() As Integer) As Integer
Dim wa As Integer
Dim i As Integer
If j = 1 Then
dame = 0
ElseIf magnet(j - 1) = magnet(j) Then
dame = 1
Else
i = 1
wa = 0
While wa
If magnet(i) = magnet(j) Then
wa = wa + 1
End If
i = i + 1
Wend
dame = -(wa n - 1)
End If
End Function 】
* <太郎さんのコメント:昨日に続いて、第70回応募問題「マグネット」の解答が「浜田」さんから寄せられていました。本当にありがとうございます。感謝の気持ちで一杯です。こうなると、どうしても、規則性を発見したくなってきました。チャレンジしてください。3月17日記入>
NO3<水の流れ>3月24日記入
赤、白、青の3色は対称性があるので、左端に赤の場合を数えて3倍すれば良い。
さらに、左端に赤、白として6倍すれば良い。解法の便利さを考えて、赤を1,白を2,青を3とします。
問題1の解答:n=1のとき、123と数えて、1通り。よって、すべての並び方は6通り。
問題2の解答:n=2のとき、123123,123132,123231,123213,121323と数えて、5通り。よって、すべての並び方は、6倍して、5×6=30通り。
問題3の解答:n=3のとき、
121231323で、1通り
121232313で、1通り
121312323で,1通り
121313232で,1通り
121321323で,1通り
121323(123)は(123)の並び方より4通り
123<・・・・・・>は <・・・・・・>を問題2と同じとみることができる。
ただし、最初の・は3がこれなくて、1または、2しかないので、20通りしかない。
以上から、最初を12としているので、これの6倍をすれば良い。
したがって、すべての並び方は、29×6=174通り
ここで、太郎さんは、思考を断念しています。もう一度誰か、規則性を発見くだされば、幸いです。
NO4<「八木」さん>からの解答 3月26日1時05分受信、3月26日更新
時間については、3月28日の23時に同じく「八木」さんから頂きました。更新は29日
マグネットの問題の解答を再計算し計算時間を求めました。m(20)までは合計で5秒ぐらい、m(30)あたりから少し時間を食うようになりあとは1増すごとに時間が3割くらい増加しているようです。
* M(1)=6
M(2)=30
M(3)=174
M(4)=1092
M(5)=7188
M(6)=48852
M(7)=339720
M(8)=2403588
M(9)=17236524
M(10)=124948668
M(11)=913820460
M(12)=6732898800
M(13)=49918950240
M(14)=372104853600
M(15)=2786716100592
M(16)=20955408717396
M(17)=158149624268220
M(18)=1197390368733804
M(19)=9091866006950892
M(20)=69214297980023256
M(21)=528150412279712856・・・・・・・・・・・ time=0:0:1
M(22)=4038744418776845400・・・・・・・・・・・time=0:0:2
M(23)=30944390624047065984・・・・・・・ ・・・time=0:0:3
M(24)=237516699913494859872・・・・・・・・・・time=0:0:4
M(25)=1826086013748254354208・・・・・・・・・ time=0:0:6
M(26)=14060749765349707607712・・・・・・・・・time=0:0:8
M(27)=108419462768852853411360・・・・・・・・ time=0:0:11
M(28)=837093723433477717410048・・・・・・・・ time=0:0:14
M(29)=6470979121569898636819584・・・・・・・・time=0:0:19
M(30)=50079488713677575202500736・・・・・・・ time=0:0:25
M(31)=387982401816883700210450784・・・・・・・time=0:0:32
M(32)=3008830071902513451691172340・・・・・・ time=0:0:41
M(33)=23355578609725312573413915996・・・・・・time=0:0:53
M(34)=181454222489643445523121055308・・・・・・・・・・ time=0:1:8
M(35)=1410929075530217028966809771436・・・・・・・・・ time=0:1:27
M(36)=10979559944932052584082034521160・・・・・・・・・ time=0:1:51
M(37)=85504296448497664597176138172200・・・・・・・・・ time=0:2:20
M(38)=666342090836575342810869307529640・・・・・・・・・time=0:2:56
M(39)=5196335866734293020072581291205680・・・・・・・・ time=0:3:42
M(40)=40548366159334986692251519592601144・・・・・・・・time=0:4:38
】
* <太郎さんのコメント:八木さんは凄いです。何とn=40まで、求めてあります。後は、何としても規則性を見つけてみたいです。>
NO5<「八木」さん>からの解答 3月29日21時38分受信、3月30日更新
<水の流れ:コメント>N=41から59までの解答です。プログラムがあれば、後はパソコンが計算してくれます。本当に便利ですね。
M(41)=316600984318396358474067788054034792
M(42)=2473440399385321384181863105104711240
M(43)=19334338888097872133851929530263756008
M(44)=151211589346113407153873155612750437984
M(45)=1183201226095769143646013094593076929792
M(46)=9262761619343186896823542620683814327552
M(47)=72547402980720379307408101513774534473600
M(48)=568452882815731546922765274196011792412128
M(49)=4456054722123240923861790762275029981470624
M(50)=34944809867704420868762968362778850357165088
M(51)=274147371430665747033390016677581958159958560
M(52)=2151534123458342115664855183404876911768980800
M(53)=16891531014474743854827700730868265556544402240
M(54)=132660194992052638969652508875883676718351833920
M(55)=1042215716008997256156556500064910970795266407680
M(56)=8190582645372677718998263559678002957579518625920
M(57)=64388345049275795566012972006592224213972237987200
M(58)=506326155840395399722070165469770926974502777284480 : T=3:7:27
M(59)=3982719132441830391958025714413424756984142532295040 : T=3:45:12
NO6<「八木」さん>から寄せられたプログラム 4月1日0時22分受信、4月1日更新
<水の流れ:コメント>実は、UBASICを使用したDOSVタイプのを「八木」さんから前日受け取りましたが、開くことができずにいたところ、プログラムをワードの書式で送られてきました。この熱意と情熱に深く感謝します。
NO7<「八木」さん>から寄せられたプログラム 4月2日0時35分受信、4月2日更新
<八木さんからのコメント>先に送りましたプログラムで時刻関数(time)を初期化していましたがこれは好ましくないので削除しました。それから一部を変更して計算速度がさらに約2倍になりました。M(40)を計算するのに約1分、M(60)ですと1時間前後と推定されます。
<水の流れ:コメント>読者の皆さんへ:最新のプログラムを載せてあります。昨日のはプログラムは割愛させていただきました。
10 'asave"mg-3
20 NN=65
30 dim F(NN),G(NN),H(NN)
35 print " t=";time
40 for N=2 to 20
50 N2=N-1:gosub *Enzan:S1=Ss
60 N2=N:gosub *Enzan:S2=Ss*2
70 N2=N+1:gosub *Enzan:S3=Ss
80 Sss=S1+S2+S3
90 print "M(";N;")=";Sss;" t=";time
100 next N
110 end
120 *Enzan
130 for I=1 to N+3:F(I)=0:G(I)=0:H(I)=0:next I
140 Ss=0
150 F(1)=2*N+2-N2
160 F(1)=F(1)-1
170 for I=2 to N2
180 Sf=0:for R=1 to I-1:Sf=Sf+F(R):next R
190 F(I)=min(2*N+I-N2-Sf,F(I-1))
200 next I
210 gosub *Keisuu
220 Ss=Ss+S
230 J=N+1
240 I=I-1
250 Fi=F(I)
260 if I<1 then 530
270 if Fi<3 then 240
280 J=I
290 Fj=F(J)
300 J=J+1
310 if Fj=1 then 240
320 if J>N2 then 240
330 Sa=F(I)-F(J)
340 if Sa<2 then 300
350 if I<2 then 160
360 if Sa>1 then F(I)=F(I)-1
370 Sf=0:for R=1 to I:Sf=Sf+F(R):next R
380 if I>N2-1 then 400
390 for R=(I+1) to N2:F(R)=1:next R
400 Nokori=2*N-Sf-(N2-I)
410 if Nokori=0 then 500
420 if Nokori=1 then F(I+1)=2:goto 500
430 if F(I)=1 then 500
440 Sai=Nokori\(F(I)-1)
450 Dai2=(Nokori)@(F(I)-1)
460 if Sai=0 then 480
470 for R=(I+1) to (I+Sai):F(R)=F(I):next R
480 if Dai2=0 then 500
490 F(I+Sai+1)=Dai2+1
500 gosub *Keisuu
510 Ss=Ss+S
520 goto 230
530 return
540 *Keisuu
550 for I=1 to N+2:G(I)=0:next I
560 H1=!(N2)
570 Kisuu=0:Guusuu=0
580 for I=1 to N+2
590 JJ=F(I)
600 Kisuu=Kisuu+JJ@2
610 if JJ=0 then 630
620 Guusuu=Guusuu+(JJ+1)@2
630 G(JJ)=G(JJ)+1
640 next I
650 K0=2^(Guusuu):K1=!(Kisuu)\((!((Kisuu)\2))^2)
660 Hh=1
670 for K=1 to N+2
680 H(K)=!(G(K))
690 Hh=Hh*H(K)
700 next K
710 S=H1*K0*K1\Hh
720 return
<自宅>
mizuryu@aqua.ocn.ne.jp

