タグ付けされた質問 「code-golf」

コードゴルフは、ソースコードの最小バイトで特定の問題を解決するための競争です。

8
ほぼ等辺ヘロニアン三角形
ほぼ等辺ヘロンの三角形は、フォームの整数長を有する三角形でありn-1、nおよびn+1また、整数面積を有しています。最初のいくつかは: 3, 4, 5 -> 6 13, 14, 15 -> 84 51, 52, 53 -> 1170 クエスト:そのnようなトリプルを出力する最短のプログラムを生成します。(ヒント:これは既知のシーケンスです)。 受賞者は2014年5月2日に選出されます。

4
2つのポーカーハンドを比較する
チャレンジ: 2枚の5枚のカードハンドが与えられたら、ポーカーハンドの標準ランキングでどちらが勝つかを決定します。 入力: stdinからスペースで区切られた10枚のカード、またはコマンドライン引数として、どちらか好きな方。最初の5枚のカードはプレイヤー1の手で、最後の5枚はプレイヤー2の手です。各カードは、RがランクでSがスーツである形式RSの2文字の文字列になります。ランクの範囲は2〜9、Tは10、J、Q、K、およびAはそれぞれジャック、クイーン、キング、エースです。スーツは、それぞれハート、ダイヤモンド、クラブ、スペードのH、D、C、Sです。勝ったプレイヤーの番号を出力する必要があります: '1'または '2'。 カードの例: AS - the Ace of Spades QD - the Queen of Diamonds 2C - the Two of Clubs TH - the Ten of Hearts 入力から出力の例: 5H 5C 6S 7S KD 2C 3S 8S 8D TD -> 2 説明:プレーヤー1には5のペアがあり、プレーヤー2には8のペアがあります。 5D 8C 9S JS AC …
14 code-golf  game 

4
犬を散歩に連れて行く
私の犬は私にbarえていますが、私は彼を散歩に連れて行くのが面倒です。考えがある!コードゴルフの人々に私のためにやってもらいましょう! あなたの課題は、犬の散歩をシミュレートすることです。犬の散歩のルールは次のとおりです。 人間(H)は0,0(デカルト)座標平面から開始し、1秒ごとにランダムに1スペース上、左、右、または下に移動します。 犬(D)は同じ位置から始まり、毎秒0、1、2、または3つのスペースを上、左、右、または下に(もちろんランダムに)行きます。犬は予測が難しく、時には速く走ったり、完全に止まったりします。 犬は、人間から一定量(ユークリッド距離)以上離れることはありません。これは、綱の長さ(L)です。たとえば、Lisの6場合、有効な位置はH(0,0) D(4,4)(距離が約5.65ユニットであるため)ですが、そうではありませんH(0,0) D(5,4)(約6.4ユニット)。 犬が動いたときにリーシュ距離要件に違反する場合、犬は、距離要件に違反しない決定された方向に可能な限り遠くに行かなければなりません。たとえば、位置がH(0,0) D(3,4)あり、犬がランダムに3スペース右に移動することに決めたD(4,4)場合、6ユニット以上離れることなく移動できるため、犬はに移動します。(これにより、スペースが0移動する、つまりまったく移動しないことに注意してください!) その他のルール:人間が最初に動きます。人間は、その動きで綱の長さを超えてはいけません。その場合、別の方向を選択する必要があります。「ランダム」とは、「均一に分布し、パターンがない」ことを意味します。 入力は次の形式で提供されます(STDIN、関数パラメーター、ファイルなど)。 "<amount of seconds the walk will last> <leash length>" 例えば: 300 6 // a 5 minute walk with a 6 yard leash 次の形式で出力する必要があります(STDOUT、関数の戻り値、ファイルなど)。 H(0,0) D(0,0) H(0,1) D(2,0) H(1,1) D(2,1) H(1,0) D(2,-1) ... (行数はカウントされないseconds + 1ため、出力されるH(0,0) D(0,0)行数はになります。) これはcode-golfなので、バイト単位の最短コードが勝ちます!
14 code-golf  random 

3
Chompの最適な開始移動を見つける
Chompは、長方形のピースが設定された2人用のゲームです。各プレイヤーは、その上とその右にあるすべてのピースと一緒に、任意のピースを削除するターンを取ります。左下のピースを取る人は負けます。最初のプレーヤーが常に勝ち手であることはかなり簡単に証明できます(1行1列の長方形を除く)。それを見つける。 入力は長方形の寸法です(2つの数字) 出力は、勝った動きの場所です(2つの数字) 複数の勝ち手がある場合、それらのいずれかを出力できます。 これはコードゴルフです。最短のコード(任意の言語)が勝ちます。 例 注:出力は2つの数値にすぎません。以下のASCIIアートは、数字の意味を示すためのものです。 入力:5 3(左下隅から始まる1から始まるインデックス) 出力:4 3 XXX-- XXXXX XXXXX 入力:4 4 出力:2 2 X--- X--- X--- XXXX ボーナス 勝利の動きをすべて出力する場合、スコアから15文字を引きます。数字の各ペアは、改行で区切る必要があります。
14 code-golf 

24
ソートされた2つのリストをマージする
ソートのマージ この課題では、マージソートのマージサブルーチンを実装します。具体的には、関数、プログラム、または動詞などを作成し、それぞれが昇順でソートされた2つのリストを取得し、それらを昇順でソートされた1つのリストに結合する必要があります。要件: -アルゴリズムは、入力のサイズで漸近的に線形の時間を要する必要があります。O(n ^ 2)ソリューションの提供を停止してください。 リストをソートしたり、リストをマージしたりできるような組み込み関数を使用することはできません。著者の裁量。 コードは、繰り返される要素を処理できる必要があります。 空のリストを心配する必要はありません。 例: merge([1],[0,2,3,4]) [0,1,2,3,4] merge([1,5,10,17,19],[2,5,9,11,13,20]) [1, 2, 5, 5, 9, 10, 11, 13, 17, 19, 20] これはcode-golfなので、最短のコードが勝つかもしれません!

2
クロスワード強制!
不可解なクロスワード中毒者のクリスは、それらを解決する順序のアルゴリズムを設定しています。 上記の画像をガイドとして使用します。 クリスは常に最初の手がかりから始めます。この場合は1 Acrossです。クリスは有能なクロスワード愛好家なので、彼が取り組んでいる手がかりの答えを常に知っていると思われます。 クリスが手掛かりを完了すると、完了したものに隣接するすべての手がかり(最初のケースでは1ダウン、2ダウン、3ダウン)をチェックし、最も小さい番号の手がかりを完了します。隣接する手がかりがなければ、ステップ3に進みます。 手がかりが次の番号(ステップ3で説明)に横向きの手がかりと下向きの手がかりの両方がある場合、彼は最初に横向きの手がかりを完成させます(100%の確実性、OCDの境界線!) 隣接する手がかりがない場合、次の利用可能な手がかりに移動します(横または下)。 すべての手がかりが完了するまで、手順2から繰り返します。 親愛なるコーダー、これこそがあなた次第です。クロスワードテンプレートが提供されると、それを解決するためのChrisのアルゴリズムに基づいて、手がかりの順序を説明する出力を提供できるコードを作成する必要がありました。 コードは、クロスワードパズルテンプレートの入力を受け入れます。これは.、白い四角を表す形式と#黒い四角を表す形式です。 例: .....#......... .#.#.#.#.#.#.#. ...#...#....... .#.#.#.#.#.#.#. ....#.......... ##.#.#.#.#.#.#. ......#........ .###.#####.###. ........#...... .#.#.#.#.#.#.## ..........#.... .#.#.#.#.#.#.#. .......#...#... .#.#.#.#.#.#.#. .........#..... 入力は、a)クロスワードの表現のファイル読み取り、またはb)クロスワードの各行の行入力とそれに続く\n、\nEOFを示す2番目の入力によって行うことができます。 そして、Chrisが上記のアルゴリズムに従って解決する方法を決定します。 出力は、の形式の一連のコンマ区切りの命令の形式である必要がありますn(A|D)。ここnで、手がかり番号に続いてAforまたはDdownが続きます。 したがって、上記の例(画像とサンプルテンプレートの両方から1つが同じ)の場合、出力は次のようになります。 1A,1D,2D,3D,9A,10A,4D,5D,6D,7D,8D,11A,12A,13A,15A,14D,15D,16A,17A,18D,19D,20A,21D,23A,22D,24A,25D,27A,28A,26D,29A,30A,31A 最短のコードが勝つ... テスト中 コード、バイトカウント、.およびand #形式で表される4つのテストケースの1つ、およびこの入力から生成された出力を提出する必要があります。4つのテストケースがあり、以下の3つと上記のサンプルテンプレートがあります。 テストケースの例: テストケース1 .....# .#.#.# ...#.. .#.#.# .....# ##.#.. 出力: 1A,1D,2D,3D,4A,5A,6A,7A テストケース2 .....#.. .#.##..# .#....#. ...##.#. …

21
極値を見つける
リストを取り込んで、極値のリストを作成する関数またはプログラムを作成します。 リストでは[x_0, x_1, x_2...]、ローカルの極値はそのx_iようなx_(i-1) < x_iand x_(i+1) < x_iまたはx_(i-1) > x_iand x_(i+1) > x_iです。リストの最初と最後の要素が極値になることはありません。 だからいくつかの例 local_extremes([1, 2, 1]) = [2] local_extremes([0, 1, 0, 1, 0]) = [1, 0, 1] local_extremems([]) = [] これはコードゴルフなので、最短のコードが勝ちます!
14 code-golf 

7
逆矢印迷路を解く
これは「矢印迷路」です。 v < > v > ^ > v ^ < * *マークあなたは終了しますスポット。あなたの目標は、迷路の始まりを見つけることです(したがって、逆迷路)。この場合、>2行目の1行目です。 v------< S-+---v | | >--^ >-+-------v ^ < * すべての矢印を使用する必要があることに注意してください。また、行には同じ長さのスペースが埋め込まれると想定できることに注意してください。 プログラムは、妥当な方法(stdin、ファイル、メッセージボックスなど)で迷路を入力する必要がありますが、迷路は完全に無傷でなければなりません。たとえば、コンマで区切られた行を入力することはできません。入力は正確に迷路でなければなりません。 迷路の開始を適切な方法で出力する必要があります。たとえば、次のことができます 開始の座標を出力します 開始矢印を置き換えて迷路全体を出力します S 開始矢印を除くすべての矢印を使用して迷路全体を出力します(空白はそのまま!) 等 どの矢印が開始矢印であるかを出力で判断できれば、問題ありません。たとえば、次の出力 "0" "2" 改行や引用符に関係なく、開始点がどこにあるかを引き続き確認できるため、問題ありません。 これはcode-golfであるため、バイト単位の最短コードが優先されます。
14 code-golf 

12
Brainf * ckish方向
あなたのタスク-あなたがそれを受け入れることを選択した場合-は、方向を与えるトークンの文字列(左から右、任意の長さ)を解析および評価するプログラムを構築することです-左または右。4つの可能なトークンとその意味は次のとおりです。 > go right one single step < go left one single step -> go right the total amount of single steps that you've gone right, plus one, before you previously encountered this token and reset this counter to zero <- go left the total amount of single steps that …

1
JavaScriptロードとSHA-256
これは、実際のアプリケーションを使用したコードゴルフパズルです。次のようなURLを入力した場合、一部の現在のブラウザー data:text/html,<script>alert("hi")</script> 指定されたJavaScriptコードを実行します。次に、(擬似コード)のようなURLがあると仮定します。 data:text/html,<script> myPublicKey="12345678"; cryptoLib=download("http://example.com/somecryptolib.js"); if(sha256sum(cryptoLib) == "12345678") eval(cryptoLib) </script> これを名刺にQRコードとして印刷した場合、適切なブラウザーでそのURLにアクセスすると、公開キーが事前にロードされた状態で、何もインストールせずに公開キー暗号クライアントが取得されます。ハッシュ検証により、ISPがトラフィックに干渉している場合でも、彼らは本物の暗号ソフトウェアを入手したと確信できます。 残念ながら、この擬似コードの実際のバージョンは、QRコードにとって非常に長いものです。私の課題は、どのくらい短くできるかということです。実装は: データである:... ChromeおよびFirefoxのアドレスバーから正しく実行されるURL。(有効なデータ:URLを作成するには、%を%25としてエンコードし、改行を削除する必要があります) URLと SHA-256ハッシュを、できれば先頭近くにプレーンテキスト文字列リテラルとして埋め込みます を使用してURLからファイルをダウンロードする XMLHttpRequest(または同様のAPI)。(これを機能させるには、サーバーにAccess-Control-Allow-Origin:*ヘッダーを含める必要があることに注意してください。) そのURLが正常にロードされ、結果が予想されるハッシュを持つファイルである場合、eval()それ。それ以外の場合は何もしないか、エラーメッセージを表示します。 ChromeとFirefoxの両方に存在するすべての組み込みJavaScript関数は公平なゲームですが、ライブラリのロードは不可能です。 できるだけ少ないバイトを使用してください CryptoJSを使用して単純なバージョン(縮小バージョン)を作成しました。 data:text/html,<script> u = 'http://localhost:8000' h = '5e3f73c606a82d68ef40f9f9405200ce24adfd9a4189c2bc39015345f0ee46d4' // Insert CryptoJS here r = new XMLHttpRequest; r.open('GET', u, false); r.send(); if(CryptoJS.SHA256(r.response) == h) eval(r.response); </script> これは、ミニファイヤから次のように出力されます。 data:text/html,<script>u="http://localhost:8000";h="5e3f73c606a82d68ef40f9f9405200ce24adfd9a4189c2bc39015345f0ee46d4";var CryptoJS=CryptoJS||function(k,w){var …

2
ローグライクライトアップ
ボードが与えられたら、最短のプログラムまたは関数を記述して、プレーヤーの視界に入っているキャラクターを表示または返します。視力を妨げるキャラクターと交差することなく、キャラクターとプレイヤーの間に線を引くことができる場合、キャラクターは見えます。 入力: @プレイヤーの位置を表します。入力にはこれらの1つだけがあります。 正規表現に一致するキャラクターは[#A-Z]視力をブロックします。 一致[ a-z]するすべてのキャラクターが視覚を許可します。 無効な文字はありません 長方形の入力が保証されます 行は次のように定義されます。 ベクトルを大きさと方向に定義する 方向は、N、NE、E、SE、S、SW、W、NWのいずれかです。 大きさは、その方向に沿って数える文字数です 初期ベクトルをd 1と呼びます。2番目のベクトルはd 2と呼ばれます d 1またはd 2のいずれかは、次の大きさでなければなりません1。もう一方はどんな大きさでも構いません d 1の方向はd 2の方向に隣接している必要があります(例:NおよびNE) 行は、d 1、次にd 2、d 1、d 2 ...を適用することによってマークされたパスに沿ったすべての文字であると定義されます。 サンプルライン(.sで指定): d 1 =(大きさ:4、方向:E) d 2 =(大きさ:1、方向NE) ..... ..... ..... @.... 出力: 適切な位置に表示される各文字は、.スペースの代わりになります。 各非表示文字のスペース。 サンプル入力: @ K J L o 対応する出力: @......... ....K..... …
14 code-golf 

9
バッチでのゴルフのヒント
Windows Batch(CMD)は、おそらくコードゴルフに最適な言語ではありません。 改行文字を避けてください。文字とは対照的に、バイト単位の最短コードを探している場合は、不要なキャリッジリターン(改行文字= 2バイト)をすべて削除する必要があります。&操作を使用してこれを行うことができ、コマンドごとに1バイトをトリミングします。 echo Hello&echo World. 変数の設定。スイッチを使用して変数を設定する場合、setパーサーはスペースを無視します。 set /a a+=1 set /p b="User Input: " :: Will be handled the same as.. set/aa+=1 set/pb="User Input: " 同じパーサールールがすべてのコマンドに適用されるわけではないことに注意してください。たとえば、forループにはスペースが必要です。set, string, or command(括弧内にあるもの)とwordの間を除きdoます。 for /f %%a in (file.txt)do ... 簡単な数式。また、set /aコマンドでインクリメントに使用した式に注目してください。単純な数式の場合+= -= *= /=は、(たとえば)の代わりに使用しますset /a a=%a%+1。 コマンド出力の収集。コマンドの出力を取得するには、ファイルの出力と読み取りが役立つ場合があります。そうでない場合は、forループを使用して出力を収集します。 for /f %%a in ('echo …
14 code-golf  tips 

12
3および5リットルの水差しパズル
Die Hardでこれを見たかもしれません:復Venとともに ...この質問は有名な3リットルと5リットルの水差しパズルに基づいていますが、わずかに異なる傾斜があります。 1〜100の整数を指定すると、3リットルの水差しと5リットルの水差しを使用して、噴水からの対応するリットルの水量をタンクに測定するための最も迅速な指示を提供するコードを実行します。 どちらの水差しにもグラデーションはありません。噴水には水が豊富にあり、タンクはコードの各実行の開始時に空になると想定されています。 タンクに入ったら、タンクから水にアクセスできません。 実行形式は次のとおりです。 入力: 4 例えば。 出力 示されているように、各番号付きステップを出力し、その後に5L水差し、3L水差し、およびタンクの容積の集計が続きます。集計形式も以下に示します。ステップの数も、ステップの最後に出力する必要があります。 1) Fill 5L jug 5L: 5, 3L: 0, T: 0 2) Pour from 5L jug into 3L jug 5L: 2, 3L: 3, T: 0 3) Empty 3L jug 5L: 2, 3L: 0, T: 0 4) Pour from 5L …

4
Greater Golfの構文強調表示!
ゴルファー。 一緒になって、簡潔で機能的に美しく、元の小説のオペラ座の怪人よりもいコードを作成するために団結しました。 プログラミングの世界に美しさを取り戻す時が来ました。色付き。簡潔な方法で、機能的に美しいのは、オリジナルの小説のオペラ座の怪人よりもいです。 カラフルな構文ハイライターをコーディングします。可能な限り最短のコードで。 入力ファイルまたはStdinを介して有効なCファイルを受け取ります。Cファイルは、選択した行規則を使用し、ASCII文字32-126のみを含みます。少なくともChromeで正しく表示されるHTMLファイルに変換する必要があります。これにより、構文が強調表示されたソースコードが表示されます。出力はファイルまたはStdoutにあります。 強調する必要があります: 緑(#00FF00)のすべての文字列と文字(引用文字を含む)。文字列にはエスケープ文字が含まれる場合があります。 青のすべてのC予約語(#0000FF)。 すべてのコメントは黄色(#FFFF00)です。 ピンク色のすべてのCプリプロセッサディレクティブ(#FF00FF)。 Chromeで表示されるときの出力は、 固定幅フォントである 元のソースのどこにでも新しい行を表示する 空白を正確に再現します。タブ文字は4つのスペースであると解釈する必要があります。 ボーナス 行番号を含める場合はx 0.9。行番号は少なくとも99999に到達できる必要があります。すべてのソースはまだ整列している必要があります。したがって、行番号の小さいソースコードは、行番号の大きいソースコードと同じ位置から開始する必要があります。 x 0.8(各行の背景が明るい灰色(#C0C0C0)と白(#FFFFFF)の間で交互になっている場合) ソースコードがCで記述されていて、自分自身を正しくフォーマットできる場合はx 0.9。 得点 これはコードゴルフです。スコアは、ソースコードのバイト数にボーナスを掛けたものです。勝者は最低スコアのゴルファーです。
14 code-golf  string 

30
ピタゴラスの定理を実装する最短の方法
ピタゴラスの定理a²+b²=c²が嫌いな人はいますか?値aとbを取り込んで、「この直角三角形の斜辺は」+ cと出力する任意の言語で可能な最短の方法を記述します。cは小数点以下3桁までにしてください。
14 code-golf 

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