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

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

19
文を逆にする
このチャレンジの目標は、入力を受け取り、その入力を文の順序を逆にして出力することです。入力例: Hello friend. What are you doing? I bet it is something I want to do too! 出力例: I bet it is something I want to do too! What are you doing? Hello friend. 例からわかるように、プログラムは疑問符、感嘆符、およびピリオドを処理する必要があります。各文には句読点があり、次の文の前にスペースがあると仮定できます。末尾のスペース/改行は、読み取り可能な限り問題ありません。最短のコードが優先されます。 幸運を! 編集:文に引用符や括弧がないと仮定することができますが、コードでこれらの両方を処理できるようにすると、-5バイトの括弧/引用符の出力例が得られます: "Hello, " she said. (I didn't know what she was talking about.) --> …
15 code-golf 

2
ラットの迷路を構築するプログラム
あなたは研究助手として雇われ、ラットの迷路を構築する小さなプログラムを作成するように依頼されました。ラットボックスは常に62x22で、次のように、ラットの入り口(a)と出口(A)があります(入力1)。 #######a###################################################### # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #################################################A############ 次のように、プログラムはボックスをブロック(#)で満たし、ラット用のパスを残さなければなりません(出力1)。 #######a###################################################### ####### ###################################################### ####### ###################################################### ####### …
15 code-golf  grid  maze 

4
Shifty XORyption
プログラムまたは関数(またはプログラム/関数のセット)を作成して、次の仕様でデータを暗号化および復号化します。 暗号化 各バイトを相互にXOR演算することにより、入力のXORハッシュを計算します。 入力のすべてのバイトをこのハッシュでXORします。 結果を4ビット左にシフトします。 XORハッシュの最初の4ビットで左側を埋め込みます。 XORハッシュの最後の4ビットを右側に埋め込みます。 例 与えられた入力:"G0lf"(0x47306C66) XORハッシュを計算します。 0x47 ^ 0x30 ^ 0x6C ^ 0x66 = 0x7D ハッシュごとにすべてのバイトをXORします。 0x3A4D111B 期待される結果(シフトとパッドの後): ()"s¤Ñ\x11½"0x73A4D111BD ルール プログラム/関数は、入力/出力が実際のバイトである限り、選択したゴルフ言語(文字列、バイト配列など)で意味のある任意のタイプの入出力を行うことができます。たとえば、16進文字列を出力することはできません。 暗号化と復号化は、個別のプログラム(スコアはそれらの合計サイズになります)または単一のプログラムに分離できます。単一のメソッドは、暗号化または復号化する必要があるかどうかの引数を取ることができます。 暗号化の入力は、少なくとも1バイトのサイズであると予想されます。 復号化のための入力は、少なくとも2バイトであると予想されます。 出力で非印刷バイトをエスケープする必要はありません。

2
最前面のパズルソルバーを構築する
トップフロントサイドパズルは、3つの直交ビュー(上面図、正面図、側面図)が与えられた(通常は立方体)ブロックの3D形状を構築する必要があるパズルです。 たとえば、次のように上面図、正面図、および側面図を指定します。 Top: Front: Side: . . . . . . . . . . . . . x x . . x x . . x x . . x x . . x x . . x x . . . . . . . . . . …

2
どうすれば人生でもっと多くのKlotskiを獲得できますか?
私はタイルパズルをスライドさせるのが大好きですが、最近は時間がありませんでした。したがって、スライディングタイルパズル、特にKlotskiパズルを修正するプログラムが必要です。 入力は次の形式になります。 ####### #001gg# ##.222# .###### ここで、#は壁、.オープンエリア、g目標、隣接する数字は異なるブロックを表します。あなたはそれを仮定することができます: 10ブロックを超えることはありません 同じ番号のブロックは2つありません すべてのブロックは壁で囲まれます グリッドは長方形です 0ブロックは、目標の正方形のすべてをカバーするために十分な大きさです。 有効な解決策があります 0すべてのゴールスクエアをカバーするようにブロックを配置する一連の動きを返す必要があります。ブロックは壁や他のブロックを通過できません。上記のパズルの場合、適切なシーケンスは 2L,1R,1R,1D,0R,0R,0R 2ブロックを左に1マス、1ブロックを右に2マス(ゴールの上)、次に1マス下に移動し、0ブロックを右に3マス移動することを表します。 実際には、上記の問題に対して機能するいくつかのシーケンスがあり、それらのいずれかを生成することは許容されます。ソリューションは最適でなければなりません。つまり、できるだけ少ないステップでパズルを解くシーケンスを作成する必要があります。 シーケンスは上記のように出力する必要がありますが、カンマ、改行、またはスペースで区切ることができます。末尾にコンマまたは空白があるかどうかは気にしません。妥当な時間で出力を生成する必要があります(以下のパズルでは最大120秒)。 パズル1: ..####.. ..#00#.. ###00### #......# #.1122.# ##3124## .#3344#. .##55##. ..#gg#.. ..####.. パズル2: ###### #1002# #1002# #3445# #3675# #8gg9# ###### パズル3: .####. ##1g## #22g3# #4255# #4.56# #.006# #7008# ###### パズル4: .####. ##00## #.00g# …


12
SUDSIシーケンスを生成する
SUDSI配列(SUの M、D ifference、S WAP、I ncrement)が表示されますではなくカオス的挙動を示すために、その好奇心整数配列です。次のように生成できます。 してみましょうSは、自然数の無限リストであります:1 2 3 4 5 6 ...。してみましょうSを、私は 1インデックス表す私の番目の要素S。したがって、最初は、 S 1は1、S 2は2などです(S 0はありません)。 S 1およびS 2から開始... それらの合計を計算します。 sum = S1 + S2 それらの絶対差を計算します(大きい方から小さい方を引いたもの): diff = |S1 - S2| Sの2つの値を和と差のインデックスで交換します。swap(Ssum, Sdiff) 作業しているSのインデックスを増やします。したがって、次回はS 2とS 3の合計と差を計算し、その後の時間はS 3とS 4などになります。 このプロセスを無期限に繰り返します。 このプロセスが適用されるSの最初のいくつかの段階を以下に示します。括弧[]は、合計および差分される2つの値を囲みます。 オリジナルS: [1 2] 3 4 5 6 7 8 …

4
アスキーアイスクリーム
Nの整数正にかかるプログラムや関数を記述し、プリント又は戻り、その上半分からなる半円であるN×Nアスキーアート列(「その下半分からなる下向きの三角形でsおよびVs」は、とパディングとして使用されるスペース。 つまり、ASCIIアイスクリームコーンを作成します:(N = 17の出力) ((((( ((((((((( ((((((((((((( ((((((((((((( ((((((((((((((( ((((((((((((((( ((((((((((((((((( ((((((((((((((((( VVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVV VVVVVVVVVVVVV VVVVVVVVVVV VVVVVVVVV VVVVVVV VVVVV VVV V 例 N = 1〜5の出力を次に示します。奇数Nの場合、三角形は常に大きな半分でなければなりません。 V (( VV ((( VVV V (( (((( VVVV VV ((( ((((( VVVVV VVV V N = 101のペーストビンです。 そして、ここに未使用のPython 3リファレンス実装があります: N = int(input()) ic = …

8
ディスクリートベイカーズマップ
前書き ベーカーのマップは、混沌とした挙動を示す重要な力学系です。以下のように直感的に定義された単位正方形からそれ自体への関数です。 正方形を垂直に半分に切り、サイズが2つの長方形になるようにします0.5×1。 右半分を左上に積み重ね、サイズが1つの長方形になる 0.5×2 長方形を圧縮して1×1正方形に戻します。 この課題では、この変換の個別バージョンを実装します。 入出力 入力は、印刷可能なASCII文字の2D配列と2m×2n一部のサイズの空白ですm, n > 0。出力は、配列を使用して、次のように取得された同様の6×4配列です ABCDEF GHIJKL MNOPQR STUVWX 例として。最初に、配列の右半分を左半分の上に積み重ねます。 DEF JKL PQR VWX ABC GHI MNO STU 次に、列を文字のペアに分割し、各ペアを時計回りに90度ずつ独立して回転させ、背の高い長方形を「圧縮」して元の形状に戻します。 JDKELF VPWQXR GAHBIC SMTNUO これは、上記の配列の正しい出力です。 ルール 入力および出力形式は柔軟です。改行で区切られた文字列、文字列のリスト、または文字の2D配列を使用できます。ただし、入力と出力がなければなりません正確に同じフォーマットを持っている:あなたは、任意の有効な入力の上ご応募を任意の回数繰り返すことができなければなりません。 完全なプログラムまたは関数のいずれかを作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース Input: 12 34 Output: 42 31 Input: Hell ! o d - lroW Output: lol …
15 code-golf  string  grid 

25
文字列を対応するRövarspråketに変換します
Rövarspråket Rövarspråketは、アストリッド・リンドグレンによるKalle Blomkvistに関する本からのスウェーデンの子供たちが演じる単語ゲームです。 基本的なルールは次のとおりです(Wikipediaより): すべての子音(発音ではなくスペルの問題)が2倍になり、その間にoが挿入されます。 母音はそのまま残されます。 いくつかの例: 「hello」->「hohelollolo」 "Minsvävareärfull medål"-> "MoMinonsosvovävovaroreärorfofulollol momedodålol" スウェーデン語の子音は英語のものと同じなので、プログラムはスウェーデン語と英語の両方のエントリで動作するはずです。 この場合、文字「y」は子音と見なされます-ほとんどの場合そうです。 あなたのタスク: 関数またはstdinを介して入力されたスウェーデン語の文字列を、同等のRövarspråketに変換するプログラムを作成します。バイト単位の最短回答が勝ちます!
15 code-golf  string 

21
セックス・ボブ・オンブスの簿記(現在の金額が低すぎるかどうかを確認してください)
信じられないかもしれませんが、Sex Bob-ombsは世界的に有名なバンドになり、現在世界ツアー中です!ブックキーパーとして、日々の財務を監督し、定期的なレポートを提供する必要があります。 数週間ごとに、発生した順番で費用のリスト(米ドル全体)を作成します。 たとえば、リスト 378 -95 2234 アカウントに378ドルが入金され、その後95ドルが出金され、その後2234ドルが入金されたことを意味します。 これらの値の累積合計がしきい値Tを下回らないようにする必要があります。これを行うプログラムを作成することにしました。 チャレンジ 単一の整数Tと整数のリストを取り込むプログラムまたは関数を作成します。整数のリストの現在の合計がTより小さい場合は、偽の値を出力するか、それ以外の場合は、真の値を出力します。 通常の入力方法(stdin、ファイルから、コマンドライン、関数への引数)を使用できます。 リストの先頭では、現在の合計は0です。したがって、正のTは結果が常に偽であることを意味します。 + 正の整数の前に来ることはありません。 リストには0を含めることができます。 リストは空かもしれません。 テストケース Tはこれらすべてで-5です。 偽物: -6 1 2 3 -20 200 -300 1000 真実: [empty list] -5 4 -3 -6 得点 最少バイトの送信が勝ちです。Tiebreakerは、投稿された最も早い投稿に進みます。 私がこれをすることを余儀なくされた残念なコメント。

4
因数分解!…ひどく
好奇心の強い子供は、数値または式を次の形式に分解できるプログラムを使用します。 p1^e1 * p2^e2 * ... * pn^en。に等しい指数1は省略されます360 = 2^3 * 3^2 * 5 子供はこの出力を新しい入力としてプログラムに入力しますが、^符号を理解していないため、対応する素数と指数を連結する1つ以上をスキップすることがあります。例えば(360 =) 2^3 * 3^2 * 5 => 2^3 * 32 * 5 (= 1280) これらの間違いのために、彼女は別の因数分解を取得する可能性があり、それを再度入力できます(0個以上をスキップします^)。彼女は、因数分解がそれ以上変化しなくなるまでプロセスを繰り返します(多分それ以上ない^か、出力を正しくコピーしたかもしれません)。 整数n(n>1)が与えられたすべての可能な数を昇順で出力するプログラムまたは関数を作成する必要がありますn。たとえば、入力16の最終的な因数分解は次のとおりです。(16 =) 2^4, (24 =) 2^3 * 3, (23*3 =) 3 * 23 入力の詳細: 入力は、より大きな単一の整数です 1 より大きい出力数を生成する入力は与えられません 2^31-1 1000出力以上の数を生成する入力は与えられません 出力の詳細: …

3
コインフリップシーケンスの選択を分析するプログラムを作成する
私の古い本のパズルでは、2人のプレーヤーがコインを繰り返し弾いたときに最初に現れると信じているコインフリップのシーケンスを選択するゲームが定義されています。(実際にはサイコロと奇数のサイコロが振られましたが、この小さな詳細は問題の等価性の観点では重要ではありません。) なお、プレイヤー1を選択した場合TTT、プレイヤー2を選択したがHTT、そのプレイヤー2が唯一の方法であるため、試合に勝つの7/8のチャンスがあるTTT前に来ることができますが、HTT最初の3つのフリップは、すべてのテールがある場合です。 あなたの仕事は、2つの選択されたシーケンスのうちの1つが最初に来る確率を推定するプログラムまたは関数を作成することです。プログラムは2行の入力(または引数として2つの文字列)を取り、それぞれが長さ10以下のシーケンスを表します。 HTT TTT そして、最初のプレイヤーが勝つ確率を小数または小数形式で出力します: 7/8 0.875 どの言語でもこれを行う最短のコードが優先されます。

9
KOTH:モンスターハンター
更新された結果 前書き 新しい3DS(2月13日)でのMonster Hunter 4 Ultimateの発売を記念して、このゲームをテーマにしたキングオブザヒルを紹介します。 あなたは初心者ハンターであり、5回連続のハントで構成されるトーナメントに参加します。これらの狩りの終わりに、ハンターはモンスターに与えられたダメージと、もちろん彼らがそれを殺したか打ち負かされたかによってランク付けされます。また、初心者としては、経験を積むまで、選択した武器に固執する必要があります。 レキシコン ATK:攻撃 DEF:防御 HP :健康ポイント NRG:エネルギー GRD:ガード SPD:速度 SHP:シャープネス AGR:攻撃性 POT:ポーション RAT:配給量 WHE:砥石 原理 ハンターはさまざまな4つの武器から選択できます。 | Id | ATK | GRD | SPD | ------------------------------------------------ Great Sword | GS | 7 | 2 | 2 | Dual Blade | DB | 3 | …

17
距離を置く!
すべてのプレイヤーには番号があります。あなたのものはそれらすべてから最も遠いことができますか? 必要条件 choose()3つの引数を受け入れるJava、Python 2、またはRuby関数を作成します。 整数-すでに完了したラウンドの数 整数-プレーヤーの数 文字列の配列-前回の各ラウンドの結果 各文字列は、スペースで区切られた整数のリストであり、最低から最高にソートされています たとえば、次のchoose(2, 4, ["4 93 93 174", "1 84 234 555"])ことを意味します。 すでに2ラウンドありました(これは3回目のラウンドです) 合計4人のプレイヤーがいます 最初のラウンドでは、選択された数字は4、93、93、174でした 2回目のラウンドでは、選択された数字は1、84、234、555でした 1から999(両端を含む)までの整数を返す必要があります。 他の各プレイヤーにとって、あなたのスコアはあなたの番号と彼らの間の距離の平方根です。ラウンドのスコアは、これらすべてのスコアの合計です。 100ラウンドがプレイされます。最高の合計スコアが勝ちます! ルール コードは、コンソール、ファイル、ネットワークなどを含むI / Oを使用できません。 制御プログラムや他のプレーヤーに干渉することはできません。 上記の規則に違反しているように見えるプログラムは除外されます。 関数(8GBのRAMを搭載したIntel Core i5 2450M)では、関数の各呼び出しに5秒未満かかります。 プログラムが例外をスローするか、無効な値を返す場合、1を返したものとして扱われます。 各ユーザーは、最大1つのプログラムを送信できます。 その他 制御プログラムはGitHubにあります。 3つの組み込みプレーヤーがあります。それらはこの答えにあります。 優勝者は1月28日に選ばれます。 リーダーボード 勝者はConservatorです。 一定ではない戦略を持つ最高得点のプレイヤー、グスタフに敬意を表する。 保護者-36226 高-36115 FloorHugger-35880 ナンバーワン-35791 過大評価-35791 グスタフ-35484 …

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