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

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

1
最大の凸多角形の面積を見つける
整数座標のリストが与えられたら、リストから構築できる最大の凸多角形の面積を見つけます- すべての頂点がリストにあります リストの要素はポリゴン内に含まれていません。 例: (0、0)(8、0)(0、1)(3、1)(7、1)(1、2)(5、2)(9、2)(2、3)(5、3) (7、3)(3、4)(5、5)(11、5) 視覚化: o o o o o o o o o o o o o o これから作成できる最大の凸多角形は次のとおりです。 o o o o o o o o o 面積は12です。 任意の適切な形式で座標のリストを取得し、小数点以下2桁以上に丸められた最大の凸多角形の領域を(選択した言語に適切な方法で)出力する必要があります。 さらに、ポイントのすべてのサブセットを単純にブルートフォースするのではなく、何らかのアルゴリズムを使用する必要があります。これを強制するには、プログラムは最新のPCで1分以内に50個の頂点のリストを解決する必要があります。 バイト単位の最短コードが優先されます。

26
かっこいい2進数
先行ゼロのないバイナリで正の整数を表し、すべてをaで、すべてをa で置き換える1と、すべての括弧が一致しますか?(0) ほとんどの場合、彼らはしません。たとえば、9は1001バイナリであり())(、最初の2つの括弧のみが一致するになります。 しかし、時々一致します。たとえば、44は1011002進数で、これはになり()(())、すべての左括弧に対応する右括弧があります。 正の10進整数を取り込んで、数値の2進括弧バージョンにすべての一致する括弧がある場合に真理値を出力または返すプログラムまたは関数を作成します。そうでない場合は、偽の値を出力するか返します。 バイト単位の最短コードが優先されます。 関連するOEISシーケンス。 100以下の真実の例: 2, 10, 12, 42, 44, 50, 52, 56 100以下の偽の例: 1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, …

4
変異センザンコウ
これはコードゴルフの課題であり、機械学習を説明するために馬または馬を改造する馬のように振る舞うプログラムを考案する必要があります。 バックグラウンド ここで説明する「センザンコウゲーム」と呼ばれる基本的な人工知能プログラムがあります。基本的なアイデアは、プログラムを初めて実行するときに次のことを尋ねることです。 OK、何か考えてください それはセンザンコウですか? その後、次のいずれかを返信できます。 はい その場合、それは言います: 良い。とても簡単でした。 または、そうでない場合: ああ。さて、あなたは勝ちます-あなたは何を考えていましたか? あなたが言うかもしれない: 犬 それに言うだろう 犬について質問してください。犬とセンザンコウの違いがわかります。 返信するかもしれません アリを食べますか? それから尋ねます: 犬の答えは何ですか? あなたが言うだろう いや そしてそれは言うだろう ありがとう 次回の実行時に、上記の質問をし、そのような質問のバイナリツリーを構築します。 チャレンジ 背景は十分です。この課題は、自己修正のセンザンコウプログラムを作成することです。ルールは次のとおりです。 プログラムの出力(上記の説明を参照)はになりますSTDERR。最終的な応答は常に「良い。それはすっごく簡単だった」です。または「ありがとう」。この後、プログラムの現在のバージョン、または質問をに組み込んだプログラムの新しいバージョンを出力する必要がありますSTDOUT。書き込みをサポートしていない言語で書かれた無回答STDOUTおよびSTDERRまたはからの読み取りがSTDIN有効になることはありません。 言い換えると、UNIXの場合、次のようにプログラムを呼び出すことができます。 例: $ mylanguage myprogram > myprogram.1 [dialog goes here] $ mylanguage myprogram1 > myprogram.2 [dialog goes here] プログラムは指定されたプロンプトを正確に使用する必要があります(プロンプトを短くするとスキルが表示されないため)。プロンプトは、次のとおりです(引用符なし、および%sが置換されます)。 リスト: "OK, please think …
28 code-golf  quine 

11
枢機inalと序数、1〜100
これは、圧縮筋肉を伸ばす簡単な方法です。コード(完全なプログラム)は、1から100までのすべての基数のスペル表記された英語表現を出力し、次に1から100までのすべての序数を出力する必要があります。ハイフン付き。各リストは単一の大文字で始まり、ピリオドで終わる必要があります。2つのリストは改行で区切る必要があります。 わかりやすくするために、次の正確なバイトストリームを生成する必要があります。 One, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen, twenty, twenty-one, twenty-two, twenty-three, twenty-four, twenty-five, twenty-six, twenty-seven, twenty-eight, twenty-nine, thirty, thirty-one, thirty-two, thirty-three, thirty-four, thirty-five, thirty-six, thirty-seven, thirty-eight, thirty-nine, forty, forty-one, forty-two, forty-three, forty-four, forty-five, forty-six, forty-seven, forty-eight, …

11
良い素数間の最大のギャップを見つける
長さ、和、積がprimeである最大の素数を見つけるなどの質問の素晴らしい伝統に従って、これは最大の素数の挑戦の変形です。 入力 あなたのコードは何も入力してはいけません。 定義 素数pとはgood、p-1厳密に2異なる素因数がある場合です。 出力 あなたのコードを出力すべき連続した良い素数間の絶対差qとpそう|q-p|できるだけ大きく、qよりプライム最小の良い大きいですp。適切なペアをいくつでも出力でき、最後の出力がスコアとして取得されます。 例 最初の55個の良い素数のシーケンスはhttps://oeis.org/A067466です。 スコア あなたのスコアは、単に|q-p|あなたが出力した良い素数のペアのものです。 言語とライブラリ 素数性テストまたは整数の因数分解のためのライブラリ関数を除き、任意の言語またはライブラリ(このチャレンジ用に設計されていないもの)を使用できます。ただし、スコアリングの目的でコードをマシンで実行するため、Ubuntuでコードを実行する方法について明確な指示を提供してください。 私のマシンタイミングは私のマシンで実行されます。これは、8GB AMD FX-8350 8コアプロセッサへの標準のUbuntuインストールです。これは、コードを実行できる必要があることも意味します。 詳細 それより前にメモリが不足し始めない限り、2分後にコードを強制終了します。したがって、カットオフの前に必ず何かを出力する必要があります。 素数の外部ソースを使用することはできません。 Megoによると、Miller-Rabinは341,550,071,728,321(またはそれ以上)まで確定的にテストできるといいますが、確率的プライムテスト方法を使用できます。http://miller-rabin.appspot.com/も参照してください。 1からのすべての整数をチェックする最良のエントリ Goの猫による756 756 by El'endia Starman in Python C#の Adnanによる1932年(mono 3.2.8を使用) Pythonの Yetiによる2640(pypy 4.01を使用) C ++の Reto Koradiによる2754 Javaの Peter Taylorによる3486 RPythonの primoによる3900(pypy 4.01を使用) Javaのコーダーによる4176 大きなギャップを見つけるために多数の整数をスキップする可能性のある最良のエントリ 14226 by C …

15
二項の二乗を示す
(任意の方法で)2つの異なる自然数(任意の妥当なサイズ)が与えられ、以下の例のようにそれらの合計の2乗を(任意の方法で)出力します。 4と3の場合、出力: 12 12 12 12 9 9 9 12 12 12 12 9 9 9 12 12 12 12 9 9 9 16 16 16 16 12 12 12 16 16 16 16 12 12 12 16 16 16 16 12 12 12 16 16 16 16 12 12 …

20
大文字なしで大文字を印刷する
おっ、おっ、おっ...プログラムの入力を停止します。いいえ、「印刷ABC...」という意味ではありません。私は米国の首都について話している。 具体的には、次のリストに示されているすべての都市/州の組み合わせを印刷します 任意の順序で Baton Rouge`LA_Indianapolis`IN_...どの単語が都市であり、どの州であり、どのエントリであるかが明確である限り、区切り文字を選択します(たとえば、許容されます) ABCDEFGHIJKLMNOPQRSTUVWXYZソースコードのいずれも使用せずに 出力はSTDOUTまたは同等のものである必要があります。 編集-おっと! <edit> (下記のようにアニマニアックスのおかげで、)メモリからリストを入力している間、私は明らかにされ、ワシントンD.C.を無視できません州都が、ある曲の中で、時には(「大文字のリスト」に含まれています以下のMathematica 回答のように)。このリストにその都市を含めるつもりでしたが、どういうわけか見逃しました。その結果、答えはありません、その都市を持っているが罰せられることはないだろう、と答えないのいずれか、その都市を持っているが罰せられることはありません。基本的に、出力にWashington, DC含まれるかどうかはあなた次第です。ごめんなさい、皆さん! </edit> Baton Rouge, LA Indianapolis, IN Columbus, OH Montgomery, AL Helena, MT Denver, CO Boise, ID Austin, TX Boston, MA Albany, NY Tallahassee, FL Santa Fe, NM Nashville, TN Trenton, NJ Jefferson, MO Richmond, VA Pierre, SD Harrisburg, …

3
早く!ブラックホールを脱出せよ!
87,539,319年であり、今では孤独な宇宙遊泳が当たり前になっています。多くの人が自分で宇宙に飛び込み、背中のジェットパックだけで推進され、進行中にパソコンとキーボードでコースをプログラミングします。 あなたはそのような人です。あなたは、美しく、静かな宇宙遊泳に出かけましたが、突然、あなたはブラックホールの重力に捕らわれました! あなたがこのブラックホールに向かって急降下し、内側に向かってより速く螺旋を描いているとき、あなたが生き残るための唯一のチャンスは苦痛のメッセージを放送することであり、近くの船があなたを救助することを願っています。 そのため、キーボードをブレークアウトし、プログラムを打ち解き始めます。 プログラムは任意の言語で作成できHELP!、stdoutに出力する必要があります(PCはすべてのstdoutを宇宙の奥深くまで放送します)。 ただし、ブラックホールの近くにいると、キーボードはゆっくりと細断されます! 以下のようなQWERTYキーボードを使用しており、ブラックホールが左側にあると仮定します。 左右のシフトは2つの異なるキーであることを忘れないでください。 キーを押すたびに、キーボードの左端の列(左端の赤い線で覆われたキー)がはぎ取られ、ブラックホールに飛び込みます。 だから、あなたの最初のキー入力はキーボードの任意のキーかもしれないが、その後の以降なしから左端 Tab、Caps、Shift、Ctrlまたは`キーを使用することができるすべてで。(r-shiftおよびr-ctrlは引き続き使用できます) 次キー押下後、キーは1、Q、A、ZおよびAlt深淵に投げつけされ、その後、使用されなくてもよいです。その後、あなたが失うSpace、X、S、W、2など。 明らかに、プログラムをできるだけ早く完了して、レスキュー時間が長くなるようにします。したがって、これはコードゴルフであり、キーを押すことで最短のプログラムが勝ちます! 各回答にはキー入力のリストが含まれている必要があるため、私の回答がこのプログラムであった場合(言語squardibblyack) !HELP\. キーリストは次のようになります。 Shift!HELP リリースシフト \. 長さ:8 私はこの挑戦が難しすぎるかもしれないと心配していますが、提出された種類の答えを見たいです!

30
語長の水平グラフ
入力 任意の数のスペースで区切られた単語のリスト。 出力 n番目の行が*n番目の単語と同じ数のアスタリスク()で構成される水平ASCIIアートグラフ。 使用例 >信号のユーザ入力は、入力してプログラムをテストしてはいけません。 > This is an example histogram of word length **** ** ** ******* ********* ** **** ****** > a aa aaa aaaa aaaaa * ** *** **** ***** > double space example ****** ***** ******* リファレンス実装 仕様に疑問がある場合、プログラムの出力は、すべての入力の下で以下のプログラムの出力と正確に一致する必要があります。 puts gets.chomp.split.map{|word| '*' * word.length}.join("\n")

5
Take It or Leave It:コンピューター向けゲームショー
コンテキスト: 世捨て人の億万長者がゲーム番組を作成し、世界で最も優秀で優秀なプログラマーを引き付けました。月曜日の真夜中のストロークで、彼は応募者のプールから1人をその週の出場者として選び、彼らにゲームを提供します。あなたは今週の幸運な出場者です! 今週のゲーム: ホストは、10,000個のデジタルエンベロープのスタックへのAPIアクセスを提供します。これらのエンベロープはランダムにソートされ、その中に1ドルから10,000ドルの間のドル値が含まれます(同じドル値を含むエンベロープは2つありません)。 次の3つのコマンドを自由に使用できます。 Read():スタックの一番上にある封筒のドルの数字を読み取ります。 Take():封筒にドル記号をゲームショーウォレットに追加し、封筒をスタックから取り出します。 Pass():スタックの一番上のエンベロープからポップします。 ルール: 封筒でPass()を使用すると、内部のお金は永久に失われます。 $ Xを含むエンベロープでTake()を使用する場合、それ以降、$ Xを含むエンベロープでTake()を使用することはできません。これらの封筒の1つでTake()を実行すると、ウォレットに0ドルが追加されます。 最大限の金額でゲームを終了するアルゴリズムを作成します。 Pythonでソリューションを作成している場合は、@ Maltysenの好意により、このコントローラーを使用してアルゴリズムをテストしてください。https://gist.github.com/Maltysen/5a4a33691cd603e9aeca コントローラを使用する場合、グローバルにアクセスできず、提供されている3つのAPIコマンドとローカルスコープ変数のみを使用できます。(@Beta Decay) 注:この場合の「最大」とは、N> 50が実行された後のウォレットの中央値を意味します。Nが無限大になると、特定のアルゴリズムの中央値が収束することが間違っていると証明されたいと思います。代わりに平均値を最大化することをお気軽に行ってください。しかし、平均値は中央値よりも小さなNによって放り出される可能性が高いと感じています。 編集:エンベロープの数を10kに変更して処理を容易にし、Take()をより明確にしました。 編集2:メタに関するこの投稿を考慮して、賞品の条件は削除されました。 現在のハイスコア: PhiNotPi-$ 805,479 レトコラディ-$ 803,960 デニス-$ 770,272(改訂版) アレックスL.-714,962ドル(改訂)

19
月曜日のミニゴルフ#1:逆フィボナッチソルバー
月曜日のミニゴルフ:毎週月曜日に(願わくば!)投稿された一連の短いコードゴルフチャレンジ。 A フィボナッチ様配列は、有名なのと同じ方法を用いて得られるフィボナッチ数列。つまり、各数値F(n)は、シーケンス内の前の2つの数値を加算する(F(n)= F(n-1)+ F(n-2))か、次の2つの数値を減算する(F (n)= F(n + 2)-F(n + 1))。主な違いは、これらのシーケンスは任意の2つの数字で開始できることです。これらのシーケンスのゼロインデックス付けは議論の余地がありますが、今のところ、このルールを使用します。 フィボナッチ数列の0番目の数字は、直前の数字よりも小さい最後の数字です。 例として、フィボナッチ数列はとして書くことができる1, 0, 1, 1, 2, 3, 5...ので、数列の0番目の数字はlone 0です。 チャレンジ チャレンジの目標は、3つの整数を任意の形式で取り込むプログラムまたは関数を作成することです。 AおよびB、シーケンスの生成を開始する2つの数値。 N、出力する結果シーケンスの長さ。 そして、0番目から始まるシーケンスの最初のN個の数値を出力します。 詳細 A、B、およびNは、視覚的に分離されている限り、任意の順序および形式で使用できます。別の順序/形式を使用する場合は、それが何であるかを指定してください。 A、B、およびNは常に正の整数であると想定できます。 Nは100以下であり、結果のシーケンスにはが含まれないと想定できますx >= 2^31。 場合Aがより大きいB、次いでBは、シーケンス内の0番目の数です。 出力は、スペース、コンマ、改行で区切る必要があります。 末尾のスペースまたは改行は使用できますが、末尾のコンマは使用できません。 テストケース 例1: 8 13 10 8 13前よりも大きい数が見つかるまで逆方向に作業すると、が得られ13 8 5 3 2 1 1 0 1ます。したがって、0このシーケンスの0番目の数値です。これから前進し0て、次の9人のメンバーを印刷します。 0 …

23
アシミメーションジャンピングジャック
これは私の最初の挑戦ですので、私はそれをかなりシンプルにしています。 telnet towel.blinkenlights.nlコマンドラインに入力してEnterキーを押したことがあれば、アシミエーションの喜びを体験できます。アシミエーションとは、非常に単純に、アスキーアートを使用してアニメーションを行うことです。今日は、ジャンピングジャックをする人の非常に基本的なアシミエーションを行います。 2つのascii写真があり、それらを1つのasciimationにまとめます。番号1: _o_ 0 / \ 2番: \o/ _0_ <blank line> 2番目の行の最後に空白行があることに注意してください。 したがって、プログラムは次の手順を実行する必要があります。 コンソール画面をクリアします。 正しいASCIIアート画像を印刷します。 フラグまたは何かを設定して、次に他の画像を実行するようにします。 しばらく(約1秒)待ちます。 1に進みます。 ルール あなたのプログラムは(理論的に)無限ループでなければなりません。 使用するプログラミング言語は、このチャレンジが投稿される前に作成されている必要があります。 これはcode-golfであるため、バイト単位の最短コードが優先されます。 標準の抜け穴が適用されます。 楽しい!

1
コードゴルフのアニメーション
いくつかの文字を落とし、コードを削るコードゴルフエントリが表示されたら、横並びのdiffの編集履歴を確認します。見て、学ぶ:) この課題は、最も美しいアニメーションdiffを生成するプログラムを作成することです。 入力は、順序付けられた一連のテキストバージョンになります。 プログラムは、任意のプログラミング言語で作成できます。 プログラムは、特定のプログラミング言語の入力データにプログラム自体を制限することが許可されています。 プログラムは特定の入力データに合わせて調整しないでください。プログラムは汎用で、順序付けられた一連のテキストバージョンで機能する必要があります。 入力のバージョンごとに、バージョンの全文が表示される出力アニメーションに対応する時間が必要です。バージョンステージ間の差分をアニメーション化する必要があり、すべてのバージョンステージが出力に順番に存在している必要があります。これらのキーフレームでは、バージョンサイズを表示する必要があり、視聴者はこれがその時点で見ている完全なバージョンであることを理解する必要があります。 プログラムは、差分の計算にサードパーティのコードを使用することはできません。 構文強調表示の出力はオプションです。プログラムが構文を色付けする場合、サードパーティのコードを使用して色付けすることはできません。 出力は、アニメーションGIFになります。 プログラムは、サードパーティのライブラリを使用してGIFを作成する場合があります。 これは人気コンテストなので、このサイトの人気コンテストの定義に従って、最も投票数の多いエントリが勝ちます。 PythonのndiffとPillowの初歩的なアニメーションGIFサポートを使用し、追加と削除の各ステップをアニメーション化する簡単なスクリプトの例を次に示します。 個人的には、これはかなり悪い仕事だと思います。構文の強調表示は行わず、再配置されたコードチャンクを移動しようとすることも、誰かがライブで編集しているように感じることもありません。また、キーフレームの入力サイズをバイト単位で表示することに関する規則を破り、サードパーティのライブラリを使用して差分を作成します。改善の余地がたくさん! そして、できれば、人気のあるエントリがcodegolf.stackexchange.comコミュニティにとっても便利な楽しいツールになることを願っています。そのため、他の人がプログラムを簡単に実行して使用できるようになれば幸いです。

10
視覚的な長い乗算
カウント以外の何もすることなく、2つの整数の長い乗算を実行する良い方法があります。これは時々インターネット上で共有されます。各数字の数字は、2本の数字が90度の角度になった斜めの線の束として書きます。次に、発生した個別の列の交差点を数えるだけです。これはおそらく図で明らかになります。以下は計算の例です21 * 32: 「ビジュアル/グラフィックの長い乗算」を検索すると、さらに多くの例が見つかります。 この課題では、ASCIIアートを使用してこれらの図を生成します。同じ例の場合、出力は次のようになります。 \ / X / \ / X / \ X / X X X / \ / / X X X / / X \ / X / \ X / \ X X / X \ / \ いくつかの例(以下を参照)からこれらの構成規則を理解するのがおそらく最も簡単ですが、ここでいくつかの詳細を示します。 交差するセグメントはX、ラインの非交差セグメント/または\。 最も外側の交差点の後に、ちょうど1つのセグメントがあるはずです。 異なる桁に属する交差点の間に正確に1つのセグメントが存在する必要があります。ゼロ桁がある場合、これらは連続/または\セグメントになります。 正の入力(少なくとも2 16や2 …

19
マイクロ秒を時間:分:秒などの形式にします
以下は、今日Stack Overflowで出された質問に触発されたものです。 マイクロ秒数0 <= n <= 86400000000(例12345678900)を指定すると、フォーマットされた文字列hh:mm:ss:000:000(例:)を出力します03:25:45:678:900。 0 -> '00:00:00:000:000' 12345678900 -> '03:25:45:678:900' 86400000000 -> '24:00:00:000:000' Pythonで209バイトのソリューションがありますが、それより低くすることはできますか?
28 code-golf  date 

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