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

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

6
連日があります!
実行された連続日数を追跡するプログラムを作成します。 日は深夜(プログラムが実行されているコンピューターの現地時間)にリセットされます。 プログラムが実行されない日がある場合、カウンターはゼロにリセットされます。 プログラムが実行されるたびに、その日にプログラムが初めて実行された場合は、カウンターが1日上がるはずです。これは、プログラムを初めて実行するときに、「1日間連続して!」と言う必要があることを意味します。 プログラムの出力は次の形式です。 You have a [streak_length] day streak! データを外部に保存したり、ソースコードを変更したりできます。 これはcode-golfなので、バイト単位の最短コードが勝ちです!
15 code-golf  date 

10
戦争ゲームの結果を見つける
戦争ゲームの結果を見つける 私が小学校にいたとき、「ロック紙はさみ」のようなゲームがありました。集会中、先生を待つとき、休憩時間などにプレイしました。「戦争」と呼びました。いくつかの検索の後、これは「ショットガンゲーム」(WikiHowによる)のはるかに単純なバリアントであることがわかりました。ルールがわずかに異なるため、これを「戦争」と呼びます。 2人が向かい合って座っています。ゲームの目的は、他のプレイヤーを「殺す」ことです。ターンごとに、次の3つの動きのいずれかをプレイできます。 リロード:あなたは一発の銃を持っています。毎回起動する前にリロードする必要があります。すでに弾薬を持っている場合のリロードは合法ですが、何もしません。リロードは、両手でこめかみをタップすることで象徴されました。各プレイヤーは弾薬0から始まります。 ガード:唯一の安全な動き。警備中に撃たれても、死なない。ガードは、胸に腕を組むことで象徴されました。 発射:銃を発射します。発射に成功するには、最後のショットからリロードする必要があります。相手がリロードしている場合、あなたが勝ちます。彼らも発砲し、あなたの両方が弾薬を持っている場合、それは引き分けです。彼らが警備している場合、弾薬を無駄にします。弾薬なしでの発砲は合法的な動きですが、何もせず、リロードのような脆弱性を残します。発射は、他のプレイヤーを指すことで象徴されました。 RPSと同様にプレイされました。各プレイヤーが同時に選択をスローダウンしました(互いのリズムを保つために、ターンの間に足を2回タップしましたが、それはチャレンジにとって重要ではありません)。 チャレンジ: あなたの仕事は、戦争ゲームの結果を見つけることです。関数または完全なプログラムを指定できます。 入力 各プレイヤーが各ターンで選択したオプションは、文字/文字列で表されます: r:リロード g:ガード f:火 入力は、ペアのリスト、区切られた/区切られていない文字列、またはこれらの行に沿ったその他のものです。 Pythonの入力例として、があります[("r", "g"), ("f", "r")]。これは、最初のターンで最初のプレイヤーがリロードし、2番目のプレイヤーがガードしたことを意味します。2番目のターンで、最初のプレイヤーが射撃し、2番目のプレイヤーがリロードします。プレイヤー1がこのゲームに勝ちます。同じ入力は、必要に応じとして表すことができ"r g f r"、"rgfr"、"rg fr" "rg-fr"... 次のことを想定できます。 入力は選択した形式と一致し、有効な文字のみが含まれます。 誰かが100ターン以内に死にます。 ただし、誰かが死んだときにターンが終了すると想定することはできません。 出力 誰が勝ったか(または誰が最初に勝ったか)を示す値*。各シナリオで何を出力するかを選択できますが、次のことを考慮する必要があります。 プレイヤー1が勝利 プレイヤー2が勝利 彼らはお互いを殺します(引く) 各結果には地区値が必要であり、各シナリオで常に同じでなければなりません。 例として、1プレーヤー1が勝った2とき、プレーヤー2が勝ったとき、および0引き分けの場合に出力できます。プレーヤー1が勝ったとき、プレーヤー2が勝ったとき、および引き分けの場合は常に出力する必要があります。120 返されるか、標準出力に出力されます。末尾の空白は問題ありません。 明らかなように、引き分けにつながる唯一のシナリオは、両方のプレイヤーが射撃し、両方が弾薬を持っている場合です。 *このチャレンジでは、誰かが死亡した後もターンが続く可能性があるため、最終的には1人以上のプレイヤーが勝つ可能性があります。入力に従って最初に勝った人を見つける必要があります。 テストケース(1P1が勝った2とき、P2が勝ったとき0、引き分けの場合): "rg fr" => 1 (P1 shot P2 while they were reloading) …
15 code-golf  game 

7
ASCII-Sockを編んでください
前書き 簡単に言えば、数日前に誤って靴下を編み始めたのですが、プレーンステッチのかなり論理的な構造からアイデアが生まれました。 入力 入力は、範囲内の偶数の整数Nです[2,30]。 出力 出力は明らかに靴下です。 構造 プレーンステッチのみを使用するvため、下向きのステッチと>右側のステッチにのみ使用します。以下の例を使用して、完全な構造を説明しN=8ます。 vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvv>>> vvvvvv>>>>>> vvvvv>>>>>>>>> vvvv>>>>>>>>>>>> vvvv>>>>>>>>>>>>>>>>>>>>>>>> vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> vvvv>>>>>>>>>>>>>>>>>>>>>>>> 最初のブロックは上部です。幅Nと高さがありますN*1.5 その後、かかとが始まります。幅になるvまで、右側から行ごとに1を引きますN/2。次にN/2、N/2下の幅の行を追加して、下向きのニットを完成させます。N/2 + 1幅を持つ行の合計を与えることに注意してくださいN/2 最初の部分: vvvvvvvv //begin with width N vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv vvvvvvvv // …

3
最短のゴロム定規を見つける
ゴロム定規は、負の整数のセットであるため、セット内の整数の2つのペアが同じ距離だけ離れていることはありません。 たとえば[0, 1, 4, 6]、このセットの2つの整数間の距離はすべて一意であるため、Golombルーラーです。 0, 1 -> distance 1 0, 4 -> distance 4 0, 6 -> distance 6 1, 4 -> distance 3 1, 6 -> distance 5 4, 6 -> distance 2 (翻訳は自明であるので)この課題では単純化のために、我々は課すゴロム定規があること、常に番号が含まれています0(前の例がないもの)。 このセットは長さがあるので4、これはゴロムの秩序 支配者だと言い4ます。このセット(またはセット内に0常にあるため、要素)の最大距離はです6。したがって、これは長さの ゴロム定規であると言い6ます。 あなたのタスク 短い長さの(次 50を100含む)順序の Golomb定規を見つけるあなたが見つけることができるように。見つけたルーラーは最適である必要はありません(以下を参照)。 最適性 順序Nのゴロム定規は、他の順序のゴロム定規がない場合に最適であると言われていますNは、より短い長さの。 最適なゴロム定規は28未満の次数で知られていますが、次数が増えるにつれて最適性を見つけて証明することはますます難しくなります。 したがって、次の注文のいずれかに対して最適なゴロム定規を見つけることは期待されていません 50と100(あなたは、彼らが最適であることを証明できることを期待し、さらに少ないです)。 プログラムの実行に時間制限はありません。 ベースライン …

5
ソースコードを16進ダンプする
コードゴルフでは、通常は印刷できない文字を使用したことがあるため、コードの16進ダンプが必要になる場合があります。それでは、Hex Dumps自体のプログラムを作成してみませんか? チャレンジ この課題は、入力がなければ、ソースコードの16進ダンプを次の形式で出力することです。 0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020: 00 00 00 00 00 00 00 00 00 …
15 code-golf  quine 

5
Piの音を再生する
うん、あなたはタイトルを正しく読みます。piの音を再生します。 より具体的には、最初の1000のpiのすべての数字について、音符にマッピングし、結果のメロディをファイルに出力します。 基本的に、各数字はCメジャースケール(基本的に通常のスケール)の音符に変わります。したがって、1がミドルCに、2がD4に、3がE4に、9がD5に、というようになります。 ルール 各音符の長さは正確に0.5秒でなければなりません。 メロディには、開始3を含むpiの最初の1000桁が含まれている必要があります。 1から7はミドルCからB4、8はC5、9はD5、0はE5です この課題の前に作成されたものである限り、すべての適切にサポートされているファイル形式が許可されます。 開始と終了を含む、ファイルのどこにも一時停止がない場合があります。 演奏される楽器は関係ありません。正しい音が簡単に聞こえる限り、ピアノ、正弦波、その他何でもかまいません。 ファイルを除いて、入力を受け取らず、出力を生成してはなりません。他のファイルからの読み取りは許可されていません。 標準的な抜け穴は禁止されています。 数学コードの例: (*please forgive me for this horrible, horrible mess of code*) digits = RealDigits[Pi, 10, 1000][[1]] /. {0 -> 10}; weights = {0, 2, 4, 5, 7, 9, 11, 12, 14, 16}; melody = {}; For[i = 1, …

5
巻尺ストリング
動機:時には、あなたが文字列のどこにいるかを知る必要があります。文字列の任意の部分を見て、できる限り正確にどこにいるかを知りたいと思うでしょう。 課題:指定された長さの巻尺文字列を出力するプログラムを作成します。巻尺文字列の自己は、その長さはそれほど遠くできるだけ頻繁に、それは自身の長さだ沿って説明します。 ルール: プログラムは、テープメジャー文字列の合計長に対して、1つの正の整数パラメーターを取る必要があります 出力の桁の各連続した文字列の場合は、これらの数字は正確にこれまでの出力の長さを報告しなければなりません- 包括的! 長さは、文字列の先頭から各番号の末尾まで測定されます 文字列にはできるだけ多くの長さの数字を含める必要があります あいまいさを避けてください。セパレータ/デリミタを使用して、数字が並置されるのを防ぐことができます12。 文字列は、末尾のセパレータなしで、常に正確にその全長を報告する必要があります 長さを正確に保つために複数のセパレータが必要になる場合があります。たとえば、長さ4の巻尺文字列の例を次に示します。 1--4 非規範的/網羅的な例: 長さ1の巻尺文字列: 1 長さ2の巻尺 -2 長さ3の巻尺文字列: 1-3 長さ4の巻尺文字列:1--4または-2-4(両方のレポートの長さを可能な限り頻繁に、つまり2回、正しい合計長で終わる) 長さ10の巻尺文字列: 1-3-5-7-10 長さ11の巻尺文字列:1-3-5-7--11or 1-3-5--8-11or 1-3--6-8-11or 1--4-6-8-11or -2-4-6-8-11(すべてできるだけ多くの長さ番号を持ち、文字列の合計の長さで終了します)
15 code-golf  string 

25
次の素数を見つけるプログラム
イントロ: タイムマシンであることが判明した、楽しみのために作成したデバイスで、誤って時間の流れを破損しました。その結果、あなたは遠い未来に押しやられました。コンピューティング、処理能力、およびコンピューター全般が膨大な量、正確には無限の量で進化していることに気づきました。したがって、無限のメモリと処理能力を備えたコンピューターを手に入れることができます。無限のメモリと無限の処理能力を持つ方法がわかりませんが、それを受け入れて現在に戻ります。 チャレンジ: 現在最大の素数を発見した人は 2^74,207,281 − 1 100.000ドルを支払っ。コンピューターに費やしたお金を取り戻したいので、次の素数を見つけるプログラムを作成することにします。数値を入力し、ブルートフォースまたは他の方法で次の素数を見つけるものを作成します。 明確化: 無限のメモリと処理能力を持つ仮想マシンがあります。プログラムを制限してはいけません(例:C#のintはから-2,147,483,648に保存できます)2,147,483,647)、よくあなたのプログラムは、ストア、および任意のサイズの任意の数で動作する必要があります。無限のリソースがあるため、許可した場合にメモリが不足しても気にしないでください。 I / Oの例: 入力:22,338,618桁の現在発見されている素数。 出力:まさに次の素数 明らかに、物理マシンでの計算には膨大な時間がかかるため、動作することを証明する必要はありません。ただし、プログラムを無限の処理能力/メモリを備えた仮想マシンに移動した場合、即座に計算されるはずです。 次の素数を見つけ、数が素数であるかどうかを確認することは、2つのまったく異なることです。
15 code-golf  math  primes 

9
些細なシーケンスのひねり
前書き 次のように定義された整数fのシーケンスを考えます。 f(2)= 2 もしnは奇素数である、そして、 =(N)F(+ F(N-1)F(N + 1))/ 2 もしN = P・Qは、その後、複合体であるF(N)= F(P)・F(Q) n≥2ごとにf(n)= nであることを確認するのはそれほど難しくありません。したがって、fの計算はそれほど興味深い課題ではありません。定義をひねりましょう。最初のケースを半分にし、2番目のケースを2倍にします。次のように定義された新しいシーケンスgを取得します。 g(2)= 1 場合nは奇素数である場合、G(N)= G(N-1)+ G(N + 1) もしN = P・Qが複合され、次いでG(N)= G(P)・G(Q) タスク あなたのタスクは、入力としてn≥2の整数を取り、出力としてg(n)を生成することです。整数オーバーフローを心配する必要はありませんが、計算できるはずです g(1025)= 81正しく、アルゴリズムは任意の大きな入力に対して理論的に機能するはずです。 完全なプログラムまたは関数を作成できます。最も低いバイトカウントが優先されます。 例 上記でg(1025)= 81と主張したので、手で計算してみましょう。素因数分解1025が提供します 1025 = 5*5*41 => g(1025) = g(5)*g(5)*g(41) 41は素数なので、 g(41) = g(40) + g(42) 次に、40と42の素因数分解を計算します。 40 …

15
ポールとチキンを食べる5人の友達を見つける
Paulはあなたのベルギーの知人の一人であり、次の5つの文字列のうち少なくとも1つを出力するプログラムを作成してほしいと考えています。 12496=>14288=>15472=>14536=>14264 14264=>12496=>14288=>15472=>14536 14536=>14264=>12496=>14288=>15472 15472=>14536=>14264=>12496=>14288 14288=>15472=>14536=>14264=>12496 それは彼が最も誇りに思っている友人を表し、彼は彼らと一緒に食事をしたいと思います。ポールはまた、6番は完璧であり、それだけが使用する価値があると考えています。したがって、コードで「6」以外の数字を使用することはできません(0〜5および7〜9は禁止されています)。あなたのプログラムは何も入力できません。出力には、文字列の前後にゴミが含まれる場合がありますが、上記の文字列の少なくとも1つが含まれている必要があります。 たとえば、これは有効な出力です。 220frefze f**14288=>15472=>14536=>14264=>12496**fczfe fz**15472=>14536=>14264=>12496=>14288**zfe fzehth 私はこれをどのように解決すると期待しているのかという質問で「軽く」ほのめかしましたが、どのように知っていますか?もっと良い方法があるかもしれません...楽しんでください。 これはcode-golfです。バイト単位の最低スコアが勝ちます。

11
テキストのグリッドの対角線を並べる
テキストの長方形のグリッドが与えられた場合、左上から右下に向かう対角線を列に並べ、すべての対角線の最右端の文字が水平になるようにします。インデントにはスペースを使用します。 たとえば、テキストの入力グリッドが abcd 1234 WXYZ あなたは対角線をラインアップしたいW、1X、a2Y、b3z、c4、およびdこの出力を与える列に: ab 123c WXYZ4d すべての対角線の最も右下の文字がWXYZ4d同じレベルにあることに注意してください。 詳細 テキストの入力グリッドのサイズは少なくとも1×1で、すべての行は同じ長さになります。 入力グリッドは、複数行の文字列または単一行の文字列のリストとして取得できます。 入力グリッドには、印刷可能なASCII文字(スペースを含む)のみが含まれます。 出力には、オプションで末尾の改行が1つ含まれる場合がありますが、他の空行はありません。 出力の行には、オプションで末尾スペースを含めることができますが、不要な先頭スペースを含めることはできません。 その他の例 空行は例を示します。各入力の直後に出力が続きます。 123 456 789 1 452 78963 123.?! 456??! 789!!! 123. 456??? 789!!!!! **@ @ ** @ @ /\/\ \/ / / /\ \/\/ / \/\ / / / \/\/\/\ 12 34 56 …
15 code-golf  string  grid 

2
スタック状態図を解く
スタック状態図は、1つのスタックの値が他のスタックにどのように変更されるかを示します。たとえば、これはスタック状態図です: 3 0 2 1 0 これは、最初に3つの値(3パーツ)を含むスタックがあることを意味します。これらの値には0から2までのインデックスが付けられ、先頭に0が付きます2 1 0。次の部分0 2 1 0では、スタックの最終状態について説明します。元々スタックの最上位にあった値も、後方にコピーされています。 これらの変換は、いくつかのデータ型をサポートするスタックで発生します。 「値」タイプ。これは元々スタックにあったものです。これは文字列、整数などでもかまいませんが、その値を知る必要はありません。 「リスト」タイプ。これは、任意のデータタイプの値を含むリストです。 この変換をモデル化するには、次の操作が許可されます。 S:スタックの上部にある2つの値を交換します。2 1 0→2 0 1 D:スタックの一番上に値を複製します:1 0→1 0 0 R:スタックの一番上の値を削除します。2 1 0→2 1 L:一番上の値を、その値を含む1要素のリストに変換します。2 1 0→2 1 (0) C:スタックの上位2つのリストを連結します。2 (1) (0)→2 (1 0) U:リストのすべての値をスタックに配置します。2 (1 0)→2 1 0 これらは、他のコマンドが使用されない限り、Underloadコマンドと同等~ : ! a * ^です。 …

9
傾斜2進数
整数を指定するとn、n0インデックスまたは1インデックスの最初の傾斜2進数を出力します。それらは、それらがどのように生成されるかからこれと呼ばれます: 数字を上下にバイナリで書きます(右揃え): ........0 ........1 .......10 .......11 ......100 ......101 ......110 ......111 .....1000 ......... 次に、各対角線を左下から右上に向けて、各最終桁が対角線の最終桁になるようにする必要があります。ここでマークされた第四対角(ゼロインデックス付き)だxあるのは、100: ........0 ........1 .......10 .......11 ......10x ......1x1 ......x10 ......111 .....1000 ......... 上向きに傾斜する対角線は次のとおりです。 0 11 110 101 100 1111 1010 ....... 次に、10進数に変換して、 0, 3, 6, 5, 4, 15, 10, ... OEIS A102370 これはcode-golfであるため、バイト単位の最短コードが優先されます。

16
ウィルソンスコア間隔を計算する
ウィルソンスコア間隔はベルヌーイ試験(:ベルヌーイの試験は、正確に2つの結果が可能である、裁判での集合における成功の割合に基づいて、成功確率の信頼区間である成功または失敗)。間隔は次の式で与えられます。 式によって与えられる2つの値は、間隔の上限と下限です。n Sとn Fはそれぞれ成功と失敗の数であり、nは試行の総数です(n S + n Fに相当)。zは、必要な信頼レベルに依存するパラメーターです。このチャレンジのために、z = 1.96が使用されます(95%の信頼区間に対応)1。 非負の整数n Sおよびn Fを指定すると、ウィルソンスコア間隔の境界が出力されます。 ルール 出力は、浮動小数点演算の不正確さによる潜在的な問題を無視して、言語の浮動小数点実装の制限内で、真の値に対して可能な限り正確でなければなりません。ご使用の言語が任意精度の演算に対応している場合、少なくともIEEE 754の倍精度演算と同じ精度でなければなりません。 入力は言語のネイティブ整数型の表現可能な範囲内にあり、出力は言語のネイティブ浮動小数点型の表現可能な範囲内にあります。 nは常に正です。 出力の順序は重要ではありません。 テストケース フォーマット: n_s, n_f => lower, upper 0, 1 => 0.0, 0.7934567085261071 1, 0 => 0.20654329147389294, 1.0 1, 1 => 0.09452865480086611, 0.905471345199134 1, 10 => 0.016231752262825982, 0.3773646254862038 10, 1 => 0.6226353745137962, …

4
猫に帽子をかぶせる
来たる冬のbashイベントに触発された オブジェティブ 帽子を追加 ^、´または`入力の各ワードにおける単一母音へ。 ルール hatとvowelランダムに選択されなければなりません。各帽子は同じ確率(33%)で表示される必要があり、母音は単語の有効な母音内で同じ確率でなければなりません(単語に2つの有効な母音がある場合、それぞれ50%が選択される可能性が高い)-または最も近いあなたの言語が持っていること。 AEIOUaeiou母音のみと見なされます(ごめんなさいy) 入力に帽子のある母音はルールに干渉しません(子音と見なすことができます) 入力に母音がない場合、変更されません 大文字を保持する必要があります。 例 winter> wintér bash> bâsh rhythm> rhythm rng ftw> rng ftw cat in the hat> cât ìn thê hát dès> dès tschüss> tschüss principî> prìncipî PROGRAMMING PUZZLES & code golf>PROGRÂMMING PÚZZLES & codé gòlf 勝ち これはコードゴルフなので、最短のコードが勝ちます
15 code-golf 

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