メタバックグラウンド
これはPuzzlingの質問として設定されており、即座の反応は「まあ、誰かがそれをコンピューターで解決するだけです」でした。これを解決するプログラムがどれほど複雑であるかについての議論がありました。「このプログラムの複雑さ」はcode-golfの定義であるため、PPCGで問題を解決できるかもしれません。
バックグラウンド
マッチ棒の方程式は、基本的に通常の数学的方程式であるが、数字や演算子は、テーブルの上にマッチ棒を配置することによって物理的に構築されます。(ここでのマッチスティックの主な関連機能は、かなり堅く、一定の長さを持っていることです。時々、綿棒など、他のオブジェクトを代わりに使用します。)
このチャレンジでは、マッチスティックの配置方法に関する特定のルールを定義する必要はありません(リンクされたチャレンジのように)。むしろ、指定された数に評価される式を表すために必要なマッチスティックの数に注意するだけです。
タスク
使用できる数字のアルファベットと数学演算子は次のとおりです。それぞれにマッチスティックのコストがあります。
0
、6本のマッチ棒1
、2本のマッチ棒2
、5本のマッチ棒3
、5本のマッチ棒4
、4本のマッチ棒5
、5本のマッチ棒6
、6本のマッチ棒7
、マッチ棒3本がかかる8
、7本のマッチ棒9
、6本のマッチ棒+
、2本のマッチ棒-
、マッチ棒1本×
、2本のマッチ棒
(あなたは表すことができる×
よう*
必要に応じて、ほとんどのエンコーディングでは、非ASCII文字を使用する必要がないようにするために、あなたのプログラムの出力に×
占める以上のバイト*
、と私はほとんどのプログラムは、この余裕を利用したいということを想像して)
(負の整数を入力として(任意の妥当な手段を介して)受け取り、その整数を出力として(再び任意の妥当な手段を介して)評価する式を生成するプログラムを作成する必要があります。また、式は自明である必要があります。それは、少なくとも一つのオペレータが含まれている必要があり+
、-
または×
。最後に、出力する式は、そうでなければ仕様に準拠するすべての出力の中で、マッチ棒の総コストの観点から最も安価(または最も安価に結び付けられる)でなければなりません。
明確化
- 行に複数の数字を出力することで、複数の数字を作成できます(たとえば
11-1
、有効な出力です10
)。正確に言うと、結果の数値は10進数で解釈されます。この種の連結は、中間結果に対して機能する操作ではありません。元の式に現れるリテラル数字のみ。 - この課題のために。
+
、-
と×
中置演算子です。彼らは左と右への議論が必要です。+5
またはのようなプレフィックス位置でそれらを使用することはできません-8
。 - 括弧(または優先順位を制御する他の方法)がありません。式は、一般的なデフォルトの優先順位規則に従って評価されます(乗算が最初に発生し、次に加算と減算が左から右に評価されます)。
- 上記以外の数学演算子や定数にはアクセスできません。「ラテラル思考」ソリューションは、Puzzlingでしばしば受け入れられますが、コンピューターにそれ自体を考え出すことを要求することは意味がありません。PPCGでは、ソリューションが正しいかどうかを客観的にすることが望ましいです。
- 通常の整数オーバーフロールールが適用されます。ソリューションは、すべての整数がデフォルトで制限されていない仮想バージョン(または実際のバージョン)の任意の大きな整数で動作できる必要がありますが、実装によりプログラムが実際に失敗する場合それほど大きな整数をサポートしていなくても、ソリューションは無効になりません。
- 同じ数字または演算子を複数回使用する場合、使用するたびにマッチスティックコストを支払う必要があります(明らかに、テーブル上の2つの異なる場所で同じ物理的なマッチスティックを再利用できないためです)。
- 時間制限はありません。ブルートフォースソリューションは許容されます。(ブルートフォースよりも高速なソリューションがある場合は、それが長くても自由に投稿してください。代替アプローチがどのように比較されるかを見るのは常に興味深いです。)
- コードの説明を書く必要はありませんが、それは良い考えです。コードゴルフソリューションは、読むのが非常に難しい場合があります(特に、記述されている言語に精通していない人にとっては)、そしてその仕組みを理解しない限り、ソリューションを評価する(したがって投票する)のは難しい場合があります。
勝利条件
コードゴルフの挑戦として、より少ないバイトでの答えはより良いと考えられます。ただし、いつものように、さまざまなアプローチで回答を投稿したり、特定の言語で回答を投稿したりしても、特定の他の言語よりも冗長である場合があります。ゴルフの目標は、特定のプログラムを最適化できる範囲を実際に確認することであり、この方法で物事を行うと、最適化する多くの潜在的なプログラムが得られます。だから誰かが完全に異なるアプローチまたはまったく異なる言語を使用してソリューションを提出し、はるかに短い答えを得たとしても、落胆しないでください。あなたの答えがより最適化されており、より多くのスキルを示しているのかもしれません。PPCGの投票者はしばしばそれを高く評価しています。