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

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

22
(3 + sqrt(5))^ nを正確に計算する
今日の目標は、次のような非負の整数nが与えられた整数aおよびbを見つけることです。 パラメーターnを受け取り、選択した形式でaとbを出力するプログラムまたは関数を作成する必要があります。 標準の抜け穴が適用されます。また、基本的な算術演算を使用して上記の問題を実装することを意図しています。そのため、組み込みの正確な代数機能、有理数、または非自明な数学的構造(Lucasシーケンスなど)を実装する関数を使用することはできません。 バイト単位の最短コードが優先されます。 入出力の例: 0→1、0 1→3、1 2→14、6 3→72、32 4→376、168 5→1968、880 6→10304、4608 7→53952、24128 8→282496、126336 →1479168 9、661504

21
別の方法
整数のリストを指定すると、指定した順序/深さで前方差分が生成されます。 整数のリストの場合: (10, 18, -12, 4, 8, -3, -5, 67, 9, 14) さまざまな注文/深さでの前方差異は次のとおりです。 0 10, 18, -12, 4, 8, -3, -5, 67, 9, 14 1 8, -30, 16, 4, -11, -2, 72, -58, 5 2 -38, 46, -12, -15, 9, 74, -130, 63 3 84, -58, -3, 24, 65, -204, …

15
ユニークなキャラクターを控える
それは非常に簡単です:プログラムまたは関数は次のテキストを生成する必要があります。 Elizabeth obnoxiously quoted (just too rowdy for my peace): "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG," giving me a look. 細字 出力を文字列として返すか、それをSTDOUT(または最も近い代替)に出力するプログラムまたは関数を作成できます。オプションで、出力に単一の末尾の改行を含めることができます。 得点 コードのバイト数にコードの一意のバイト数を掛けたもの 最低スコアが勝ちます。 たとえば、ここでは、乗数が非常に低い(それぞれ8と3)ため、ブレインファックまたはホワイトスペースの回答には大きな利点があります。ただし、一般に、これらの言語でプログラムを作成すると、コードが非常に長くなり、その利点が無効になる場合があります。 もはや面白くない標準的な抜け穴は禁止されています。

24
文字列の文字はどんどん進む
(PhiNotPiのフラクタルラインチャレンジの初期ドラフトに触発されました。) 幅W > 1、高さH > 1、および2(W+H-2)印刷可能なASCII 文字で構成される文字列が与えられます。タスクは、この文字列を、左上隅から時計回りに、指定された幅と高さの長方形に巻き付けて印刷することです。長方形の内側はスペースで埋められます。テストケースはこれを非常に明確にすることを望んでいます。 プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、結果をSTDOUT(または最も近い代替)に出力するか、文字列として返すことができます。 (入力文字列にある可能性のあるものを除いて)先頭または末尾のスペースがあってはなりません。オプションで、単一の末尾の改行を出力できます。 これはコードゴルフであるため、最短の提出(バイト単位)が優先されます。 テストケース 各テストケースの"String" W H後に、予想される出力が続きます。 "Hello, World! " 5 4 Hello , ! dlroW "+--+|||+--+|||" 4 5 +--+ | | | | | | +--+ ">v<^" 2 2 >v ^< "rock beats scissors beats paper beats " 11 10 rock beats …

3
スラッシュの描画
次のように、Xとで構成されるテキストの長方形ブロックを取り込むプログラムを作成します。.A ...... ..XX.. .X..X. .XXXX. .X..X. .X..X. 出力は、このグリッドの表現が45度スラッシュを描くことによって反時計方向に回転-コンテキストに応じて前方または後方-どこでもX国境.(残りを埋めるスペースを伴う)またはグリッドの側面を: /\/\ / /\ \ \/ / \ /\/ /\ \ \ / \/ \ \ \ \ \/ X入力の 'の形状がスラッシュによって維持されている限り、末尾と先頭のスペース(および改行)の数は重要ではありません。の余分な行や列を削除しても構いませ.ん。 I / Oの場合、stdin / stdout / files / command lineパラメーターの任意の組み合わせを使用できます。たとえば、スクリプトはX.パターンのファイル名を取得し、スラッシュパターンでファイルを書き換えます。または、スクリプトはX.標準入力から1行ずつパターンを取り(d完了したら押す)、結果を標準出力に出力します。 入力は任意に大きくなる場合がありますが、常に適切にフォーマットされていると想定できます。 / \改行以外の文字は出力に含まれません。 得点 バイト単位の最短コードが優先されます。非ASCII文字を使用する場合は、https://mothereff.in/byte-counterをバイトカウンターとして使用します。 ボーナス:プログラム内の1文字を変更(削除ではなく置換)できる場合は、50バイトをマイナスして、時計回りに45度回転したスラッシュグリッドを出力します。例: /\/\ / /\ \ / \ …

8
フランス語で数字を綴る
英語で数字を数字に変換するという課題がありましたが、それはあまりにも簡単でした。0〜100の数字を指定すると、対応する数字をフランス語で出力することになります。フランスの数字システムは、英語の数字システムと比較して、その背後にあるより複雑なロジックを持っています。 数字 --------------- 0ゼロ(アクセントに注意) 1国連 2ドゥ 3トロワ 4キャトル 5チンク 6 6 9月7日 8 huit 9ヌーフ 10ディックス 11オンズ 12ダウズ 13トライズ 14クォート 15キンゼ 16つかむ 9月17日(文字通り10 7) 18 dix-huit 19ディックスニューフ 20ヴィント 21 vingt et un(ハイフンなし) 22ヴィントドゥ ... 30トレンテ ... 40隔離 ... 50シンカンテ ... 60ソイシャンテ ... 70 soixante-dix(文字通り60) 71 soixante et onze ... 80 …

9
サルティンチャレンジ
ASCII 塩味クラッカーは次のとおりです。 _________________ | . . . | | . . | | . . . | | . . | | . . . | |_________________| 2つのクラッカーが積み上げられています。 _________________ | . . . | | . __________|______ | . | . . . | | .| . . | | …

7
Pythonでメンバー関数をエイリアスするにはどうすればよいですか?
Pythonでは、繰り返し使用される関数をエイリアスすることでバイトを節約できます。例えば: r=range a=r(100) b=r(200) c=r(300) ただし、関数が一緒にメンバー関数である場合、チェーンを可能にする方法でそれらをエイリアスする方法がわかりません。例えば: s='Hello' // Plain code s=s.replace('H','J').replace('e','i').replace('l','m').replace('o','y') // What I am trying to do q=replace s=s.q('H','J').q('e','i').q('l','m').q('o','y') 明らかに、私がやろうとしていることは無効です。そして、これもどちらでもありません: q=s.replace s=q('H','J') // Replaces the 'H' in 'Hello' s=q('e','i') // Replaces the 'e' in 'Hello'... and the J is gone. s=q('l','m') s=q('o','y') メンバー関数とチェーン関数をエイリアスして文字を保存する別の方法はありますか?
23 code-golf  tips  python 

5
リートから英語への翻訳
あなたの課題は、(英語の)leetspeak / lolspeak / txtspkを通常の英語に翻訳するプログラムを書くことです。ご使用の言語がこれらをサポートしていない場合を除き、プログラムは標準入出力から標準出力に読み込む必要があります。 新しい行で区切られた英語の単語のリストを含むファイルを使用できます。呼び出す必要がWあり、プログラムと同じディレクトリに配置されます。(GNU / Linuxシステムおよびおそらく他のシステムではW、リンクを作成できます/usr/share/dict/words)リストはすべて小文字である必要はなく、単語を大文字にするかどうかを判断するために使用できます。 これは、Nikos M.によって投稿された、現在削除されている質問に基づいています。この元の質問は閉じられており、回答を受け取らなかったため、これは重複ではありません。これは、勝者の基準がなく、ユーザーがそれを入力したくないためです。 得点 得点は少し複雑です! あなたのスコアは (leet items + bonuses) * 10 / (code length) 最高スコアが勝ちます。 あなたのプログラムは必ずしもそうである必要はなく、おそらく完璧ではありませんが、それが正確であるほど、より多くのボーナスが得られます! 以来$、両方を意味することができますsとS、あなたはそれが大文字(文章の開始時、すなわち大文字)を持つべきであるかどうかを決定するためのすご腕の項目ごとに5ポイントのボーナスを得ます。 適切な名詞(常に大文字の単語)を実装すると、リートアイテムごとに5ポイントのボーナスが追加されます-これが機能する方法は、単語リストに目を通し、リスト、両方のバージョンが存在する場合は、単に推測します。 文字に2つの意味がある場合(例:または1を意味できる)、リートアイテムごとに20ポイントを獲得します。実際の英語の単語を作成するアイテムの翻訳のみを選択すると、ワードリストを使用できます。リートアイテムの複数の翻訳が実際の英語の単語を作成する場合、有効な翻訳の1つを任意に選択しても、ボーナスを受け取ることができます。LI リートのリスト これらは、実装できるリートアイテムです。すべてを実装する必要はありませんが、追加するほどポイントが増えます。 アイテムやキャラクターを自分自身に翻訳してポイントを獲得することはできません。この規則は、リストで私が犯したかもしれない間違いを無効にします。 単純なtrまたはを行うのは魅力的s/.../.../gです。本当の課題は、単語リストを使用して、複数の意味のどれが正しいかどうかを判断することです。 リートアイテム(これらはそれぞれleet items式に1を追加します) $-> s、S (-> c、C 5-> s、S @-> a、A 4-> a、A 3-> e、E 7-> t、T +-> t、T #-> …

5
建物の影を描く
入力: 1 X X X X XX XXXXXX X X X X XX XXXXXX X X X XXX X XX XXXXXX X X X XXX X XX XXXXXX X X X 出力: X. X.. X... X.... XX. XXXXXX. X.X.X. X..... XX.. XXXXXX.. X.X.X.. XXX. X......XX... XXXXXX... X.X.X... XXX.. X......XX....XXXXXX.... X.X.X.... …

4
ROT-47にROT-47…を実装
課題:ROT-47を、それ自体とROT-47バージョンの両方として機能するコードに実装します。 得点: スコアは、両方のバージョンの合計バイト(すべての文字)で割った、プログラムの両方のバージョンの合計で使用されるROT-47適格バイトの割合として計算されます。 使用し、ROT-47適格バイトがないROT-47暗号によって変換されるだろう任意の文字で、コメントの一部またはコンパイラ/インタプリタでは無視されます。たとえば、brainfuckプログラム内の文字ではない+-<>[],.文字は使用済みバイトとは見なされず、Cプログラム内の文字を含む//またはその前後の文字は/* */使用済みバイトとは見なされません。APLのすべての特殊記号は、ホワイトスペースプログラムのすべての文字と同様に、使用されているとは見なされません(申し訳ありません)。 最も多くの賛成票を獲得したプログラムは、関係を壊します。同点の場合は、最短のプログラムが勝ちます。 スコアリングの例: C:62/64 = 96.875% このプログラムにはスペースがあります。明らかに、このプログラムはコンパイルさえできないため、有効なエントリではありませんが、スコアリングの仕組みを示したかったのです。 main(){printf("Hello World!");}

11
休憩してヘビを作りましょう!
私たちの古典的なヘビは、成長ホルモンの不均衡を開発しました。さらに悪いことに、彼の尾は固定されています!で指定された方向入力が与えられFigure 1た場合、彼が成長する場所を決定するプログラムを作成します。 図1.方向入力。 プログラム仕様 入力文字を文字ごとに読み取りますSTDIN。 文字を読んだ後、ヘビをに出力しSTDOUTます。ヘビを印刷するたびに、間に空白行を含めてください。 ヘビはで構成され<>v^、頭。蛇の頭のようなあなたが選んだ任意の丸い文字であってもよくo、0、O、または☺。 の任意の組み合わせがwasd入力に有効です。 プログラムは、入力が特定の長さ内にあると想定しないでください。 ヘビは自分自身の上に積み重なって上書きできます<>v^。ヘビの成長メカニズムの例を参照してください。 末尾の空白は問題ありませんが、ヘビは正しく見える必要があります。 得点 これはcode-golfです。スコアは、プログラムの文字数です。最低スコアが勝ちます! ヘビの例: 入力: ddddssaassdddddww 出力: >>>>v v v<< ☺ v ^ >>>>>^ 入力: dddsssaaawww 出力: ☺>>v ^ v ^ v ^<<< 入力: dddsssdddddasddddwww 出力: >>>v v ☺ v ^ >>>>v< ^ >>>>^ 入力: dddwwdddssssaaaaaaaaawww 出力: >>>v ☺ ^ …
23 code-golf 

6
ホットポテトセールスマン
点のリストが与えられたら、すべての点を訪れて開始点に戻る最短経路を見つけます。 巡回セールスマン問題として計算/それを近似する多くの方法があり、コンピュータサイエンスの分野ではよく知られています。非常に大きなポイントのグループについては解決されていますが、最大のもののいくつかは完了するまでに多くのCPU年を要します。 じゃがいもに火傷しないでください。 Hot Potatoは、2人以上のプレーヤーが音楽を再生しながら「じゃがいも」を一周するゲームです。オブジェクトは、次のプレーヤーにすばやく渡すことです。音楽が停止したときにジャガイモを保持している場合、あなたは外出している。 Hot Potato Salesmanのオブジェクトは次のとおりです。 100個の一意のポイントのセットが与えられた場合、それらのポイントをより良い順序で返します(さらに下に定義されているように短い合計距離)。これにより、問題は次のプレーヤーに「渡されます」。彼らはそれを改善し、次のようにそれを渡す必要があります。プレーヤーがそれを改善できない場合、彼らは外に出て、一人のプレーヤーが去るまでプレイを続けます。 これが「総当たり戦」の競争にならないようにするために、次の規定があります。 ジャガイモを渡すのに1分以上かかることはありません。1分が経過するまでに短い解決策を見つけて合格しなかった場合は、外出します。 25ポイントを超える位置は変更できません。正確には、>= 75ポイントは受け取った位置と同じでなければなりません。どちらを変更するかは問題ではなく、変更する量だけです。 プレイヤーが1人しか残っていない場合、そのプレイヤーがそのゲームの勝者となり、1ポイントを獲得します。トーナメントは5*nゲームで構成されnます。ここで、プレイヤーの数です。各ゲーム、開始プレイヤーが回転し、残りのプレイヤーの順番がシャッフルされますます。最後にポイントが最も多いプレイヤーがトーナメントの勝者です。トーナメントが1位タイで終了した場合、新しいトーナメントはそれらの競技者のみでプレイされます。同点がなくなるまでこれが続きます。 各ゲームの開始プレーヤーは、特定の順序で疑似ランダムに選択されたポイントのセットを受け取ります。 ポイントはx,y、デカルトグリッド上の整数座標のペアとして定義されます。距離は、マンハッタン距離を使用して測定され|x1-x2| + |y1-y2|ます。すべての座標は[0..199]範囲内にあります。 入力 入力は単一の文字列引数で与えられます。現在のプレイヤー数(m)と100ポイントを表す201個のコンマ区切り整数で構成されます。 m,x0,y0,x1,y1,x2,y2,...,x99,y99 これらのポイントの順序は現在のパスです。合計距離は、各ポイントから次のポイントまでの距離を加算することによって取得されdist(0,1) + dist(1,2) + ... + dist(99,0)ます()。合計距離を計算するときは、開始することを忘れないでください! でmはないことに注意してくださいゲームを開始したプレイヤーの数で、まだ参加しているプレイヤーの数で。 出力 出力は入力と同じ方法でマイナスで与えられmます。新しい順序でポイントを表すコンマ区切りの整数を含む単一の文字列。 x0,y0,x1,y1,x2,y2,...,x99,y99 制御プログラムは、1分間だけ出力を待機します。出力を受信すると、次のことを確認します。 出力は整形式です 出力は、から構成のみ及び全ての入力で100点、本 >=75 ポイントは元の位置にあります パスの長さが前のパスより短い これらのチェックのいずれかが失敗した(または出力がなかった)場合、あなたは退出し、ゲームは次のプレイヤーに進みます。 制御プログラム このリンクで制御プログラムを見つけることができます。制御プログラム自体は決定論的であり、ダミーのシードとともに投稿されます1ます。スコアリング中に使用されるシードは異なるため、吐き出す順番やポイントのリストを分析しようとしないでください。 メインクラスはTourneyです。これを実行すると、引数として与えられた競技者との完全なトーナメントが行われます。それは各ゲームの勝者と最後に集計を吐き出します。2つのSwapBotを使用したサンプルトーナメントは次のようになります。 Starting tournament with seed 1 (0) SwapBot wins …

5
正規表現ゴルフ:イタリアの地域と米国の地域
xkcdコミックに触発されたメタ正規表現ゴルフの問題は既にあります しかし、この正規表現ゴルフも楽しそうです!アメリカの州とイタリアの地域を区別したいと思います。どうして?私は両国の市民であり、常にこれに問題があります*。 イタリアの地域は Abruzzo, Valle d'Aosta, Puglia, Basilicata, Calabria, Campania, Emilia-Romagna, Friuli-Venezia Giulia, Lazio, Liguria, Lombardia, Marche, Molise, Piemonte, Sardegna, Sicilia, Trentino-Alto Adige/Südtirol, Toscana, Umbria, Veneto そしてアメリカの州は Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Delaware, Florida, Georgia, Hawaii, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana, Maine, Maryland, Massachusetts, Michigan, Minnesota, …

27
シェルピンスキーカーペット
誰が良いフラクタルを愛していないのですか?シェルピンスキーのカーペットは、フラクタルの典型的な例です。 このタスクを完了するには、タイプのカーペットを生成し、結果の画像をレベルカーペットを表す(stdoutフォーマットについては以下の例を参照)に印刷する必要があります。手順は、このウィキペディアの記事に記載されています。 この値は、stdinまたは同等の値から取得されます。 たとえば、4を入力すると、レベル4のカーペットが生成されます。 ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ …

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