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

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

2
KOTH:ヒットアンドサンク
前書き 5回目のKOTHでは、よく知られているBattleshipに基づいたいくつかの工夫を加えたチャレンジを紹介します。指揮する艦船は1つだけで、その種類は5つの「伝統的な」クラスから選択できますが、移動を含め、各ターンで複数のアクションを実行できます。これはFFA(Free For All)としてプレイされ、あなたの目標は最後の船に立つことです。 原理 ゲームはターンベースです。ゲームの開始時に、船のクラスを選択する必要があります。その後、各ターンで、プレイヤーは自分の船に応じていくつかのアクションを実行できます。 ゲームは2Dグリッド(X、Y)で行われ、その側はこのように定義され X = 30 + numberOfPlayer Y = 30 + numberOfPlayer ます。各船の開始位置はランダムです。 プレイ順は毎ターンランダム化され、「キュー」での自分の位置もプレイヤーの数もわかりません。ゲームは100ターン、または1隻の船が生き残るまで続きます。 敵の船にぶつかったり、ぶつかったりするたびに、ポイントを獲得したり失ったりします。最高スコアのプレイヤーが勝ちます。賞金は勝者に授与されます(参加者の数に応じた値)。 コントローラはコマンド引数を介して入力を提供し、プログラムは標準出力を介して出力する必要があります。 構文 最初のターン プログラムは引数なしで1回呼び出されます。船を選択するには、1〜5の整数を含める必要があります。 1:駆逐艦[長さ:2、移動/ターン:3、ショット/ターン:1、射程:9、地雷:4] スキル:自由船の回転(クールダウンなし) 2:潜水艦[長さ:3、移動/ターン:2、ショット/ターン:1、範囲:5、地雷:4] スキル:プランジ/サーフェス(出力を参照)。水中では、「移動」アクションのみを使用でき、スキャンでのみ表示できます。あなたはショットでヒットすることはできませんが、地雷からダメージを受けることができます。 3:巡洋艦[長さ:3、移動/ターン:1、ショット/ターン:2、射程:9、地雷:2] スキル:修理可能(出力を参照) 4:戦艦[長さ:4、移動/ターン:1、ショット/ターン:3、範囲:7、地雷:1] スキル:シールド可能(出力を参照) 5:キャリア[長さ:5、移動/ターン:1、ショット/ターン:1、範囲:7、地雷:3] スキル:ショットはターゲットにAOE(領域の範囲)ダメージを与えます(1範囲のスプラッシュダメージ)。ターゲットがショットでヒットした場合、この船の最大2つのセルも損傷を受けます。 ターン 入力 プログラムが呼び出されるたびに、次の形式の引数を受け取ります。 Round;YourPlayerId;X,Y,Direction;Hull;Moves,Shots,Mines,Cooldown;Hits,Sunken,Damage;Underwater,Shield,Scan;Map ラウンドは1から始まります。 入力例 1;8;1,12,0;111;1,2,2,0;0,0,0;0,0,0;UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUXXXX.......UUUUUUUUXXXX.......UUUUUUUUXXXX.......UUUUUUUUXXXX.......UUUUUUUUXXXX.......UUUUUUUUXXXX.O.....UUUUUUUUXXXX.O.....UUUUUUUUXXXX.O.....UUUUUUUUXXXX.......UUUUUUUUXXXX.......UUUUUUUUXXXX.......UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ここでは、それは第1ラウンドであり、プレイヤー8です。 あなたの船は(X = 1、Y = 12)に位置し、方向は上(0 =上、1 =右、2 =下、3 …

27
馬を何回ゴルフする必要がありますか?
この課題のために、整数を取り、xそのソースをx何度も出力するプログラムを作成する必要があります。 ルール これはcodegolfです。目的は、プログラムをゴルフで最小バイト数にすることです。 関数を送信する場合、関数はxパラメーターとして受け取り、コード全体をx何度もSTDOUTに返すか印刷する必要があります。関数本体も空であってはなりません ラムダを送信する場合、変数に割り当てる必要はありません 標準的な抜け穴の制限が適用されます。 空のプログラムは禁止されています あなたのプログラムxは、整数が0以上である場合にのみ機能する必要があります また、プログラムはソースコードの一部を直接読み取ることはできません。
12 code-golf  quine 

5
ベン図セル
複数のセット、例えば所定のs1={2,3,7}、s2={1,2,4,7,8}及びs3={4,7}、ベン図を、それらが集合の要素であるか否かに応じて、閉曲線のいずれかの内側または外側の曲線の境界である組の要素により可視化各セット。すべてのセット要素はベン図に1回しか表示されないため、要素が複数のセットに存在する場合、各セットを表す曲線はオーバーラップする必要があります。このようなそれぞれを、ベン図のセルの重複と呼びます。 この説明は少しわかりにくいかもしれませんので、例を見てみましょう。 例 セットのためのベン図はs1、s2とs3このようになります。 このベン図の細胞は、(左から右へ、上から下に読み取り)であり{1,8}、{2}、{7}、{4}、{3}、{}および{}。 実際には、4つ以上のセットのベン図の表現があまり明確ではないため、一般に2セットまたは3セットのベン図のみに遭遇します。ただし、これらは存在します。たとえば、6セットの場合:CC BY-SA 3.0、https: //commons.wikimedia.org/w/index.php?curid = 1472309 タスク 妥当な表現で正の整数のセットの空でないセットが与えられると、入力セットのベン図のセルのセットを返します。具体的には、グラフィカルな表現は必要ありません。 完全なプログラムまたは関数を作成できます。 空のセル(すなわちがあるとして、あなたは多くの空のセットとして返すことがあり、リストのすべてのセルの)だけではなく1つの空のセット(すなわち集合細胞のは)。 上記の例のための入力のいくつかの合理的な方法は、限定されないが{{2,3,7},{1,2,4,7,8},{4,7}}、[[2,3,7],[1,2,4,7,8],[4,7]]、"2,3,7;1,2,4,7,8;4,7"または"2 3 7\n1 2 4 7 8\n4 7"。選択した入力形式が受け入れられるかどうか疑わしい場合は、コメントでお気軽にお問い合わせください。 可能な場合、出力形式は入力形式と一致する必要があります。このルールでは、空のセットを明確に表示できる形式が必要です。 これはcode-golfなので、選択した言語でできるだけ少ないバイトを使用するようにしてください。言語間ではなく言語ごとの競争を促進するために、私は答えを受け入れません。 テストケース いくつかの入力と可能な出力を次に示します。 input -> output {{2,3,7},{1,2,4,7,8},{4,7}} -> {{1,8},{2},{7},{4},{3},{}} (or {{1,8},{2},{7},{4},{3},{},{}}) {{1,2,3},{4,5,6},{7,8,9}} -> {{1,2,3},{4,5,6},{7,8,9},{}} {{}} -> {{}} {{1,2,3},{1,2}} -> {{1,2},{3},{}} {{4,3,8},{1,2,9,3},{14,7,8,5},{6,11,3,8},{10},{9,4,3,7,10}} -> {{6,11},{10},{4},{3},{8},{5,14},{1,2},{9},{7},{}} {{2,3,4,7},{},{1,3,7,5,6},{2,3,7,5},{7,2,4,3,6},{1,4,5}} -> {{},{4},{2},{7,3},{1},{6},{5}} …

5
4回目はインフルエンザになりますように
明日は5月4日であるため、明日来るすべての悪いジョークに精神的に準備するための小さなスターウォーズテーマの投稿があります。 バックストーリー 銀河上院のセッション中、すべての上院議員はn*nグリッドに座っています。JarJarインフルエンザの突然の発生(これは永久に続き、感染者がJarJar Binksのように話す)により、上院議員の一部が感染します。 感染した上院議員がいる6*6グリッドの例を次に示しXます[[0,5],[1,4],[2,3],[2,1],[3,3],[3,0],[4,5],[0,5]]。対応するリストは次のとおりです。 その後、感染は段階的に広がり始めます。2つの上院議員は、グリッド上のエッジ全体を共有する場合(つまり、上、下、右、左)に隣接します。つまり、対角線を除外します。 上院議員が他の2、3、または4人の上院議員に隣接できると結論づけ、感染に関する次の規則を主張できます。 感染した上院議員は永遠に感染したままです 上院議員は、前のステップで2人以上の感染した上院議員に隣接していた場合、そのステップで感染します。 感染の最初の2つのステップを示す前のグリッドの例を次に示します。 次のステップの後、すべての上院が感染します あなたのタスク コードは、リストのような無効な入力や、n*n区別できない座標を処理する必要はありません。 あなたのコードは入力としていくつかの整数のリスト(またはバイナリグリッドまたはあなたの言語に適した他のフォーマット)と整数n(リスト以外のフォーマットを使用する場合は不要な場合があります)を取ります: 8 [[1,2],[1,1],[7,4],[2,7],[4,3]] nはグリッドの側面であり、グリッドはan * nグリッドであり、整数のペアのリストは最初に感染した上院議員のセルの座標です。 グリッドの左下は[0,0]で、右上は[n-1、n-1]です。左上は[0、n-1]です。 コードは整数を出力する必要があります: -1 または、グリッド全体が完全に感染することはない場合、またはグリッド全体を感染させるのに必要な最小ステップ数である場合は、偽の値またはエラー テストケース 6 [[0,5],[1,4],[2,3],[2,1],[3,3],[3,0],[4,5],[5,0]] => 7 4 [[1,1][0,3][1,0][3,0][3,3]] => 9 これはcode-golfであるため、バイト単位の最短回答が優先されることに注意してください。
12 code-golf  grid 

10
コミュニケーションが容易になるということは…○円形版!
基づくと、この、私は頼まれた[1] 、[2]をグラフィカル版を行うこと。 仕事 テキストの円形表示を生成しますEASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS 。大文字のフォントはすべて使用できます。文字の上部は円の外側を向いている必要があります。前のスペースFEWERが下(6時)か(ブラウニーポイントの場合)テキストが回転する必要があります。

19
KOTH-ロードされたRPS
コンテストが恒久的に開催されました-2017年8月10日更新 2017年6月5日に勝者を宣言しましたが(勝者はベストアンサーとして保持されます)、新しいボットを獲得し、結果を更新します。 6月5日の結果 おめでとうuser1502040 同点がないため、勝った試合の割合のみを表示します。 Statistician2-95.7% Fitter-89.1% Nash-83.9% Weigher-79.9% ExpectedBayes-76.4% AntiRepeater-72.1% Yggdrasil-65.0% AntiGreedy-64.1% Reactor-59.9% NotHungry-57.3% NashBot-55.1% Blodsocer-48.6% BestOfBothWorlds-48.4% GoodWinning-43.9% Rockstar-40.5% ArtsyChild-40.4% Assassin-38.1 % WeightedRandom-37.7% Ensemble-37.4% UseOpponents-36.4% GreedyPsychologist-36.3% TheMessenger-33.9% Copycat-31.4% Greedy-28.3% SomewhatHungry-27.6% AntiAntiGreedy-21.0% Cycler-20.3% Swap-19.8% RandomBot-16.2% 各ペアの結果のグリッドでGoogleスプレッドシートを作成しました:https : //docs.google.com/spreadsheets/d/1KrMvcvWMkK-h1Ee50w0gWLh_L6rCFOgLhTN_QlEXHyk/edit?usp=sharing ペトリのジレンマのおかげで、このキングオブザヒルに対応できるようになりました。 ゲーム ゲームは、ひねりを加えたシンプルな「じゃんけん」です。試合中に勝利が増えるごとにポイントが獲得されます(R、P、またはSがロードされます)。 紙がロックを獲得 はさみが紙に勝つ ロックがハサミで優勝 勝者は、自分のプレーの負荷と同数のポイントを獲得します。 敗者はプレイの負荷を1増やします。 同点の場合、各プレイヤーはプレイの負荷を0.5ずつ増やします。 100回プレイした後、より多くのポイントを持つ方が勝者です。 例:P1には負荷[10,11,12](じゃんけん)とP2 [7,8,9]があります。P1がRをプレイし、P2がPをプレイします。P2が勝ち、8ポイントを獲得します。P1負荷は[11,11,12]になり、P2負荷は同じままです。 …

5
ユーザーの評判を計算する
チャレンジ ユーザーの名前(IDではなく、私たちはすでにその課題を持っています)が与えられたら、現在の評判とIDを出力します。 入力 入力は、ユーザーのユーザー名である単一の文字列になります。このユーザーが存在すると想定できます。 出力 出力は、STDOUTまたはSTDERRへの2つの整数になり、ユーザーの評判とユーザーのIDになります。それらは特定の順序である必要があり、任意の合理的な形式で出力できます 仕様 レピュテーションの出力は、10分以上古いものであってはなりません。 プログラムは通常の実行中にエラーをスローしない場合があります 標準の抜け穴が適用されます(URL短縮機能なしを含む) そのユーザー名を持つユーザーが複数いる場合、そのユーザー名を持つユーザーの統計情報を出力できます。これが、IDを出力する必要がある理由でもあります。 出力される評判は、ネットワークの合計スコアではなく、PPCGでのユーザーの評判です。 Stack Exchange APIサイトはこちらにあります。そこからドキュメントを読むことができます。

16
「A」からÄへのコンバーター
現在、大量の手書き文書をスキャンし、それらを.txtファイルに変換しています。私はひどい手書き文字を持っているので.jpg- > .txtコンバータはに私のウムラウトの一部を変換し、「正常」で包まれた手紙' 仕事 以下のプログラムまたは関数を作成します。 文字列が与えられます 限り、任意のI / Oコードページを選択できます。 文字をサポートしていますAEIOUaeiouÄËÏÖÜäëïöü'。 発音区別記号の組み合わせは禁止されています 入力コードページと出力コードページは同じです。 入力には(スペースの横に)コードページからの印刷可能な文字のみが含まれます。 解決策は1つのみであるため、'a'e'表示されません 以下のセット内のすべての文字を変換AEIOUaeiouしますÄËÏÖÜäëïöü '文字で囲まれている場合にのみ: 例:'a''e' -> äë 場合の文字列は、単一の文字です。 たとえば、'AE'まったく変更せずに、そのまま出力します。 from文字がその文字以外の文字でない場合、AEIOUaeiou変更されません。 注:from文字/ from文字列はの間の文字です'。 テストケース Input Output <empty line> 'A'sthetik Ästhetik Meinung ist wichtig! Meinung ist wichtig! Ich sagte: "Er sagte: 'Ich habe Hunger'" Ich sagte: "Er sagte: 'Ich habe …
12 code-golf  string 

3
かくれんぼをしましょう!
ユーザーは非表示になり、コンピューターはそれらを見つけようとします。 まず、プログラムはグリッドのサイズの入力を受け取ります。5x5、10x10、15x15など。グリッドは常に完全な正方形とは限りません。 グリッドはチェス盤のようなものです。 _______________________________ | | | | | | | A1 | | | | | A |_____|_____|_____|_____|_____| | | | | | | | | B2 | | | | B |_____|_____|_____|_____|_____| | | | | | | | | | C3 | | | C |_____|_____|_____|_____|_____| | …

6
サンドパイルを倒す
(無限の砂山、および砂山のアイデンティティ要素を見つけることに関する関連する質問があります。) 負でない整数の行列が与えられた場合、同じ次元であるが倒れた行列を返します: マトリックスに4より大きい値が含まれていない場合は、それを返します。 3より大きいすべての「セル」は4ずつ削減され、直接隣接するすべてのセル(上、下、左、および右)は、存在する場合は増分されます。 後藤1。 例: 0 1 0 0 2 0 2 4 0 -> 3 0 1 0 0 3 0 1 3 1 2 3 2 3 4 2 5 1 4 1 2 0 3 3 0 3 3 0 3 3 4 5 6 -> …

18
文字列を無効にする
免責事項:これは私の挑戦ではありませんが、ThisGuyは投稿してもいいと言っています。 時々、のようhappinessに、反対の言葉を作りたいと思いunhappinessます。残念ながら、これが起こると、私の脳は時々空になります。それからある日、この出来事がさらに次々に起こって、私は自分自身に「これがプログラムの目的です!」と思いました。 英語には多くの例外があるため、開始文字のプレフィックスを含むリストを作成しました q or h -> dis- (honest -> dishonest) l -> il- (legal -> illegal) m or p -> im- (mature -> immature) r -> ir- (responsible -> irresponsible) everything else -> un- (worthy -> unworthy) 仕事 入力を文字列として指定すると、その文字列を負にして、結果を出力します。与えられたすべての入力が上記のルールに適合すると仮定できます。提出物は、スニペットではなくプログラムまたは機能である場合があります。 入力 パラメータとして、またはSTDINから取得した単一の文字列 出力 上記の規則に準拠した、その文字列の否定形式 勝つ方法 これはコードゴルフなので、最短のコードが勝ちます
12 code-golf  string 

10
ローダでのゴルフのヒント
ロダはによって作成されたストリームベースのスクリプト言語であるfergusq。 ローダでゴルフをするための一般的なヒントは何ですか?私は、コードゴルフの問題に適用でき、少なくともRödaに固有のアイデアを探しています(たとえば、「コメントの削除」は答えではありません)。 回答ごとに1つのヒントを投稿してください。
12 code-golf  tips 

3
グリッドは曲線を描くことができます。あなたはどれくらいですか?
幅W x高さHのテキストグリッド上に、曲線の一部を表し、空のスペースを表し、他の文字は使用されていない、シンプルでオープンな 2次元曲線を描くことを検討してください。X. すべてのグリッドスペースには、8つの隣接するグリッドスペース(ムーア近傍)があります。境界線を超えるグリッドスペースは空と見なされます。 グリッドに曲線が含まれるのは、正確に1つある場合、X または複数のX場所がある場合です: 正確には2つXのsには1つの隣接しかないX。これらは曲線の終点です。 Xエンドポイント以外のすべては、正確に2 X秒に隣接しています。これらは曲線の大部分を形成します。 たとえば、W = 9およびH = 4のこのグリッドには曲線が含まれます。 ....X.... .X.X.X.X. X..X..X.X .XX.....X 同様に、これらのグリッド(W = 4、H = 3)には曲線があります。 .... .X.. .... .... .X.X .... X..X ..X. XX.. X.X. ..X. .XX. .X.. .... .... ただし、これらのグリッドには曲線が含まれていません。 .... .XX. ...X XX.. .... X.X. .... X..X ..XX XX.. .X.X …

10
バックツーフロント順列インデックス
チャレンジ n空でないソート済みリストのアイテムの数を指定すると、i(n)その 順列が辞書式にソートされた場合、その 「Back-To-Front順列」がすべての順列のリストに存在するインデックスを出力します。 結果は0または1ベースで、どちらか(つまり)iではないことを示しnます。 バックツーフロントの順列 ...すべてのアイテムが新しいリストに移動されるまで、前方(左から右)に並べ替えられたリストの後ろ(右)と前(左)を繰り返してアイテムのリストを作成した結果です: Input being consumed Output being built ----------------------+---------------------- [1,2,3,4,5,6,7] | [] [1,2,3,4,5,6] | [7] [2,3,4,5,6] | [7,1] [2,3,4,5] | [7,1,6] [3,4,5] | [7,1,6,2] [3,4] | [7,1,6,2,5] [4] | [7,1,6,2,5,3] [] | [7,1,6,2,5,3,4] ----------------------+---------------------- Result: [7,1,6,2,5,3,4] 順列インデックス 場合nである7(上記バック・ツー・フロント例として)がある7! = 5040(異なる)アイテムの可能な順列が。 これらのすべての順列の辞書式にソートされたリストの最初の(または必要に応じて0番目の)項目は[1,2,3,4,5,6,7]それ自体になります。 2番目の項目はになります[1,2,3,4,5,7,6]。 最後から2番目の項目はになります[7,6,5,4,3,1,2]。 最終的なアイテムはになります[7,6,5,4,3,2,1]。 リストのどこかにあるのは[7,1,6,2,5,3,4]、Back-To-Front順列です。 …

17
絶対に遅れるよりはましです!
あなたのプログラム/機能などは2つの入力を取ります。最初は、私のパーティーに誰がいつ来たかのリストです。例: Kevin 13:02 Ruby 5 Sam 3 Lisa 6 Bob 12 どういう意味ですか?つまり、ケビンは最初に(13:02、24時間で)私のパーティーに到着し、5分後にルビー、3分後にサム、6分後にリサ、12分後に最後のボブに到着しました。 2番目の入力は、パーティーの開始時です。例: 13:15 (24時間)。出力は、遅れた人のリストでなければなりません。(正確に時間通りに誰でも結構です。)計算例(例えば、これらを出力しないでください) Kevin 13:02 Ruby 13:07 Sam 13:10 Lisa 13:16 Bob 13:28 リサとボブは後13:15に到着したので、このプログラムは「リサ、ボブ」と印刷する必要があります。 入力の前提 入力1は常に名前(正規表現 [A-Z][a-z]*)、スペース、24時間形式の形式になりますhours:minutes最初の行のでは、次の行では名前、スペース、正の整数(分数)になります。 。常に少なくとも1行あります。 必要に応じて、改行ではなく他の文字で入力1を使用できます。 入力2は次の形式になります hours:minutes。 必要に応じて、任意の文字で区切られた1つの文字列として入力を受け取ることができます。これはオプションです。 日のクロスオーバーを心配しないでください。私のパーティーは二度としない23:59。 出力ルール 出力は、関数の戻り値またはSTDINやファイルなどにエコーされる文字列です。文字列または配列/リストを返す必要があります。 文字列を返す場合、それは、英数字以外の区切り文字で区切られた、遅れた各人でなければなりません(順序は関係ありません)。 配列/リストを返す場合、遅れた全員のリストでなければなりません。
12 code-golf  date 

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