テンパズルのソースを表示
←
テンパズル
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{出典の明記|date=2020年5月}} '''テンパズル'''(10パズル)は、4桁の数字を一桁の数字4つとみなし、これに'''[[四則演算]]'''などを用いて'''[[10]]'''を作る遊び。'''メイクテン'''(make10)とも呼ばれる。[[乗車券|切符]]の番号や車の[[ナンバープレート]]などでの短時間の遊びに利用され、日本経済新聞{{Full citation needed|date=2023年8月}}で渋滞時の時間の潰し方として紹介されたことがある。 == 一般的なルール == 一般的なルールとしては、四則演算のみの使用を許可し、数字の並べ替えも許可されるが、数字の結合は許可されない。一般的なルールの場合、全715通り中552通りの組み合わせ(並べ替えたものを数えると全10000通り中8147通り)で10を作ることができる。解き方を1つでも見つければ正解となるが、使っていない数字があった場合は正解にならない。 {| border="0" frame="box" |- | (例.) ||1358||:||<math>8 + (5 - 3)\times 1 = 10</math>||(解き方の一例) |- | || ||:||<math>5 \times 8 \div ( 3 + 1) = 10</math>||(解ければどのような解き方でもよい) |} 数字は自由に並べ替えてもよいので、例えば「1358」と「5381」は同じ問題となる。 == 特殊ルール == 地方ルールもしくは特殊ルールとして、[[指数関数]]や数学の記号([[べき乗]]や[[階乗|!(階乗)]]など)の使用を許可することや、連続した数字をつなげて2桁の数字として扱うなどの応用もある。この場合はさらに10を作ることの出来る組み合わせが増える。大抵は一般的ルールで解けなかった場合にルールの拡張が行われる傾向がある。 {| border="0" frame="box" |- | (例.) ||0123||:||<math>0 + 1 + 3^{2} = 10 \,</math>||(指数関数を使った例) |- | ||1111||:||<math>11 - 1 \times 1 = 10</math>||(最初の連続した1を2桁の数字として扱った例) |} これらはあくまで特殊ルールであり、この方法でのみ解ける場合に「解ける」とはしない。ちなみに、数字を連結させた場合は、連結させない場合に加えて新たに70通り解ける組み合わせが増える。 逆に作ることの出来る組み合わせを減らす特殊ルールとして、数字の並べ替えを許可しない問題も存在する。この場合はマイナス記号を数字の前に置くことを許すかどうかというサブルールが別途規定されるが、マイナス記号は四則演算ではないためにマイナス記号が許可されないのが一般的である。なお、数字の並べ替えを許可せず、マイナス記号も許可しなかった場合、10000通り中5878通りで10を作ることが出来るが、それぞれの数字の難易度は桁違いに高くなる。 {| border="0" frame="box" |- | (例.) ||1358||:||<math>1 \times (- 3 + 5) + 8 = 10</math>||(マイナス記号が許可された場合の一例) |- | || ||:||<math>1 - 3 \times ( 5 - 8 ) = 10</math>||(マイナス記号が許可されない場合、1358の例ではこの方法のみ可能) |} 他にも、10以外の数字を作ったり、5桁以上の数から10を作ったりするルールも存在する。例えば16を作るルールは10を作るルールに比べて難易度は若干上昇する。5桁以上の数字から10を作る場合、数字の数が増えることにより難易度が大幅に低減する。 == その他 == ものによって解けるもの、解けないものが存在する上に、コンピュータを使わずに解けないことを証明することが極めて難しいために、出先などで切符やナンバープレートなどで解けそうで解けない番号に当たってしまったときは、非常に歯がゆい思いをすることが多い。解けるかどうかを見分ける一つの方法として、「''0を含まない、互いに相異なる4つの数の場合は必ず解ける''」ことが知られている。また、演算の途中経過が[[整数]]の範囲では解けなくとも、[[有理数]]の範囲で解ける問題も複数存在する。 解ける問題に対して難易度を定義するのも難しい問題である。一般的に[[加法]]や[[乗法]]などの[[交換法則]]が成立する演算子を利用して解ける場合は解法の種類が多く解きやすい。逆に[[減法]]や[[除法]]など交換法則が成立しない演算子を利用する解法のみでしか解けない問題は一般的に難易度が高く、パズルとして出題される場合は大抵このパターンであるが、難しい問題の中にも加法と乗法のみで解が導き出せる例も存在する。 一般に難易度は「解ける解法が少ない」という形で定義されるが、その場合、一般的なルールでは大抵の人間が直感的に解ける1116が難問に分類されてしまう不具合もあり、画一的な難易度の指標は確立されていない。 == コンピュータによる解法 == 解法自体はそれほど難しくないが、それをコンピュータ上に実装するための方法が難しい。とくに「整数の範囲内では解けないが分数(有理数)の範囲では解ける」ケースが存在する点が難関となる。そのため有理数を計算できる電卓プログラム([[Forth]]を参照のこと)を実装することが要求される。 解を得るための手順としては、 * 「1・2・3・4」から「6・7・8・9」までの順列を生成する(126通りある)。 * それぞれの数から、組合せを生成する。これは24通りある。 * 各組合せに対して、Forth 言語として意味のある式(数値四つ+演算子三つの7要素である)をすべて生成する(最初の二つは数字であり、最後のひとつは演算子である)。 * その式をすべて評価し、解が10と一致するもののみを選ぶ。 * Forth 式を(括弧)のある式に変換する。 プログラム・アルゴリズムの分野では、'''逆ポーランド記法'''('''後置記法''')や'''スタック'''の例題として取り上げられることがあるが、プログラミング初級者にはほとんど歯が立たない。「逆ポーランド記法を評価できる仮想的マシンを実装し、そのプログラミング言語を生成するシステムを作る」といった言語処理系想定する方法が有効なので、システムエンジニアに対しては有効な課題である。Java などのオブジェクト志向プログラミング言語ではコンテナクラスもあり扱いやすいが、C 言語のような言語処理系においては、時間・空間計算量などの見積もりが大変であったため、「複数のプログラム間をファイル渡し(または標準入出力渡し)して解決する」という手法もあった。 == 参考資料 == 一般的なルールで10を作れる552個の数字の組み合わせ {| border="1" frame="box" summary="make10" style="text-align: right" |- |style="color:blue"|1.||0019||0025||0028||0037||0046||0055||0115||0118||0119||0124||0125||0126||0127||0128||0129||0133||0135||0136||0137||0138 |- |style="color:blue"|2.||0139||0145||0146||0147||0149||0155||0156||0159||0169||0179||0189||0199||0223||0224||0225||0226||0227||0228||0229||0234 |- |style="color:blue"|3.||0235||0237||0238||0239||0244||0245||0246||0247||0248||0249||0255||0256||0257||0258||0259||0266||0267||0268||0278||0288 |- |style="color:blue"|4.||0289||0334||0337||0339||0346||0347||0349||0355||0356||0357||0358||0367||0368||0377||0378||0379||0446||0449||0455||0456 |- |style="color:blue"|5.||0458||0459||0466||0467||0468||0469||0477||0488||0555||0556||0557||0558||0559||0568||0569||0578||0579||0669||0679||0688 |- |style="color:blue"|6.||0779||0789||0889||0899||0999||1114||1115||1116||1117||1118||1119||1123||1124||1125||1126||1127||1128||1129||1133||1134 |- |style="color:blue"|7.||1135||1136||1137||1138||1139||1144||1145||1146||1147||1148||1149||1155||1156||1157||1158||1166||1167||1168||1189||1199 |- |style="color:blue"|8.||1222||1223||1224||1225||1226||1227||1228||1229||1233||1234||1235||1236||1237||1238||1239||1244||1245||1246||1247||1248 |- |style="color:blue"|9.||1249||1255||1256||1257||1258||1259||1266||1267||1268||1269||1277||1278||1279||1288||1289||1299||1333||1334||1335||1336 |- |style="color:blue"|10.||1337||1338||1339||1344||1345||1346||1347||1348||1349||1355||1356||1357||1358||1359||1366||1367||1368||1369||1377||1378 |- |style="color:blue"|11.||1379||1388||1389||1445||1446||1447||1448||1449||1455||1456||1457||1458||1459||1466||1467||1468||1469||1477||1478||1479 |- |style="color:blue"|12.||1488||1489||1555||1556||1557||1558||1559||1566||1567||1568||1569||1577||1578||1579||1588||1589||1599||1668||1669||1678 |- |style="color:blue"|13.||1679||1688||1689||1778||1779||1788||1789||1799||1888||1889||1899||1999||2222||2223||2224||2225||2226||2227||2228||2229 |- |style="color:blue"|14.||2233||2234||2235||2236||2237||2238||2239||2244||2245||2246||2247||2248||2249||2255||2256||2258||2259||2266||2267||2268 |- |style="color:blue"|15.||2269||2277||2278||2279||2288||2289||2299||2333||2334||2335||2336||2337||2338||2339||2344||2345||2346||2347||2348||2349 |- |style="color:blue"|16.||2355||2356||2357||2358||2359||2366||2367||2368||2369||2377||2378||2379||2388||2389||2399||2444||2445||2446||2447||2448 |- |style="color:blue"|17.||2449||2455||2456||2457||2458||2459||2466||2467||2468||2469||2477||2478||2479||2488||2489||2499||2555||2556||2557||2558 |- |style="color:blue"|18.||2559||2566||2567||2568||2569||2577||2578||2579||2588||2589||2599||2666||2667||2668||2669||2677||2678||2679||2688||2689 |- |style="color:blue"|19.||2699||2777||2778||2779||2788||2789||2799||2888||2889||2899||2999||3333||3334||3335||3336||3337||3338||3339||3344||3345 |- |style="color:blue"|20.||3346||3347||3348||3349||3355||3356||3357||3358||3359||3366||3367||3368||3369||3377||3378||3379||3388||3389||3399||3445 |- |style="color:blue"|21.||3446||3447||3448||3449||3455||3456||3457||3458||3459||3466||3467||3468||3469||3477||3478||3479||3488||3489||3499||3555 |- |style="color:blue"|22.||3556||3557||3558||3559||3566||3567||3568||3569||3577||3578||3579||3588||3589||3599||3666||3667||3668||3677||3678||3679 |- |style="color:blue"|23.||3688||3689||3699||3777||3778||3788||3789||3799||3888||3889||3899||4445||4446||4447||4448||4449||4455||4456||4457||4458 |- |style="color:blue"|24.||4466||4467||4468||4469||4478||4479||4488||4489||4499||4555||4556||4557||4559||4566||4567||4568||4569||4577||4578||4579 |- |style="color:blue"|25.||4588||4589||4599||4666||4667||4668||4669||4677||4678||4679||4688||4689||4699||4777||4778||4779||4788||4789||4799||4888 |- |style="color:blue"|26.||4889||5555||5556||5557||5558||5559||5566||5567||5568||5569||5577||5578||5579||5588||5589||5599||5666||5667||5669||5677 |- |style="color:blue"|27.||5678||5679||5688||5689||5699||5777||5778||5779||5789||5888||5889||5999||6668||6669||6678||6679||6688||6689||6699||6779 |- |style="color:blue"|28.||6788||6789||6799||6889||7778||7779||7889||7899||8888||8889||8999||9999 |style="background:gray"| |style="background:gray"| |style="background:gray"| |style="background:gray"| |style="background:gray"| |style="background:gray"| |style="background:gray"| |style="background:gray"| |} 以下は、一般的なルールで10を作れない163個の数字の組み合わせ。 {| border="1" frame="box" summary="make10_not" style="text-align: right" |- |style="color:blue"|1.||0000||0001||0002||0003||0004||0005||0006||0007||0008||0009 |- |style="color:blue"|2.||0011||0012||0013||0014||0015||0016||0017||0018||0022||0023 |- |style="color:blue"|3.||0024||0026||0027||0029||0033||0034||0035||0036||0038||0039 |- |style="color:blue"|4.||0044||0045||0047||0048||0049||0056||0057||0058||0059||0066 |- |style="color:blue"|5.||0067||0068||0069||0077||0078||0079||0088||0089||0099||0111 |- |style="color:blue"|6.||0112||0113||0114||0116||0117||0122||0123||0134||0144||0148 |- |style="color:blue"|7.||0157||0158||0166||0167||0168||0177||0178||0188||0222||0233 |- |style="color:blue"|8.||0236||0269||0277||0279||0299||0333||0335||0336||0338||0344 |- |style="color:blue"|9.||0345||0348||0359||0366||0369||0388||0389||0399||0444||0445 |- |style="color:blue"|10.||0447||0448||0457||0478||0479||0489||0499||0566||0567||0577 |- |style="color:blue"|11.||0588||0589||0599||0666||0667||0668||0677||0678||0689||0699 |- |style="color:blue"|12.||0777||0778||0788||0799||0888||1111||1112||1113||1122||1159 |- |style="color:blue"|13.||1169||1177||1178||1179||1188||1399||1444||1499||1666||1667 |- |style="color:blue"|14.||1677||1699||1777||2257||3444||3669||3779||3999||4444||4459 |- |style="color:blue"|15.||4477||4558||4899||4999||5668||5788||5799||5899||6666||6667 |- |style="color:blue"|16.||6677||6777||6778||6888||6899||6999||7777||7788||7789||7799 |- |style="color:blue"|17.||7888||7999||8899 |style="background:gray"| |style="background:gray"| |style="background:gray"| |style="background:gray"| |style="background:gray"| |style="background:gray"| |style="background:gray"| |} 以下は、一般的なルールでは10を作れないが、数字を連結させるルールでは10を作れる70個の数字の組み合わせ {| border="1" frame="box" summary="make10_not" style="text-align: right" |- |style="color:blue"|1.||0001||0011||0012||0013||0014||0015||0016||0017||0018||0022 |- |style="color:blue"|2.||0023||0033||0034||0044||0045||0056||0066||0067||0077||0078 |- |style="color:blue"|3.||0088||0089||0099||0111||0112||0122||0123||0134||0144||0158 |- |style="color:blue"|4.||0166||0167||0177||0178||0188||0236||0279||0336||0345||0369 |- |style="color:blue"|5.||0448||0457||0589||1111||1112||1122||1159||1177||1178||1188 |- |style="color:blue"|6.||1444||1666||1777||2257||3444||3669||3779||4444||4459||4477 |- |style="color:blue"|7.||6666||6667||6677||6777||7777||7788||7789||7799||7888||8899 |} == 関連項目 == *[[乗車券]] *[[パズル]] *[[組合せ (数学)]] *[[アルゴリズム]] *[[プログラミング (コンピュータ)]] *[[逆ポーランド記法]](後置記法) *[[スタック]] {{DEFAULTSORT:てんはする}} [[Category:数学パズル]] [[Category:数学に関する記事]]
このページで使用されているテンプレート:
テンプレート:Full citation needed
(
ソースを閲覧
)
テンプレート:出典の明記
(
ソースを閲覧
)
テンパズル
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報