バックグラウンド
このパズルは、フォーフォーズパズルのバリエーションです(それ自体が過去の質問のトピックです)。そのパズルのように、目的は、4桁と特定の数学演算子のみを使用して、異なる整数の数式を見つけることです。ただし、この場合、許可される数字は2、0、1、および5だけです。それぞれがソリューションに正確に1回、正しい順序で表示される必要があります。驚くほど多くの整数がこの方法で表現できます。ソルバーは、奇妙に楽しいので、最初に手で解決することをお勧めします。
ルール
定数は、1桁または複数の数字から作成できます。
- 整数:たとえば、2、0、15など。
- 10進数:例.2、.01、1.5など
- 繰り返しの小数:.2〜(= 0.222 ...)、. 15〜(= 0.1555 ...)、20.15 ~~(= 20.1515 ...)
次の単項演算が許可されています。
- 単項否定:-x
- 平方根:sqrt(x)
- 整数階乗:x!
次のバイナリ操作が許可されています。
- 標準算術演算子:x + y、xy、x * yおよびx / y
- 任意のべき乗:x ^ y
- 任意のルート:rt [x](y)(= xのyのルート)
仕事
プログラムは、できるだけ多くの0〜100の整数の式を出力し、生成した式の数を出力する必要があります。
- ソリューションは、n = [expr]の形式で順番に印刷する必要があります。
- 式では、2、0、1、5のすべての数字をその順序で1つずつ使用する必要があります。
- 式は、上記の表記法を使用して印刷する必要があります。不要な括弧は許可されますが、空白のように必須ではありません。演算子の優先順位は、単項否定、階乗、べき乗、乗算/除算、加算/減算です。
- プログラムは、すべての数値の解を返す必要はありません。したがって、単に0を出力するプログラムは有効です。ただし、以下のスコアリングセクションを参照してください。
- プログラムは、最新のコンピューターで15分未満で実行する必要があります。
プログラムまたは関数を作成できます。式はSTDOUT(または最も近い代替)に出力する必要があります。式の数は、STDOUTに出力するか、整数として返すことができます。標準コードのゴルフ制限が適用されます。
出力例
0=2*0*1*5
10=20*1*.5
42=((2+0!)!+1)!/5!
100=20*1*5
4
得点
更新:@orlpはスコアリングシステムの欠陥に気付きました。これをどのように修正すべきか、または修正すべきかどうかについては、http://meta.codegolf.stackexchange.com/questions/5106/way-of-salvaging-two-zero-one-five-puzzle-challengeを参照してください。
ソリューションは、最初に生成する式の数によってスコア付けされ、次にバイト単位のコード長によってスコア付けされます。したがって、80の結果を生成する1000バイトのプログラムは、79のみを生成する100バイトのプログラムに勝ります(ただし、後者は欠落した結果を含めるように簡単に拡張できます)。
やる気を起こさせるターゲットが必要な場合は、表現できる式の数の下限を以下に示します。私はエントリーを提出する予定はありませんので、少ない資金で勝つことができるかもしれません!
少なくとも85(101のうち)ですが、それより高い場合もあります。
スコアボード
追加のインセンティブとして、スコアの進行の概要を以下に示します。最高得点を獲得するたびに、テーブルのトップに自分を追加してください(または他の人に聞いてください)。
- 0式、1バイト(Pyth):0のみを出力する実装