3~4つの数字を使って任意の自然数を作れるソフトが完成した
こんばんは.20日ぶりぐらいの頭の体操です.
9/3に投稿したパズル(詳しいルールは下記記事参照)の答え探索機(?)的なものがやっと完成しました.
「1,2,3」の3つを使うモード以外に,3~4つの数字までで任意の数字入力にも対応しています.0に対応させるのがちょっと面倒くさかった.
任意の数を入力できるということで,テンパズル(4つの数字を使って10を作るやつ)の解答例を探すのにも使えます.
「1,2,3」を使って任意の自然数を作る奴,私のツールによると1~100までの数字の中で「67,73,82,87,89,94,98」以外の93個の自然数ができることがわかりました.記事の最後に答えを載せているので,暇な方はぜひやってみてはいかがでしょうか.
一応,上の記事に載せてあるルールはすべて採用しています.
例えば総和記号(Σ)を使えば簡単にできる答えも,Σを使わなくても小数点(.)や階乗などを使えば出せる場合には複雑な式に関わらずΣを使わない式を掲示していていることがあります.判断基準は「おーっ」ってなったものが採用されているものが多いです(語彙力)
ちなみに私が実際頭を使って襦袢にやってみた結果,32がどうしてもできずゲームオーバー&ギブアップでした.どうやら小数点を使う場合の発想に乏しいようです.本記事の末尾に載せている答えの中にも小数点を積極的に使うのが多くて「すげー」ってなっています(語彙力)
現状,あらゆるパターンを探索していて多重ループが凄まじいことになっています()Σは3重(例:ΣΣΣ2=ΣΣ3=Σ6=21)まで計算できます.また,(A×(B+C))×Dのように,()が二重で入るパターンは計算量が膨大になるため省いています.
Σ1や√1など記号を付けても意味がないパターンや24!など莫大すぎる数が計算途中に入る可能性があり4桁までの出力結果となり得なさそうなパターンはだいぶ省いているのですが・・・.
例えば,今回動かした「1,2,3」の3つを使って最も計算パターンが多いモード(すべてのパラメータが最大)で35秒ぐらいかかっています()すべての入力パターンの中で最も大変であろう「4,4,4,4」を(階乗,平方根,べき乗など探索するパターンが最も多そうなイメージ)パラメータが最大の状態で動かすと2時間以上かかります())
難しいなーと感じた答え:
14:二重階乗を使えば簡単.平方根/循環小数をうまく使えば二重階乗を使わなくても可能.
16:二重階乗,Σを使わなくとも可能.
32:Σは使わない.
34:かなり複雑.あらゆる記号を駆使する.
38:かなり複雑.34と同じような感じ.
59:あらゆる記号を駆使する.
60:計算途中でかなり大きめな数を経由する.
71:Σの三重式(ΣΣΣ)が登場.
76:あらゆる記号を駆使する.
85:計算途中でかなり大きめな数を経由する.
88:循環小数の使い方が肝.
92:計算途中で少し大きめな数を経由する.
96:二重階乗を使えば簡単.平方根/循環小数などをうまく使えば二重階乗を使わなくとも可能.
100:計算途中でかなり大きめな数を経由する.
続きを読む
暇つぶし:数字パズル①
こんばんは.初めての頭の体操回です.
「テンパズル」や「4つの4」はご存じでしょうか.
「テンパズル」とは与えられた4つの数字と四則演算を用いて10を作る遊びです.「例:4183 → 4+1+8-3=10」
切符に書かれている4桁の番号でこれをやってみた,という方もいらっしゃるはずです.
そして,「4つの4」とは読んで字のごとく4つの4と四則演算等の記号(後述)を用いて任意の自然数を作る遊びです.
「4つの4」にて主に使用可能となる記号はこちらとなります.
- 四則演算(+-×÷)
- かっこ( () )
- 累乗(^)
- 平方根(√)
- 小数点(.)(.4=0.4のように整数部分の0を省略する記法を許可する場合あり)
- 循環小数(.4'=.4444...=4/9)
- 階乗(!)(n!=1×2×...×n)
- 二重階乗(!!)(nが奇数のときn!!=1×3×…×n-2×n,nが偶数のときn!!=2×4×…×n-2×n)
- 総和(Σ)(Σn=1+2+…+n)
なお,「テンパズル」ではこれらの記号のうち下から6つはあまり使用が許可されていない印象があります.
また,いずれのルールも,「4+18÷3=10」や「44÷4+4=15」のように,数字を2つ以上くっつけることを許可する場合があります.
本題 問題
そして今回は,「4つの4」の亜種として「1,2,3」を順番通りに用いて任意の自然数を作るパズルをやってみました.今回は一応1~10までの解答を用意しました.ここでの使用可能な記号は今回は以下のとおりです.
- 四則演算(+-×÷)
- かっこ( () )
- 平方根(√)
- 累乗(^)
- 小数点(.)
暇つぶしの頭の体操にいかがでしょうか.
ちなみに,私は今このパズルの解を見つけるプログラムを書いていますが,様々なパターンの演算子や記号を組み合わせていると計算時間や計算量がバカにならないことになっているため,永遠に調整中です.個人的に熱が来ているので定期的にこういう記事をはさんでいくことになると思います.
ではでは.
↓以下1~10までの解答の一例↓
続きを読む