JavaScriptによる4つの数字ゲーム

任意の4つの数字を用いて任意の数字を作るゲームのJavaScriptによる自動化の試み。

概要

2010/08/13

有名な数字遊びゲームとして、4を4つ使い四則演算や累乗などの演算子を用いて任意の自然数を作るものがある。最近Twitterにてこれを準一般化し、任意の正の整数を4つ使って10を作るゲームをやった。そこで、更に一般化して任意の数字を作るゲームをJavaScriptで自動的に検索するプログラムを作ってみる。

4つの数字ゲーム ver.2.0

2010/08/13-2010/09/03

汎用的な計算スクリプトにおいて一定の完成を見たバージョン。

計算方法

数字同士の組み合わせ毎に配列をつくり、各配列に一変数演算子と二変数演算子を繰り返し適用させ続けることで目的の結果を得る。同じ数字を含む場合、種類に応じて配列の数と適用規則を変えることで最小限の計算量を目指す。例えば4つの数字全てが異なる場合、1〜4個の組み合わせは15種類、適用規則は25種類存在する。従って15種類の配列を作り、25種類の経路で二変数演算子を適用する。逆に4つの数字全てが同じときは組み合わせは(1,11,111,1111)4種類、適用規則も4種類にしかならない。一変数演算子は1回ごとに全ての配列に適用される。

1つの答えを多くの経路で検索するために2つの数字の位置が可換な二変数演算子を適用する際に適用履歴を作り、交換可能な他の演算結果を除外できるようにしているため、汎用的ではあるが特定の用途向けに最速というわけではない。ちなみに全ての交換可能な演算は除去できていない。

このスクリプトでは1桁の数字2つを繋いで2桁の数字にする使い方には対応していない。原則、1桁の数字に対して演算子を適用している。

計算フォーム

スクリプトが中途半端に上書きされて動作しなくなっていたので、古いバージョンからVer.2.0を使ってください。そちらが実質最新版となっています。

ver.2.0
材料にする数字
検索モード
検索する自然数/範囲
検索を打ち切る個数(範囲検索では検索範囲より大きくても無効、小さければその個数で中断)
許可する演算子
演算子 記号 許可 階層 上限 書式
四則演算 +-*/ -- -- (N,N)
累乗 ^ -- -- (N,N)
平方根 -- (N)
階乗 ! ! (N)
総和 Σ -- (N)
剰余 % -- -- (N,N)
各項における一変数演算子の多重適用上限
---
同一の途中結果を無視(範囲検索では有効で固定、演算子を多く有効する場合チェックしなければ非常に時間がかかる)
小数の途中結果を無視(入力値倍して小数のものを無視する,0で小数許可,1で整数のみ)
無理数となる平方根の途中結果を無視
大きな途中結果を無視(入力値より大きな途中結果を無視、作る数字や範囲未満を指定するとエラー,0で上限なし)

Output
Debug

古いバーション

経過を見て保存している開発途上版一覧。

ページ情報

作成日時
2010/08/13
最終更新日時
2010/09/03
HTML4.01版
index.html
XHTML1.1版
index.xhtml
XML原本
index.xml