プログラミングパズルとコードゴルフ

プログラミング愛好家やコードゴルファーのためのQ&A

7
再帰的バイナリ記述
再帰的バイナリ記述 最近、シーケンスA049064に bファイルを拡張および追加することで、OEISに初めて貢献しました。シーケンスはで始まり0、次の値は最後のアイテムの「バイナリ説明」の提供から派生します。 たとえば、最初の要素10に1つあったため、2番目の用語はになり0ます。第三項は次のようになり11101があったので、1一つ0。4番目はになります11110。なぜなら3つ(11バイナリで!) 1と1つだから0です。以下は、このプロセスを明確にするための第5項の内訳です。 > 11110 > 1111 0 (split into groups of each number) > 4*1 1*0 (get count of each number in each group) > 100*1 1*0 (convert counts to binary) > 100110 (join each group back together) そして、6期から7期に移行する例を次に示します。 > 1110010110 > 111 00 1 0 11 …
14 code-golf 

2
ゴルフCPUゴルフチャレンジ:プライムパーティション
この課題は、GOLF CPUに書き込まれるべき一連の最も少ない操作の問題の最初のものです。ここで次のものを見つけることができます 数字のパーティションN、は、合計される数字のリストですN。プライムパーティションはまで追加素数のリストですN。 このチャレンジでは、単一の整数が与えられますN ≥ 2。の最短の素数パーティションを生成する必要がありNます。複数の可能なパーティションがある場合、それらのいずれかを印刷できます。 例: 9: [2, 7] 12: [5, 7] 95: [89, 3, 3] 337: [337] 1023749: [1023733, 13, 3] 20831531: [20831323, 197, 11] プログラムはGOLF CPUで作成する必要があります。入出力には、STDIOまたはレジスタを使用できます。リストは任意の順序にすることができ、STDOUTを使用している場合は、空白またはカンマで区切ることができます(括弧は不要です)。明らかに、ソリューションのハードコーディングは許可されておらず、最初のいくつかの素数以上のハードコーディングも許可されていません。 これは最も少ない操作の問題であるため、上記の例を最小限のサイクルで解決する答えが勝ちです!

7
各サイズのテプリッツ行列の最大行列式を見つける
固定nの場合、0または1のエントリを持つn行n列のテプリッツ行列を考えます。目的は、このようなテプリッツ行列すべての最大行列式を見つけることです。 仕事 それぞれn1から上に、0または1のエントリを持つすべてのn行n列のテプリッツ行列の最大行列式を出力します。n最大行列式とそれに到達する行列の例が1つあります。 スコア スコアは、n私のコンピューター上でコードが2分以内に到達する最大のスコアです。少し明確にするために、コードは合計で2分間実行できますが、これはあたり2分ではありませんn。 タイ・ブレーカー 2つのエントリが同じnスコアを獲得した場合、勝者のエントリはn、マシン上で最短時間で最高のエントリになります。この基準でも2つのベストエントリが等しい場合、勝者は最初に送信された回答になります。 言語とライブラリ 自由に利用できる任意の言語とライブラリを使用できます。私はあなたのコードを実行できなければならないので、可能な限りLinuxでコードを実行/コンパイルする方法の完全な説明を含めてください。 私のマシンタイミングは私のマシンで実行されます。これは、AMD FX-8350 8コアプロセッサへの標準のUbuntuインストールです。これは、コードを実行できる必要があることも意味します。 小さな答え n = 1..10の場合、出力は1,1,2,3,5,9,32,56,125,315になります このシーケンスはOEISにはないため、受賞エントリはそこに新しいエントリを提案することもできます。 これまでのエントリー n=10 n=11Pythonの Viozによる n=9ティロによるC n=12ルジャンドルのJ n=10Rの Tensibaiによって n=14C ++の SteelRavenによる n=14C ++の RetoKoradiによる

2
チェス盤での爆発
アトミックチェスは、すべてのキャプチャが「爆発」を引き起こし、キャプチャしたピース、キャプチャを行うピース、および1平方半径のポーン以外のすべてを破壊するチェスの(非常に楽しい)バリアントです。この課題の目標は、原子チェスのゲーム全体をプレイすることではなく、単に特定の動きが行われたときに何が起こるかをシミュレートすることです。 免責事項:爆発効果音は含まれていません。 入力 ボードの位置は、フォーサイス・エドワーズ表記法 (一般にFENとして知られています)で与えられますが、最初のフィールドのみです。たとえば、次の入力: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR 開始位置を表します: これは文字列またはあなたの言語の同等物として受け取られなければなりません。有効であることが保証されています。たとえば、10人の王がいるかどうか、または王がまったくいないかどうかを気にする必要はありません。 また、シミュレートする動きが与えられます。これは、2つの正方形の名前として表されます。移動するピースがある正方形と、移動する正方形です。たとえば、上の図でキングのポーンを2スペース前方に移動すると、次のように表されます。 e2e4 これも文字列として解釈する必要があります。移動は常に有効であり、キャストをサポートする必要はありません。en passantをサポートする必要があります。これについては、次のセクションで詳しく説明します。 出力 プログラムの出力は、指定された移動(および必要に応じて分解された部分)が行われ、入力と同じ部分FEN表記である必要があります。 爆発の正確なルールは次のとおりです。 キャプチャされるピースを削除します(これは、キャプチャが一時通過である場合を除き、常に入力で指定された2番目の正方形のピースになります)。 キャプチャを行っているピースを削除します(これは常に入力で指定された最初の正方形のピースになります)。 次のものをすべて削除します。 キャプチャが行われた場所を囲む8つの正方形の1つに位置します(パッサンにとっては、これが爆発しない場合、これはキャプチャポーンが置かれる正方形です)。 ポーンではありません。 不慣れな人のためのパッサンルールの簡単な概要:ポーンが開始ランクから2スペース前方に移動し、1マスだけ前方に移動した場合にそれをキャプチャできるポーンがある場合は、とにかくキャプチャすることができますが、後続の移動のみ。このキャプチャは、「行われると言われて渡しに」(またはフランス語で「アンアンパッサン」)。 テストケース 写真では、緑色の矢印はこれから行われる動きを表し、緑色の円は爆発した破片を表します。 入力:rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR、g1f3 出力:rnbqkbnr/pppppppp/8/8/8/5N2/PPPPPPPP/RNBQKB1R 入力:3kBb1r/pp5p/3p4/4pn2/P7/1P2P1pP/2rP1P2/R1B3RK、f2g3 出力:3kBb1r/pp5p/3p4/4pn2/P7/1P2P2P/2rP4/R1B3RK (http://en.lichess.org/ocoSfS5I/white#36から盗まれた) 入力:rnbqk1nr/1pp5/p2pp1pp/5p2/1bN5/2P1PQ1N/PP1P1PPP/R1B1KB1R、f3b7 出力:3qk1nr/2p5/p2pp1pp/5p2/1bN5/2P1P2N/PP1P1PPP/R1B1KB1R (http://en.lichess.org/NCUnA6LV/white#14から盗まれた) 入力:rnbqk2r/pp2p2p/2p3pb/3pP3/5P2/2N5/PPPP2P1/R1BQKB1R、e5d6 出力:rnbqk2r/pp2p2p/2p3pb/8/5P2/2N5/PPPP2P1/R1BQKB1R (http://en.lichess.org/AvgU4Skq/white#16から盗まれました;これは実際の動きではありませんでしたが、実際に不意を突かれたアトミックゲームを見つけるのは面倒でした: P) 入力:5r2/2k5/p1B5/1pP1p3/1P4P1/3P4/P7/1K3R1q、c6h1 出力:5r2/2k5/p7/1pP1p3/1P4P1/3P4/P7/1K3R2 (http://en.lichess.org/l77efXEb/white#58から盗まれた) 得点 これはcode-golfであるため、バイト単位の最短コードが優先されます。
14 code-golf  chess 

3
最高の周辺ポリオミノ
これはコードゴルフです。勝者は、バイト数が最小の有効なコードです。 チャレンジ 入力MとN、正方形の長方形グリッドの幅と高さを指定すると、次を満たすポリゴンを出力します。 多角形のエッジは正方形のエッジのみで構成されています。斜めのエッジはありません。すべて垂直または水平です。 多角形には穴がありません。多角形の外側のすべての正方形は、長方形の外側の境界にある多角形の外側の正方形から開始して、多角形の外側の正方形の直交ステップによって到達できます。 ポリゴンには自己交差がありません。頂点で交わる正方形のエッジのうち、ポリゴンの周囲の一部は2つまでです。 多角形は接続されています。多角形内の正方形は、多角形内にとどまる直交ステップを介して、多角形の他の正方形から到達可能でなければなりません。 ポリゴンには、次の式に従って、可能な最大の境界線があります。 コードは、1〜255のMおよびNで機能する必要があります。 最大周囲長の式 ここでの課題は、最大の周囲長を持つこれらのポリゴンの中で最もゴルフに適したものを見つけることです。最大境界自体は、常に次の式で定義されます。 これは、最大の境界線ではすべての正方形の頂点が境界線上にある必要があるためです。奇数の頂点の場合、これは不可能であり、達成できる最適なものは頂点が1つ少ないことです(境界は常に偶数であるため)。 出力 改行で区切られた文字列(正確にM文字のN行)として形状を出力します。ここでは、多角形の外側の正方形にスペースを使用し、多角形の内側の正方形に「#」を使用していますが、すべての入力で意味が一貫していれば、視覚的に異なる2つの文字を使用できます。 最大1つの先行改行と最大1つの後続改行を含めることができます。 必要に応じて、代わりに正確にN文字のM行を出力し、一部の入力ではM × N出力を選択し、他の入力ではN × M出力を選択できます。 例 穴のため無効です: ### # # ### 交差(斜めに触れる-周囲に4つの正方形のエッジを持つ頂点)と、偶然に穴があるため無効です: ## # # ### 切断されているため無効です: # # # # 最大周囲の有効なポリゴン: # # # # ### クレジット 私は当初、最大周囲長の値がどれくらい速く計算できるかを過小評価していましたが、その値を出力として求めるだけでした。任意のNとMの最大境界線を計算する方法を説明し、これを複数の回答が続く課題に変えるのを助けてくれた、チャットの非常に役立つ人々に感謝します... 特に感謝します: スパー、ズガルブ、フェールサム、ジミー23013。
14 code-golf  grid 

14
FuzzyFinderを実装する
Redditで見つけたこのリンクに触発されました。 FuzzyFinderは、多くのテキストエディターの機能です。ファイルパスを入力し始めるとSと、FuzzyFinderが起動し、入力した文字列を含む現在のディレクトリ内のすべてのファイルを、ファイル内の位置でソートSして表示します。 あなたの仕事はファジーファインダーを実装することです。それは、(stdin、関数引数、またはコマンドラインを介して)文字列Sと文字列のリストを(L必要に応じて)フォーマットし、ファジーファインダーの実行結果を返すか出力するプログラムまたは関数でなければなりません。検索では大文字と小文字を区別する必要があります。S複数の文字列で同じ位置にある結果は、必要に応じて並べ替えることができます。 例: Input: mig, [imig, mig, migd, do, Mig] Output: [mig, migd, imig] OR [migd, mig, imig] これはコードゴルフであるため、最短のソリューションが優先されます。
14 code-golf 

4
木片の梱包
木が2つあります。どちらも、まっすぐな体と体の下のいくつかの余分なブロックで構成されています。(0-indexed)位置0,4,7,9,10に余分なブロックがある例: XXXXXXXXXXX X X X XX ピースは、thの位置にブロックがあるかどうかを示すth文字を含む01バイナリシーケンスとして表すことができます。上の例はとして表すことができます。ii10001001011 2番目のピースを垂直にフリップすることで、2つのピースをまとめることができます(水平方向にフリップすることもできます)。フリップの後、2つのピースを合わせて高さ3になるように配置することができます。 Two example pieces: XXXXXXXXXXX XXXXXXXX X X X XX XXX Second piece flipped vertically and horizontally: XXXXXXXXXXX X X X XX XXX XXXXXXXX Pieces put together: XXXXXXXXXXX XXXXX X XX XXXXXXXX この例では、合計幅が12ブロックになりました。 2つの部分を表す入力として2つの文字列を受け取り、最小の達成可能な幅 3の整数を出力するプログラムまたは関数を作成する必要があります。 入力 文字からなる二つの文字列0と1。 両方の文字列に少なくとも1つの文字が含まれています。 1つのスペースで結合された2つの文字列を受け取ることを選択できます。 出力 達成可能な最小の合計幅である単一の正の整数。 例 0 …

9
非対称KOTH:Catch the Cat(Catスレッド)
非対称KOTH:猫を捕まえる UPDATE: Controller.javaが例外(エラーのみ)をキャッチしなかったため、gistファイルが更新されます(新しいサブミッションを含む)。現在、エラーと例外をキャッチし、それらも出力します。 このチャレンジは2つのスレッドで構成されています。これはcatスレッドです。キャッチャースレッドはここにあります。 コントローラーはここからダウンロードできます。 これは非対称のKOTHです。各サブミッションは猫またはキャッチャーです。それぞれの猫とキャッチャーの各ペアの間にゲームがあります。猫とキャッチャーは別々のランキングを持っています。 キャッチャー 六角形のグリッドに猫がいます。あなたの仕事は、できるだけ早くそれをキャッチすることです。猫がそこに行くのを防ぐために、毎ターン、1つのグリッドセルに水バケツを置くことができます。しかし、猫は(おそらく)愚かではなく、バケツを置くたびに、猫は別のグリッドセルに移動します。グリッドは六角形であるため、猫は6つの異なる方向に進むことができます。あなたの目標は、猫を水バケツで囲むことです。 ネコ あなたは、キャッチャーがあなたの周りに水バケツを置くことによってあなたを捕まえようとしているのを知っています。もちろん、あなたは逃げようとしますが、あなたが怠catな猫であるように(猫はそうです)、あなたはまさにその時に一歩を踏み出します。つまり、同じ場所に滞在することはできませんが、周囲の6つのスポットのいずれかに移動する必要があります。キャッチャーが新しい水バケツを置いたのを見るたびに、別のセルに行きます。もちろん、できるだけ長く回避しようとします。 グリッド グリッドは六角形ですが、六角形のデータ構造がないため、11 x 11正方形の2D配列を取り、猫が6方向にしか移動できない六角形の「動作」を模倣します。 トポロジーはトロイダルです。つまり、アレイの「外側」のセルを踏むと、アレイの反対側の対応するセルに転送されます。 ゲーム 猫はグリッドの指定された位置から始まります。キャッチャーは最初の動きをすることができ、猫とキャッチャーは猫が捕まるまで交互に動きます。ステップ数は、そのゲームのスコアです。猫は可能な限り大きなスコアを取得しようとし、キャッチャーは可能な限り低いスコアを取得しようとします。参加したすべてのゲームの平均合計が提出のスコアになります。猫用とキャッチャー用の2つの別々のランキングがあります。 コントローラ 指定されたコントローラーはJavaで作成されています。キャッチャーまたは猫として、それぞれJavaクラスを実装し(既にいくつかの基本的な例があります)、playersパッケージに配置する必要があります(さらに、コントローラークラスの猫/キャッチャーのリストを更新します)。そのクラス内の追加機能。コントローラーには、単純なcats / catcherクラスの2つの実例がそれぞれ付属しています。 フィールドは、セルの現在の状態の値を格納する11 x 112D int配列です。セルが空の場合は値0があり、猫がいる場合は値-1があり、バケットがある場合はがあり1ます。 あなたが使用できるいくつかの特定の機能がありますisValidMove()/ isValidPosition()あなたの移動(猫)/位置(キャッチャー)が有効であるかどうかをチェックするためのものです。 あなたの番になるたびに、関数takeTurn()が呼び出されます。引数には、現在のグリッドのコピーが含まれており、read(i,j)のセルを読み取るためのメソッドや、回答の有効性をチェックするメソッドが(i,j)含まれisValidMove()/ isValidPosition()ています。これにより、トロイダルトポロジのラップも管理されます。つまり、グリッドが11 x 11のみの場合でも、セルにアクセスできます(-5,13)。 このメソッドはint、可能な移動を表す2つの要素の配列を返す必要があります。猫の場合、これらは{-1,1},{0,1},{-1,0},{1,0},{0,-1},{1,-1}猫が行きたい場所の相対位置を表し、キャッチャーはバケツを置きたい場所の絶対座標を返します{i,j}。 メソッドが無効な移動を生成する場合、提出は失格となります。移動先がすでにバケットであるか、移動が許可されていない/移動先が既に占有されている場合(猫として)、またはバケット/猫が既に存在する場合(キャッチャーとして)、移動は無効と見なされます。あなたは、与えられた関数で事前にそれをチェックすることができます。 提出は合理的に高速に動作するはずです。メソッドが各ステップで200ミリ秒以上かかる場合、失格になります。(できればもっと少ない...) プログラムは、ステップ間で情報を保存できます。 提出 必要な数だけ提出できます。 既に提出した提出物を大幅に変更しないでください。 新しい回答を提出してください。 各提出には、一意の名前を付けることができます。 提出物は、クラスのコードと、提出物の仕組みを説明する説明で構成する必要があります。 <!-- language: lang-java -->自動構文強調表示を得るために、ソースコードの前に行を書くことができます。 得点 すべての猫は、すべてのキャッチャーと同じ回数だけ競争します。私は頻繁に現在のスコアを更新しようとします、アクティビティが減少したときに勝者が決定されます。 この挑戦はこの古いフラッシュゲームに触発されています @PhiNotPiにテストと建設的なフィードバックを提供してくれてありがとう。 現在のスコア(ペアリングごとに100ゲーム) …

5
回転した長方形の寸法を決定する
このスタックスニペットは、寸法、位置、角度、およびグリッド寸法のパラメーターを指定して、黒い背景にエイリアスされた白い長方形を描画します。 <style>html *{font-family:Consolas,monospace}input{width:24pt;text-align:right;padding:1px}canvas{border:1px solid gray}</style><p>grid w:<input id='gw' type='text' value='60'> grid h:<input id='gh' type='text' value='34'> w:<input id='w' type='text' value='40'> h:<input id='h' type='text' value='24'> x:<input id='x' type='text' value='0'> y:<input id='y' type='text' value='0'> θ:<input id='t' type='text' value='12'>° <button type='button' onclick='go()'>Go</button></p>Image<br><canvas id='c'>Canvas not supported</canvas><br>Text<br><textarea id='o' rows='36' cols='128'></textarea><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>function toCart(t,a,n,r){return{x:t-n/2,y:r/2-a}}function vtx(t,a,n){return{x:n.x+t*Math.cos(a),y:n.y+t*Math.sin(a)}}function sub(t,a){return{x:t.x-a.x,y:t.y-a.y}}function dot(t,a){return t.x*a.x+t.y*a.y}function inRect(t,a,n,r){var …

1
4ウェイストップをスケジュールする
4方向の一時停止の標識に、たくさんの車が並んで待っています。誰が次に行くのか、誰がどの方向に行くのかなどについて混乱しています。明らかに最適ではありません。 あなたの仕事は、最適な方法で一時停止標識の交通をスケジュールすることです。 4つの主要な方向のそれぞれに1つずつ、ターンリクエストの4つの文字列を入力として受け取ります。各リクエストはL、左、Sストレート、またはR右のいずれかです。 LLSLRLS SSSRRSRLLR LLRLSR RRRLLLL 最初の行は、交差点の北口のラインナップです。列に並んでいる最初の車が左に曲がります(つまり、東を出ます)。後続の行は、入ってくる東、南、および西の入り口用です。それで、西から来る最初の車は南を出ることを望みます。 トラフィックは一連のステップで移動します。各ステップで、行の先頭にある車のサブセットを選択して続行する必要があります。選択した車は互いに干渉してはなりません。2台の車が同じ方向から出る場合、または互いの進路を横断する必要がある場合(標準的な右ハンドル規則が与えられている場合)は干渉します。したがって、両方ともまっすぐに行きたい2つの反対の車は同じステップで行くかもしれません。4台すべてが右折を希望する場合があります。反対側の2台の車は両方同時に左折できます。 あなたの仕事は、最小限の一連のステップで交差点をスケジュールすることです。各ステップについて、入ってくる車のコンパスの方向がリストされた行を出力します。上記の例では、最小スケジュールは14ステップです。1つの最小スケジュールは次のとおりです。 N [L from North] E [S from East] E [S from East] E [S from East] NESW [L from North, R from East, L from South, R from West] NE [S from North] EW [R from East] NESW [L from …
14 code-golf 

1
ギャップとテトリスの破片の接続
入力または出力としてテトリスブロックのリストを指定するか、ピースが接続できる同じ高さレベルの2つのポイント間の最大ギャップを返すプログラムまたは関数を作成する必要があります。 7種類のテトリスピースは次のとおりです。 これらのピースを、それぞれ文字I、J、L、O、S、T、Zで参照し、形状を参照します。テトリスゲームのようにピースを回転させることはできますが、ミラーリングすることはできません。 私たちのタスクは、与えられたピースから直交接続された領域(側面が側面に接続されている)を作成することです。この領域は、同じ高さにある2つの単位正方形を(直交して)接続する必要があります。ブリッジできる2つの正方形の間の最大のギャップを見つける必要があります。 詳細な例 ピースLを使用すると、3つのギャップを接続できます。 L XLLLX ピースSを使用すると、2つのギャップを接続できます SS XSSX ピースS、S、Oを使用すると、7のギャップを接続できます(8のギャップを接続できないことに注意してください) S XSSOO SSX SOOSS 入力 大文字のI、J、L、O、S、T、およびZのみを含む使用可能なピースを表す文字列。すべての文字は完全なテトリスのピースを表します。 文字列内の文字はアルファベット順になります。 文字列は少なくとも1文字の長さになります。 出力 単一の正の整数、指定されたピースと接続可能な最大のギャップ。 例 入力=>出力 OSS => 7 LS => 5 LZ => 6 ZZZZ => 10 LLSSS => 14 IIJSSSTTZ => 28 IISSSSSS => 24 OOOSSSSSSSSSSSSTT => 45 IJLOSTZ => …
14 code-golf  tetris 

12
数値として分割、文字列として結合、繰り返し
次のプロセスを検討してください。 N.整数非負撮影 などを27。 それを整数に分割N - floor(N/2)しfloor(N/2)(「大きい」と「小さい」半分)、その順序で書き込みます。 例えばに27なり14 13ます。 スペースを削除して、整数をより大きな整数に結合します。 例えばに14 13なり1413ます。 手順2と3を必要な回数繰り返します。 例えば1413→ 707 706→ 707706→ 353853 353853→ 353853353853→... この課題は、まさにこれを行うことですが、必ずしも10進ではありません。 チャレンジ B、N、Sの3つの数字を取り込むプログラムを作成します。 Bは2〜10の整数で、Nの基数(2進数から10進数)です。 Nは、分割-再結合プロセスを適用する非負の整数です。ユーザー入力を容易にするために、整数ではなくベースBの文字列として指定されます。 Sは、分割と再結合のプロセスを繰り返す回数である負でない整数です。 プログラムの出力は、S分割-結合プロシージャの後のベースBのNの文字列表現です。 Sがの0場合、分割は行われないため、出力は常にNです。 Nがの場合0、すべての分割はフォーム0 0を持ち、0再び縮小されるため、出力は常に0です。 例 B = 10, N = 27, S = 1 → 1413 B = 10, N = 27, S = 2 …

4
LOLCODEでのゴルフのヒント
LOLCODEでゴルフをするための一般的なヒントは何ですか?私は、少なくともLOLCODEに特定のゴルフ問題全般に適用できるアイデアを探しています。(たとえば、「コメントの削除」は答えではありません)。回答ごとに1つのヒントを投稿してください。
14 code-golf  tips 

1
12コイン問題
バックグラウンド 12コインの問題は、就職の面接で一般的に使用される古典的なバランスパズルです。このパズルは1945年に初めて登場し、祖父が母と結婚するように頼んだときに父に提示されました!パズルには12個のコインがあり、そのうちの1つは他のものよりも重いか軽い(どちらかはわかりません)。問題は、バランススケールを3回使用して一意のコインを決定することです。いくつかのバリエーションでは、コインが重いか軽いかを識別することも必要です。 ここでのタスクには、最悪の場合に可能な限り少ない計量を使用して、n個のコインを含む一般的な問題を解決することが含まれます。コインが重いか軽いかを識別する必要はなく、どちらかだけです。さらに、指定されたセット以外の追加のコインにはアクセスできません(奇妙なことに、違いが生じます)。 最大で(3 ^ k-1)/ 2個のコインに対してk個の計量で十分であることがわかります(したがって、このバリエーションでは4個の計量で実際に13個のコインを処理できます)。さらに(そして驚くべきことに)、将来の計量が過去の結果に依存するのではなく、計量の完全なセットを事前に選択することが可能です(ただし、ここでは必要ありません)。2つの可能なソリューションの説明については、このペーパーとこのQuoraの回答を参照してください。 仕事 STDIN、コマンドライン引数、または関数引数を介して整数nを入力として関数またはプログラムを作成します。これにより、最悪の場合に可能な限り少ない計量を使用してnコインの問題を解決します。プログラムは: 計量器の1,2,3-4,5,6両側にあるコインのリストを示す形式で計量を標準出力に印刷します。計量されていない硬貨については言及しないでください。コインには暗黙的に1からnまでの番号が付けられ、番号順に印刷する必要はありません(2,1-3,4と同じ1,2-3,4です)。 各プログラムを秤量した後であるべき、STDINを介して入力を待つ必要があり<、=または>、スケールの左側は、ライター同じ、または右側よりも重いかどうかを示します。 最後の計量結果の後、プログラムは一意のコインの番号を印刷または返す必要があります。 プログラムは、ユーザーからの一貫性のない結果入力を処理する必要はありません。 プログラムは3未満のnを処理する必要はありません。 出力例 >> 3 1-2 >> = 1-3 >> < 3 # using Quora algorithm >> 13 1,2,3,4-5,6,7,8 >> < 1,2,5-3,4,6 >> > 3-4 >> < 3 # using paper algorithm >> 13 1,2,3,4-5,6,7,8 >> < 2,6,7,9-3,8,10,11 …

8
ホワイトスペースでのゴルフのヒント
ホワイトスペースでゴルフをするための一般的なヒントは何ですか?私はコードゴルフの問題に適用できるアイデアを探していますが、少なくとも空白に固有のアイデアも探しています(たとえば、「コメントの削除」は答えではありません)。 回答ごとに1つのヒントを投稿してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.