任意の4つの数字を用いて任意の数字を作るゲームのJavaScriptによる自動化の試み。
2010/08/13
有名な数字遊びゲームとして、4を4つ使い四則演算や累乗などの演算子を用いて任意の自然数を作るものがある。最近Twitterにてこれを準一般化し、任意の正の整数を4つ使って10を作るゲームをやった。そこで、更に一般化して任意の数字を作るゲームをJavaScriptで自動的に検索するプログラムを作ってみる。
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を使ってください。そちらが実質最新版となっています。