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

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

14
フィボナッチスパイラル
あなたの目標は、数字でフィボナッチスパイラルを生成することです。 入力/出力の例 1 -> 1 2 -> 1 1 3 -> 1 1 2 2 2 2 6 -> 8 8 8 8 8 8 8 8 5 5 5 5 5 8 8 8 8 8 8 8 8 5 5 5 5 5 8 8 8 8 8 …

30
100個のJava Tupleクラスを生成します
標準出力、または同等の言語で、次で始まる100行の(有効な)Javaコードに書き込むスクリプトを作成します。 class Tuple1 {public Object _0;} class Tuple2 {public Object _0,_1;} class Tuple3 {public Object _0,_1,_2;} class Tuple4 {public Object _0,_1,_2,_3;} class Tuple5 {public Object _0,_1,_2,_3,_4;} class Tuple6 {public Object _0,_1,_2,_3,_4,_5;} class Tuple7 {public Object _0,_1,_2,_3,_4,_5,_6;} class Tuple8 {public Object _0,_1,_2,_3,_4,_5,_6,_7;} class Tuple9 {public Object _0,_1,_2,_3,_4,_5,_6,_7,_8;} class Tuple10 {public Object …

28
レイランド番号
自然数を指定するnと、n-番目のレイランド数を返します。 レイランド・ナンバー レイランド数は次kの形式の正の整数です k = x^y + y^x どこにx,y1よりも厳密に大きい整数です。 それらは昇順で列挙されます。 編集: @DigitalTraumaは、次の「定義」を含めることを提案しました: 私たちはスロー想像x^y+y^x可能なすべての値のために袋にx及びy、かつ重複で回避投げ。次に、そのバッグをソートします。ソートされたバッグはシーケンスです。 詳細 最適なものであれば、0または1ベースのインデックスを使用できます。 プログラムは、少なくとも符号付き32ビット整数の最大値より小さいすべてのLeyland数を出力できなければなりません。(この制限を下回る最後のレイランド数は1996813914、インデックスにあります82。) テストケース 最初のいくつかの用語は次のとおりです。 8, 17, 32, 54, 57, 100, 145, 177, 320, 368, 512, 593, 945, 1124 OEISのA076980、最初のエントリを除く。その追加の最初のエントリのために、OEISのインデックスは1シフトされることに注意してください。 OEIS b-ファイルでさらに見つけることができます

30
すべての英数字とアンダースコアを印刷します
英数字とアンダースコアの文字列を任意の順序で印刷または返すプログラムまたは関数を作成します。正確には、次の文字が出力する必要がない、そして何より: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 標準出力に出力する場合、出力後のオプションの末尾の改行が許可されます。 上記の文字を9つ以上含む組み込み定数は許可されません。 バイト単位の最短コードが優先されます。 これは非常に簡単な挑戦であり、それでもなお興味深い答えが得られると思います。 リーダーボード これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 # Language Name, N bytes N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: # Ruby, <s>104</s> <s>101</s> 96 bytes ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。 # Perl, 43 + 2 (-p flag) = 45 bytes 言語名をリンクにして、リーダーボードスニペットに表示することもできます。 # [><>](http://esolangs.org/wiki/Fish), 121 bytes コードスニペットを表示 var QUESTION_ID=85666,OVERRIDE_USER=4162;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var …

30
合計の二乗の差
合計の平方と平方の合計の差を見つけます。 これは数学的な表現です。 (∑n)2−∑n2(∑n)2−∑n2\left(\sum n\right)^2-\sum n^2 プログラム/メソッドは、2つの入力を取る必要があります。これらは、範囲の下限と上限であり、包括的です。制限は0より大きい整数全体です。 プログラム/メソッドが答えを返すはずです。 どのベースを使用しても構いませんが、使用したベースを回答に明記してください。 テストケース(ベース10) 5,9 970 91,123 12087152 1,10 2640 これは通常のコードゴルフですので、答えは短いほど良いです。

30
qwertyキーボードを出力します
文字を指定すると、その文字に続くqwertyキーボードレイアウト全体(スペースと改行を含む)が(画面に)出力されます。例はそれを明確にします。 入力1 f 出力1 g h j k l z x c v b n m 入力2 q 出力2 w e r t y u i o p a s d f g h j k l z x c v b n m 入力3 m 出力3 (プログラムは出力せずに終了します) 入力4 l …

5
クラスターサイズの克服
フラッシュストレージの信頼性にうんざりして、すべてのプログラムを古き良き1,440 KiBフロッピーのいずれかに保存することにしました。しかし、3,000個のプログラムさえコピーしなかった後、ディスクはいっぱいになりました。それはどうして可能でしょうか?コードゴルフの技術に精通しているため、プログラムのほとんどは100バイトの長さでさえないため、十分なスペースが残っているはずです... スーパーユーザーに問い合わせた後、ファイルシステムのクラスターサイズ、FAT12のデザイナーの邪悪なプロットに悩まされていることがわかります。これは、フロッピーのかなりの部分を未使用のままにして、実際に必要以上に購入を余儀なくさせます。 フロッピーを追加購入しますか?絶対に!複数のプログラムを1つのファイルに保存するだけであれば、クラスターサイズは問題になりません。これは、同じソースコードに対して異なるコンパイラー/インタープリターが異なる動作をするためです。 仕事 単一のクラスター(512バイト以下)に収まり、次のタスクをできるだけ多く解決するポリグロットを作成します。 ひも すべての入力を読み取り、印刷します。 Print Hello、World!。 入力として行/引数(name)を読み取り、ハッピーバースデー[name]を出力します!。 すべての入力を読んで、タブが大好きです!1つ以上のタブレータ(0x09)が含まれていて、スペースが嫌いです!そうでない場合。 2行/引数を読み取り、2番目が最初のサブストリングである場合は真実の値を出力し、そうでない場合は偽の値を出力します。 行/引数を読み取り、その文字が厳密に昇順である場合は真実の値を出力し、そうでない場合は偽の値を出力します。 行/引数および文字を読み取り、その文字のすべての出現のインデックスを出力します。 行/引数を読み取り、出現回数が最も多い文字を印刷します。 数学 間の2つの整数を読む0と255とそれらの合計を印刷します。 0から255までの単一の整数を読み取り、その除算の商と剰余を7で出力します。 1から255までの単一の整数を読み取り、それが合成数(1でも素数でもない)である場合は真理値を出力し、そうでない場合は偽値を出力します。 1から255までの単一の整数を読み取り、それが2のべき乗である場合は真理値を出力し、そうでない場合は偽値を出力します。 間の2つの整数を読む0と255と大きな1つを出力します。 間進整数読み取る0と255を 16進表現を印刷します。 間の単一の整数を読む0と255とのハミング重み(1ビットの数)を印刷します。 単一の整数を読み取るNとの間の1と13と印刷FをN、N 番目の フィボナッチ数。 たとえば、入力の13場合、print 233。 アスキーアート 入力の行/引数を読み取り、フレーム化します。 たとえば、inputのProgramming Puzzles & Code Golf場合、次を印刷します。 +---------------------------------+ | Programming Puzzles & Code Golf | +---------------------------------+ 文字の長方形ブロックを読み取り、時計回りに4分の1回転させます。 たとえば、入力用 tye xll …

30
ケーキカットコンテスト
私の17歳の誕生日で、あなたは私のパーティーに招待されています! そして、いつものように、パーティーがあります。 1つのケーキ... そして、あなたはそれをできるだけ多く必要とします。 これは公正なパーティーであるため、私たちはそれぞれ、私のケーキをどれだけ欲しいかを言い、最小量を言った人がそれを手に入れると言います。その後、ケーキがなくなるまで他の全員がこのプロセスを繰り返します。 チャレンジ の形式のコマンドライン引数を介した入力を指定するとtotal-degrees degrees-left total-people people-left、標準出力に出力されますinteger-bid-in-degrees。 あなたの入札が最低だった場合、その量のケーキを受け取り、ラウンドに出ます。 入札単価が最低ではなかった場合、ボットは残りのケーキに入札します。 最低入札価格が同じ場合、削除された人がランダムに選択されます。 ラウンドの終わりに、すべてのケーキがなくなるか、入札する人がいなくなると、最もケーキを持っている人が勝ちます! ラウンドの終わりに2人が同じサイズの最大のスライスを持っている場合、勝者は抽選からランダムに選ばれます。 ゲームプレイ 17ラウンドがあり、全体的な勝者は、全体で最も勝ったエントリになります。 引き分けの場合、勝者が明確になるまでラウンドが行われます。 毎日、現在のスコアを更新して、人々がエントリーをアップグレードできるようにします。 提出 エントリを次のように書く必要があります ボット名、言語 Insert Code Here 説明/ランダムなものはこちら エントリがこの方法でフォーマットされていない場合、コントローラはエントリを実行できません。エントリにこれが発生したことがわかった場合は、コメントで通知するか、回答を正しい形式に編集します。 エントリとファイルストレージ ボットはファイルを./data/ディレクトリに保存し、他の場所には保存しない場合があります。 必須ではありませんが、ファイルを次のように保存してください botname* botnameエントリ名でない場合、この形式でファイルを書き込むことはできません。 つまり、この形式では表示されない他のファイルを上書きできます。これを故意に行うべきではありません、スポーツをしてください。 ボットは、必要なファイルが存在すると想定してはなりませんが、./data/存在すると想定できます。 これは私がたまに拭くためである./dataディレクトリに、私はなりますラウンドが実際に起動したときにこれを行います。(しかし、それらの間ではありません) ボットはファイルをまったく削除しない可能性があります ボットは./data/ディレクトリ 内のファイルの読み取りのみ許可されています これは、他のエントリファイルを見ることを意味します 結果: Meekがコンテストで優勝しました!よくできました@ Cabbie407 そして今、いくつかのランダムな統計について: 各ボットが入った位置のリスト:(このリストに表示されているボットはすべて終了しました。少なくとも一度はトップ5にいました!) Meek、Meek、Eidetic、Eidetic、Meek、Eidetic、Eidetic、Meek、Meek、Meek、Saucy、Meek、Givemethecake、Givemethecake、Givemethecake、Meek、Eidetic Eidetic、Eidetic、Meek、AlCakeSurfer、Eidetic、AlCakeSurfer、Meek、MyFairPlusAThird、Eidetic、Eidetic、Eidetic、Eidetic、MyFairPlusAThird、MyFairPlusAThird、Meek、MyFairPlusAThird、AlCakeSurfer Reallythecake、AlCakeSurfer、AlCakeSurfer、Meek、AlCakeSurfer、Meek、AlCakeSurfer、AlCakeSurfer、Reallythecake、AlCakeSurfer、Meek、MyFairPlusAThird、Eidetic、Eidetic、Eidetic、Eidetic、Reallythecake AlCakeSurfer、Reallythecake、MyFairPlusAThird、MyFairPlusAThird、MyFairPlusAThird、MyFairPlusAThird、MyFairPlusAThird、Eidetic、AlCakeSurfer、MyFairPlusAThird、MyFairPlusAThird、Relinquisher、Relinquisher、Bill、Bill、Fillquirher ビル、MyFairPlusAThird、ビル、ビル、ビル、ビル、ビル、放棄者、放棄者、MyFairPlusAThird、放棄者、ビル、Reallythecake、ビル、ALittleOffTheTop、ALittleOffTheTop、ビル、ビル 実行中の彗星の完全なログファイルはここにあります。途中でフォーマットが変更されて申し訳ありません。 …

2
ミュージカルツイートチャレンジ
これはTwitter画像エンコーディングチャレンジのオーディオバージョンです。 140バイト以下の印刷可能なUTF-8エンコードテキストで少なくとも1分間の音楽を表現できるオーディオ圧縮形式を設計します。 次の3つの引数(プログラム自体の名前の後)をとるコマンドラインプログラムを記述して実装します。 文字列encodeまたはdecode。 入力ファイル名。 出力ファイル名。 (お好みのプログラミング言語にコマンドライン引数を使用する機能がない場合は、別のアプローチを使用できますが、回答で説明する必要があります。) encode操作は、あなたの圧縮された「つぶやき」のフォーマットにあなたの選択したオーディオ形式から変換します、そしてdecode操作があなたの「つぶやき」形式から元のオーディオ形式に変換します。(もちろん、非可逆圧縮を実装することが期待されているため、出力ファイルは入力と同一である必要はなく、同じ形式である必要があります。) 答えに含めてください: プログラムのソースコード。(このページに対して長すぎる場合は、別の場所でホストし、リンクを投稿できます。) 仕組みの説明。 元のオーディオファイルへのリンク、圧縮先の「ツイート」テキスト、およびツイートをデコードして取得したオーディオファイルを含む少なくとも1つの例。(Answererは著作権の「公正使用」アサーションに対して責任があります。) ルール 私はいつでもコンテストルールの抜け穴を塞ぐ権利を有します。 [4月24日編集]encode関数の入力(および関数の出力decode)には、次のような合理的な一般的なオーディオ形式を使用できます。 WAVのような非圧縮波形。 MP3のような圧縮された波形。 MIDIのような「シートミュージック」スタイル。 圧縮された「ツイート」形式では、実際に入力ファイルのサウンドをエンコードする必要があります。したがって、次のタイプの出力はカウントされません。 実際の出力が保存される場所を示すURIまたはファイルパス。 実際の出力がblobとして保存されるデータベーステーブルへのキー。 同様のもの。 プログラムは、一般的な音楽ファイルを圧縮するように設計する必要があります。したがって、特定のサンプルソングに明白に結びついているようなことはしないでください。たとえば、「Twinkle、Twinkle、Little Star」をデモンストレーションしている場合、圧縮ルーチンはシーケンスdo-do-so-so-la-la-soの特定のシンボルをハードコーディングしないでください。 あなたのプログラムの出力は、実際にTwitterを通り抜けて無傷で出てくるはずです。サポートされている正確な文字のリストはありませんが、文字、数字、記号、句読点に固執しようとしています。制御文字、文字、BIDIマーカー、またはその他の奇妙なものを組み合わせないようにします。 複数のエントリを提出できます。 判定基準 これは人気コンテストです(つまり、ほとんどの正味の賛成票が勝ちます)が、有権者は次のことを考慮するよう促されます。 正確さ 圧縮された後でも曲を認識できますか? それはいいですね? どの楽器が演奏されているかをまだ認識できますか? それでも歌詞を認識できますか?(これはおそらく不可能ですが、誰かがそれを成し遂げたら印象的です。) 複雑 ここで例の歌の選択が重要です。 [4月24日追加]この課題は、MIDIまたは同様のフォーマットで最も簡単になります。ただし、波形タイプのフォーマットで動作させるために余分な努力を払う場合、それは余分な信用に値します。 構造は何ですか?もちろん、同じ4つの測定を任意の回数繰り返すだけで、1分間の要件を満たすことができます。しかし、より複雑な歌の構造はより多くのポイントに値します。 このフォーマットは、一度に再生される多くのノートを処理できますか? コード できるだけ短く簡潔にします。ただし、これはコードゴルフではないため、文字数よりも読みやすさが重要です。 結果の品質の向上によって正当化される限り、巧妙で複雑なアルゴリズムでも問題ありません。

8
出力サイズがGrahamの数を超える最短の終了プログラム
以下の要件を満たす最短のプログラム(バイト単位で測定される長さ)を作成します。 入力なし 出力は標準出力へ 実行は最終的に終了します 出力バイトの合計数がGrahamの数を超えています プログラムは、無制限のリソースにアクセスできる理想的なコンピューター1で「正常な」終了まで実行され、必要に応じて(構文を変更せずに)共通のプログラミング言語が変更されると仮定します。これらの仮定のため、これを一種のゲダンケン実験と呼ぶかもしれません。 物事を始めるために、急成長している階層でfω+ 1(99)を計算する73バイトのRubyプログラムを以下に示します。 f=proc{|k,n|k>0?n.times{n=f[k-1,n]}:n+=1;n};n=99;n.times{n=f[n,n]};puts n 1編集:より正確には、既存のシステムを使用して、ストレージサイズに上限がないように変更します(ただし、常に有限です)。命令の実行時間は変更されることは想定されていませんが、マシンは動作寿命に上限がないという点で理想的であると想定されています。


11
長さ、和、積が素数である最大の素数を見つける
数値113は、長さ3が素数、デジタル合計5 = 1 + 1 + 3が素数、デジタル積3 = 1 * 1 * 3が素数である最初の素数です。 これら3つの特性を持つ素数は、最高素数と呼ばれます。プライム11117と1111151は他の例です。 ゴール まともな最新のパーソナルコンピューター(ここで推奨される仕様など)で1時間以内に可能な限り最大の素数を見つけることができるプログラムを作成します。 単に最高の素数を与えてはいけません。実際に動作するコードで検索プロセスを示す必要があります。自分や他の人のソリューションを基に構築できますが、必ずクレジットを与えるようにしてください。私たちは、通常のコンピューターで1時間で実現可能な最大の素数を見つけようと共同で試みています。 得点 最大のプライムプライムを見つけたサブミッションが勝ちます。有限数の最高素数があることが判明した場合、最高最高素数を生成する最初のサブミッションが勝ちます。 (数え切れないほど多くの最高素数があるかどうかを数学的に証明できる場合は、200の報奨金を提供します。理由は:)) 詳細 任意のソースを使用して素数を生成できます(インターネットなど)。 確率的素数検定法を使用できます。 すべてがベース10にあります。 0と1は素数とは見なされません。 を含むプライムには0デジタル製品がある0ため、最高になれないことは明らかです。 ページを整理するために、フォームに大きな(100桁以上の)最高プライムを配置します。 {[number of 1's before the prime digit]}[prime digit]{[number of 1's after the prime digit]} だから、1111151のように表現することができ{5}5{1}。

22
忍者と猿と熊、オーマイ!
このチャレンジは、ブロックビルディングボットフロックを獲得したNinjaBearMonkeyの賞です!ブラックナイトの提出に挑戦してください。おめでとうございます、NinjaBearMonkey! ここでの課題は非常に単純ですが、さまざまなアプローチが可能です。物語は、等尺性錯覚の世界には、6種類のクリーチャーがいるということです。 忍者、略称 N クマ、略称 B サル、略称 M NinjaBears、略称 NB BearMonkeys、略称 BM NinjaBearMonkeys、略称 NBM (NinjaBearMonkeyは、もちろん最後の、最も強力なタイプです。) あなたの仕事は、これらのクリーチャーが並んでいるとき、つまり略語の文字列が連結されているとき、これらのクリーチャーの人口調査を取ることです。警告は、いくつかのクリーチャーの一部を偶然似ているように見える別個のクリーチャーとして数え過ぎないようにする必要があることです。クリーチャーは次のように並んでいます: のインスタンス NBMは、1つのNinjaBearMonkeyと0の他のクリーチャーです。 がNB続かないインスタンスMは1匹のNinjaBearと0匹の他のクリーチャーです。 BMが前にないインスタンスNは、1 BearMonkeyと0他のクリーチャーです。 そうでない場合は、のインスタンスN、BおよびMそれぞれ単一忍者、クマ、サルです。 行は左から右に読み取られます。 だから、例えば、生き物のラインで NBMMBNBNBM、0の忍者、1つのクマ、1つの猿、1つのNinjaBear、0のBearMonkeys、および2つのNinjaBearMonkeyがあります。 チャレンジ 文字の文字列を取り込みプログラムや関数を書くN、Bと、M、およびプリントや生き物の6種類のそれぞれの多くは、その中に存在しているかを返します。 出力の形式は次のとおりです。 #N #B #M #NB #BM #NBM それぞれのクリーチャーが各#サインを置き換えます。6カウントはすべて、0であってもスペースで区切って表示する必要があります。ただし、それらは任意の順序である場合があります(例:#NBM最初に来る可能性があります)。 また: 入力文字列は、文字だけが含まれますN、BとM。 空の文字列が入力された場合、すべてのカウントは0です。 出力には、オプションで、単一の先頭および/または末尾のスペース、および/または単一の末尾の改行を含めることができます。 バイト単位の最短提出が勝ちです。 例 入力:NB 出力:0N 0B 0M 1NB 0BM 0NBM 入力:NBM 出力:0N …
37 code-golf  string 

16
俳句を出力する実行可能な俳句[非公開]
パズル: 次の短い3行のプログラムを作成します。 声を出して読むと、1行に5/7/5の音節がある 実行時に俳句を出力します。 正しい構造ですが、俳句以外の出力を持つプログラムの例は(Python)です: >>> for x in range(3): ... print "EXTERMINATE HUMANS" ... # I am a Dalek. ... EXTERMINATE HUMANS EXTERMINATE HUMANS EXTERMINATE HUMANS (コメントはちょっとした警戒です。) これは次のように読み上げられます。 範囲3のx 絶滅危print種を印刷! 私はダレクです。 任意の言語が受け入れられます。声を出して読むために、Waka Waka Bang Splatの!@#$%^&*()_+ようなものを認めるなど、必要に応じて記号を無視したり、声を出して発音したりできます。(のようなPerlエントリがあると確信しています)!***(!:, )(*@@@#, )_(*)!. コードまたは出力のいずれかが特におかしい場合、または特に禅の場合の追加ポイント。 編集:あなたの言語が何か面白いことをする前にボイラープレートを必要とするなら(#include <iostream>?)、ボイラープレートを無視してうれしいです。 ポール・リヒターのCommon Lisp俳句を受け入れたのは、それが私を5分間笑わせたからです。 Timwiの独創的なルールベンディング(コンパイラの出力?!)および非常に記憶に残る行についての名誉ある言及"Static void. I long for you." これでこの質問は終わりです。 …

30
単語の文字がアルファベット順かどうかを確認します
小文字/大文字の文字列[A-Za-z]を入力として受け入れ、出現する文字が一意であり、アルファベット順(小文字と大文字を無視)であるかどうかをチェックする関数/プログラムを作成します。出力は、一意であり、アルファベット順である場合は真実であり、そうでない場合は偽である必要があります。 ここにいくつかのテストケース a true abcdefGHIjklmnopqrSTUVWXyz true aa false puz true puzz false puzZ false puZ true PuZ true pzu false pzU false abcdABCD false dcba false 必要に応じて、このような単語リストのすべての単語でプログラムを実行し、興味深いものを投稿してください=)。 スコア 最も少ないバイト数が優先されます。

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