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

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

30
伸縮式括弧
正しくバランスの取れた括弧の空でない文字列を考えてみましょう: (()(()())()((())))(()) 括弧の各ペアは、折り畳まれた伸縮構造のリングを表すと想像できます。それでは、望遠鏡を拡張しましょう。 ( )( ) ()( )()( ) () ()() ( ) () 別の見方をすると、深さnの括弧は、水平位置を維持したまま行nに移動します。 あなたの仕事は、バランスの取れた括弧のような文字列を取り、拡張バージョンを作成することです。 プログラムまたは関数を記述し、STDIN(またはそれに最も近いもの)、コマンドライン引数または関数パラメーターを介して入力を取得し、STDOUT(または最も近いもの)、戻り値または関数(出力)パラメーターを介して出力を生成できます。 入力文字列が有効である、つまり、括弧のみで構成されており、それらが正しくバランスしていると想定できます。 各行に末尾のスペースを印刷できますが、必要以上の先行スペースは印刷できません。合計で、行は入力文字列の長さの2倍を超えてはなりません。オプションで、単一の末尾の改行を印刷できます。 例 上記の例に加えて、さらにいくつかのテストケースがあります(入力と出力は空の行で区切られています)。 () () (((()))) ( ) ( ) ( ) () ()(())((()))(())() ()( )( )( )() () ( ) () () ((()())()(()(())())) ( ) ( )()( ) ()() ()( )() …

30
可能な限り少ないバイトでメモリをリーク
あなたの仕事は、可能な限り少ないバイトで少なくとも1バイトのメモリをリークするコードを書くことです。割り当てられたメモリだけでなくメモリもリークする必要があります。 リークメモリとは、プログラムが割り当てるメモリですが、メモリの割り当てを適切に解除する前にアクセスする機能を失います。ほとんどの高レベル言語では、このメモリをヒープに割り当てる必要があります。 C ++の例は、次のプログラムです。 int main(){new int;} これにより new intそれへのポインタなしでヒープを作成します。このメモリは、アクセスする方法がないため、すぐにリークされます。 Valgrindからのリークの概要は次のようになります。 LEAK SUMMARY: definitely lost: 4 bytes in 1 blocks indirectly lost: 0 bytes in 0 blocks possibly lost: 0 bytes in 0 blocks still reachable: 0 bytes in 0 blocks suppressed: 0 bytes in 0 blocks 多くの言語にはメモリデバッガー(Valgrindなど)があります。そのようなデバッガーからの出力を含めて、メモリリークを確認する必要があります。 目標は、ソースのバイト数を最小限にすることです。
79 code-golf 

7
オセアニアで革命を起こす
受賞者(14/09/14決定) Markuz(Python)による勝利の答え -63票 次点:黒井猫(PHP)-55票 前書き あなたは、ジョージオーウェルの本「Nineteen Eighty-Four」の世界にいます。 あなたは党のプログラマーであり、テレスクリーン用のプログラムを書くことを任されています。プロパーティのメッセージを出力するはずです。以下のタスク1に示すメッセージを選択しました。しかし、あなたは最近党を軽deし始め、あなたはこのプログラムに革命を引き起こしたいと思っています。だから、あなたはプログラムに「Down with Big Brother!」と言うようにします。人々があなたのプログラムが何をしているのかを理解すると拷問されるので、あなたは逃げる時間を与えなければなりません。 注:これは革命を引き起こすことはありませんが、あなたはそれが実際に違いを生むと思うほど党に対する憎しみの狂乱にあります。 仕事 次のプログラムを作成します。 2014年9月14日より前は、常に次の行をローテーションで出力します(つまり、1行を印刷し、10秒待機し、次の行を印刷します)。 War is Peace Freedom is Slavery Ignorance is Strength 2014 Down with Big Brother!年9月14日以降は10秒ごとに印刷されます。 一見、1だけのように見えるので、党に捕まることはありません。 ルール もちろん、標準の抜け穴は許可されていません。 これは手に負えない課題です。そのため、主な目的は、タスク2.をできるだけ目立たないようにし、秘密にすることです。 パーティは使用されているすべてのファイルを確認するため、ファイルに秘密のメッセージを保存することはできません。 言語が日付の検索をサポートしていない場合、または非常に困難な場合、240時間(10日間)実行した後、プログラムにタスク2を実行させることができます。 コードとそれがどのように機能するかの説明を回答に含める必要があります。 これは人気コンテストです。 注:書くのは難しいプログラムではありません。難しい部分は、「革命的な」コードを隠すことです。あなたが何をしているのか明確でない行は、党によって質問され、あなたはそれらを説明しなければなりません。 例-Python 3 注意:明らかに、このプログラムがある道あまりにも明白。 from datetime import datetime from time import sleep lines …

30
MS Windowsを検出する
チャレンジ Microsoft Windowsで実行すると真理値を返すプログラムを作成し(簡単にするためにWindows 7、8.1および10に固執します)、他のオペレーティングシステム(OSX、FreeBSD、Linux)で実行すると偽値を返します。 ルール プラットフォームでの実行/コンパイルに失敗したコードは、偽の値としてカウントされません。 受賞基準 私はこれをcode-golfとラベル付けしているので、最低スコアが勝ちますが、この問題に対する創造的な解決策を見ることにも非常に興味があります。

30
Hello World 0.0!
出典:Dilbert、1992年9月8日 古典的な「Hello World!」に新たな工夫を加えたいと思っています。プログラム。 以下を使用Hello World!せずに出力するプログラムをコーディングします。 文字列/文字リテラル 数字(任意のベース) 「Hello World!」を返す事前に構築された関数 正規表現リテラル 「O」†および0を除きます。 †「O」は大文字で、「o」は使用できません。

30
-ENDED-他の何かのように見えることをする[終了]
スニペット、関数、プログラムなどを記述します。これは、他の何かを実行していることが一見すると明確に見えるように難読化されています。 たとえば、2つの数字を追加するコードを少し書きますが、誰かに「それは何をしますか?」と尋ねると、「Hello、World!」と表示されます。 ルール コードは、使用する言語をおおまかに知っている人が読めるようにする必要があります(APLのような組み込みの難読化された言語は、自分の利益のために避けてください)。 コードは、読者が最初は予測できなかった予期しないことを行わなければなりません。 異なる読者に尋ねるとき、彼らはコードが何をするかについて同じ(間違った)意見を持たなければなりません。 格付け そこに何が起こるかをよく知るために、他の競技者のコードを最大10〜20秒間読んでください。 回答にコメントを追加して、コードが何をすると思うかを伝えます。あなたが与えたい答えが既にそこにあるなら、単にコメントを+1してください。(その回答を見逃して別のコメントを追加しても、心配しないでください。別の回答としてカウントされません)。 ポイントは次のように認識されます:(maxFalseOpinion- goodGuess)/ totalOpinion(以下の例を参照)。 フェアプレイで他の参加者を評価し、自分のコードにコメントしないでください。 有用なコメントのみを追加してください。「わからない」と「良いもの!」は避けてください。これらは評価では考慮されませんが、難読化する必要があるのはコードであり、評価ではありません。 評価の例 スニペットは2つの数字を追加します。コメントは言う: (3)「Hello、World!」と表示されます (1)2つの数値を減算します。 (2)2つの数字を追加します。 ポイントの合計量は、意見の最大数(3)-推測の総数(2)を推測の合計量(3 + 1 + 2 = 6)で割ったものです。結果:(3-2)/ 6 = 1/6 = 16.67%。 ポイントの詳細 人々はポイントを理解するのに苦労しているようです。 完全なスコアは次のとおりです。 printf('Hello World'); コメント: ボタンをクリックした回数を表示します。(17コメント)。 合計:17コメント スコア:(17-0)/ 17 = 1 = 100% ラメスコアは次のとおりです。 printf('Hello World'); コメント: 「Hello …

5
スタック交換サイトをアイコンで認識する
Stack Exchangeでしばらく過ごした後、Hot Network Questionsのほとんどのサイトは小さなアイコン(これもfaviconです)で認識できますが、すべてではありません。できるプログラムを書きましょう!(現在は)132個のファビコンのうちの1つを与えて、サイトを決定するコードを記述します。これには、日本語のStack Overflow(まだプライベートベータ版です)が含まれます。 これらのすべての画像を含むZIPファイルをGitHubの PNGとしてアップロードしました。[未加工]ボタンをクリックしてダウンロードします。上記のアイコンの順序は、zip内のファイル名のアルファベット順です。 対応するサイト名(この順序で)は次のとおりです。 コードスニペットを表示 Academia Android Enthusiasts Anime & Manga Ask Different Arduino Ask Ubuntu Astronomy Aviation Video Production Beer Bicycles Biology Bitcoin Blender Board & Card Games Stack Overflow in Portuguese LEGO Answers Buddhism Chemistry Chess Chinese Language Christianity Programming Puzzles & Code Golf …

30
10バイトのコードの最大数
目標は、わずか10文字のコードを使用して、可能な限り最大数を(標準出力に)印刷することです。 組み込みの指数関数を除き、言語の機能を使用できます。 同様に、数値の入力に科学表記法を使用することはできません。(したがって、ありません9e+99。) プログラムは、ユーザーからの入力なしで番号を印刷する必要があります。同様に、他のファイルやWebなどからの読み取りもありません。 プログラムは、単一の数値を計算して印刷する必要があります。文字列を印刷することも、同じ桁を何千回も印刷することもできません。 何でも印刷するために必要なコードを10文字の制限から除外できます。たとえば、print x構文を使用するPython 2では、プログラムに最大16文字を使用できます。 プログラムは実際に出力で成功する必要があります。世界最速のコンピューターで実行するのに1時間以上かかる場合、それは無効です。 出力は、任意の形式であってもよい(あなたは印刷することができるように999、5e+100など) Infinityは抽象的な概念であり、数字ではありません。したがって、有効な出力ではありません。

30
呼び出さずにメソッドを呼び出す[終了]
削除されたStackOverflowの質問に触発されました。明示的に呼び出すことなく、特定のメソッドを実行する方法を思いつくことができますか?間接的であればあるほど良い。 正確に言うと、次のとおりです(Cは例証のためだけに使用され、すべての言語が受け入れられます)。 // Call this. void the_function(void) { printf("Hi there!\n"); } int main(int argc, char** argv) { the_function(); // NO! Bad! This is a direct call. return 0; } 元の質問:

30
N(e(s(t)))文字列
文字列を「関数の入れ子」にするには、以下を行う必要があります。 最初の文字を関数として扱い、後続の文字をその関数の引数として扱います。たとえば、入力文字列がのHello場合、最初のステップは次のようになります。 H(ello) 次に、すべての部分文字列に対してこの同じ手順を繰り返します。だから我々は得る: H(ello) H(e(llo)) H(e(l(lo))) H(e(l(l(o)))) あなたの仕事は、文字列を「関数の入れ子にする」プログラムまたは関数を書くことです。たとえば、入力文字列がの場合、Hello world!出力する必要があります。 H(e(l(l(o( (w(o(r(l(d(!))))))))))) 入力には印刷可能なASCIIのみが含まれ、適切な形式で入力および出力を取得できます。たとえば、STDIN / STDOUT、関数の引数と戻り値、ファイルの読み取りと書き込みなど。 簡単にするために、入力に括弧が含まれず、空にならないことも想定できます。 Input: Nest a string Output: N(e(s(t( (a( (s(t(r(i(n(g)))))))))))) Input: foobar Output: f(o(o(b(a(r))))) Input: 1234567890 Output: 1(2(3(4(5(6(7(8(9(0))))))))) Input: code-golf Output: c(o(d(e(-(g(o(l(f)))))))) Input: a Output: a Input: 42 Output: 4(2) いつものように、デフォルトのルールと抜け穴がすべて適用され、バイト単位で記録された最短回答が勝ちます!

15
計画とコルフ
#brexitや#brangelinaなどのクールなtwitterハッシュタグを作成したことはありませんか?このゴルフはあなたのためです。 2つの文字列AとBを入力として受け入れ、次のアルゴリズムに従ってそれらをマージするプログラムを作成します。 せてnAにおける母音基の数である(例えば、britain2つの母音基を有する:i3位とai5位に)。 n = 1の場合、最初の母音グループの位置からAを切り捨てます(例:bill=> b) n> 1の場合:A n-1番目の母音グループの位置からAを切り捨てます(例:programming=> progr、britain=> br) Bの先頭のすべての子音を削除します(jennifer=> ennifer) 変更されたAとBを連結します 母音はaeiou; 子音はbcdfghjklmnpqrstvwxyz。 入力 入力文字列は小文字で、少なくとも1つの母音と1つの子音が含まれると仮定できます。 例 brad + angelina => brangelina britain + exit => brexit ben + jennifer => bennifer brangelina + exit => brangelexit bill + hillary => billary angelina + brad => angelad …
76 code-golf 

24
SIGILLをスローする最短コード
バックグラウンド すでにSIGSEGVを投げることに挑戦していますので、なぜSIGILLを投げることに挑戦しませんか? SIGILLとは SIGILLは、非常にまれにしか発生しない、プロセッサでの不正な命令のシグナルです。SIGILLを受け取った後のデフォルトのアクションは、プログラムを終了し、コアダンプを書き込むことです。SIGILLのシグナルIDは4です。SIGILLに遭遇することは非常にまれであり、経由でコードを生成する方法はまったくわかりませんsudo kill -s 4 <pid>。 ルール プログラムにはroot権限がありますが、何らかの理由で必要ない場合は、通常のユーザーを使用することもできます。私はドイツ語ロケールのLinuxコンピューターで、SIGILLをキャッチした後に表示される英語のテキストを知りませんが、「違法な命令」のようなものだと思います。SIGILLをスローする最短のプログラムが勝ちます。
76 code-golf 

30
ただのバグだった
中に盗聴出力に触発@CarcigenicateのClojureの答えのための印刷このダイヤモンド挑戦。 この正確なテキストを印刷します。 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 …

30
このダイヤモンドを印刷
この質問は私のオフィスでウイルスのように広がっています。さまざまなアプローチがあります。 以下を印刷します。 1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321 12345678987654321 123456787654321 1234567654321 12345654321 123454321 1234321 12321 121 1 回答は文字数で記録され、文字数は少ないほど良いです。

30
警官と強盗:逆正規表現ゴルフ
注:このチャレンジは終了しました。今後の警察の提出は、受け入れられた回答とはみなされません。これは、誰もチャレンジに興味がないため、クラックされていない非常に単純な正規表現を将来誰も投稿できないようにするためです。 警官の挑戦 次の仕様を満たす短い難読化された正規表現を作成する必要があります。 オンラインで自由にテストできるフレーバーを選択できます。StackOverflowには、オンラインテスターの良いリストがあります。特に、Regex101はPCRE、ECMAScript、およびPythonのフレーバーをサポートしているため、使い始めるのに適しています。必要に応じて、右上隅のレンチをクリックして、タイムアウト制限を増やすことができます。選択したテスターを回答に含めてください。 好みのフレーバーに適したテスターがない場合は、ideoneなどのオンラインインタープリターを使用して、ホスト言語で小さなスクリプトを作成し、それを使用して提出物をテストできます。 ホスト言語を直接呼び出すことのない、そのフレーバーの任意の機能を使用できます(Perlのコード評価機能など)。 同様に、コード評価に結びつかない限り、任意の修飾子を使用できます(フレーバーにそれらがある場合)。 正規表現は、少なくとも1つの文字列Sを受け入れ、少なくとも1つの文字列Tを、それぞれ16文字以上で256文字以内の長さで、妥当な時間(1分以内に大幅に)拒否する必要があります。SとTには、オンラインテスターに​​入力する方法がある限り、ASCII以外のUnicode文字を含めることができます。このような文字列のペアは、送信のキーになります。 正規表現は、他の入力に勝手に時間がかかる場合があります。 課題の中核は、キーを見つけるのが難しい正規表現を作成することです。つまり、一致しない文字列と一致する文字列(または、キーの文字列を除くすべての正規表現が終了するまでに数日かかる場合もある)を区別するのは難しいはずです。 強盗の挑戦 独自の正規表現を送信したユーザーを含むすべてのユーザーは、他の送信を「クラック」することをお勧めします。キーの 1つが関連するコメントセクションに投稿されると、提出物がクラックされます。 重要:ほぼすべての文字列をキーの一部に使用できる場合でも、投稿する文字列が両方とも16〜256文字であることを確認してください。 提出物が変更またはクラックされることなく72時間持続する場合、著者は回答でネタバレタグに編集することにより有効なキーを明らかにすることができます。これにより、彼の答えは「安全」になります。つまり、クラッキングされなくなります。 ユーザーごとの送信ごとに1回のクラッキングのみが許可されます。たとえば、ユーザーXに送信する場合: "あなたのキーは0123456789abcdef/ fedcba9876543210です。" 私は間違っています、ユーザーXは私の推測を間違っているとして放棄し、その提出物について追加の推測を提出することはできなくなりますが、他の提出物を解読することはできます(そして、他の人はまだその提出物を解読することができます)。 クラックされたサブミッションは競合から排除されます(「安全」でない場合)。編集または削除しないでください。著者が新しい正規表現を提出したい場合は、別の回答で提出する必要があります。 自分の提出物をクラックしないでください! 注:コメント内のスペースなしの長い文字列の場合、SEは2つのUnicode文字の形式で手動の改行を挿入します。そのため、スペース以外の文字の間で改行するほど長いバックティックでキーを投稿すると、キーを正規表現テスターに​​直接コピーすることはできません。この場合、警官の正規表現とキーを使用して、関連する正規表現テスターへのパーマリンクを提供してください-ほとんどのテスターに​​はこの機能が含まれています。 得点 警官のスコアは、クラックされていない限り、バイト単位の正規表現のサイズになります(パターンと修飾子、潜在的な区切り文字はカウントされません)。「安全な」提出の最低スコアが勝ちます。 強盗のスコアは、彼らがクラックした提出の数になります。同点の場合、それらがクラックしたサブミッションの合計バイトサイズは、タイブレーカーとして使用されます。ここでは、最高のバイト数が優先されます。 上記のように、どの警官も強盗として参加でき、その逆も可能です。 チャレンジの2つの部分で別々のリーダーボードを維持します。 リーダーボード 最終更新日:2014年10月19日、20:33 UTC 警官: イタリック体での提出はまだ安全ではありません。 nneonneo、841バイト Wumpus Q. Wumbley、10,602バイト Sp3000、52,506バイト user23013、53,884バイト nneonneo、656,813バイト 強盗: user23013、クラック:11、合計サイズ: 733 + 30 + 2,447 + 71 + 109 …

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