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

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

24
アルファベットスープのボウルを作る
これは、アルファベットスープのボウルと呼ばれるものです。26個の大文字の英字(AZ)が周囲を形成するように時計回りに配置されたほぼ円形のascii-art形状です。 XYZABC VW DE U F T G S H RQ JI PONMLK AZという1文字の文字を取り込んで、いわば「回転」したアルファベットスープの同じボウルを出力するプログラムを作成します。つまりA、上記の例のように入力文字が表示され、残りのアルファベットが完全に循環します。時計回り。 したがって、入力の出力はA、アルファベットスープの元のボウルと同じになります。 入力の出力Bは次のようになります。 YZABCD WX EF V G U H T I SR KJ QPONML 同様に、の出力は次のHようになります。 EFGHIJ CD KL B M A N Z O YX QP WVUTSR またはのためにZ: WXYZAB UV CD T E S F R …

16
「99本のフィズ」
チャレンジ 歌詞を99本のビールに出力するプログラムを作成しますが、、「ビール」の代わりに、壁のボトル数が3の倍数の場合は「フィズ」、5の倍数の場合は「バズ」を出力します。 3の倍数と5の倍数の場合、「fizzbuzz」。壁のボトル数が3または5の倍数でない場合、通常どおり「ビール」を出力します。 歌詞 99 bottles of fizz on the wall, 99 bottles of fizz. Take one down and pass it around, 98 bottles of beer on the wall. 98 bottles of beer on the wall, 98 bottles of beer. Take one down and pass it around, 97 bottles of …

30
シュガーフリー構文
Haskellでは、リスト表記法: [a,b,c] 単なる構文上の砂糖です: a:b:c:[] そして、文字列表記法: "abc" 単なる構文上の砂糖です: ['a','b','c'] これは、文字列が次のことを意味します。 "abc" 次と同じです: 'a':'b':'c':[] 仕事 文字列を指定すると、Haskellで構文が除去されたバージョンがどのようになるかを出力する必要があります。 ルール 任意の有効な入力方法で文字列を受け取ります。入力文字列で:[]囲まれ'、で区切られたすべての文字で終わる文字列を出力する必要があります:。空の文字列が出力されます[]。 エスケープが必要な文字('改行、タブなど)を受け取らず、入力が印刷可能なASCII範囲にあると想定できます。 これは、答えのバイト数を最小限に抑えることを目的とするコードゴルフです テストケース "" -> [] "a" -> 'a':[] "Hello, World" -> 'H':'e':'l':'l':'o':',':' ':'W':'o':'r':'l':'d':[]

30
コードゴルフがコードをゴルフできれば、コードゴルフはどれくらいのコードになるでしょうか?
2つの単語を入力として使用し、人気のある英語の舌ねじれの変形を出力する関数またはプログラムを作成します。 出力は最初の単語を4回使用します どのくらいwoodでしょうwoodチャックチャックがあればwood、チャックは、チャック可能性がwood? そして2番目の単語は4回 chuck chuck木材chuckがchuck木材にできる場合、木材はどれくらいの量になるでしょうか? 残りの出力はどの入力でも同じです。 How muchウッドwould aチャックチャックif aウッドcouldチャックチャック木材? 入力と出力は、言語がテキストの文字列を処理していると合理的に認識する任意の形式にすることができます。出力は、大文字、スペース、その欠如、および疑問符の終了を含む、指定された形式で正確に指定する必要があります。オプションの末尾の改行も使用できます。 理想的には、コードは印刷可能なASCII文字を含む入力を処理します。ただし、入力を印刷可能なASCIIの妥当なサブセットに制限することは許可されています。答えでこれを示してください。もちろん、より大きな文字セットの処理は問題ありません。 入出力ペアの例: "wood", "chuck" "How much wood would a woodchuck chuck if a woodchuck could chuck wood?" "ground", "hog" "How much ground would a groundhog hog if a groundhog could hog ground?" "bar", "keep" "How much bar would …
55 code-golf  string 

15
穴の開いていないものを使用して穴の全体を書く
ASCII文字 126に10進数33からは、次のとおりです。 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ほとんどのフォントでは、これらの文字のうち25個に「穴」があることに注意してください(0よりも大きい属) #$%&04689@ABDOPQRabdegopq 他の68個の「穴なし」文字は次のとおりです。 !"'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}~ あなたの仕事は、穴の開いていない文字だけを使用して、最短のプログラムを作成し、穴の開いた文字を任意の順序で1回だけ出力することです。 スペース、タブ、改行(ラインフィードやキャリッジリターン)は空のスペースであるため、プログラムまたはその出力に表示される場合があります。それらはまだ文字数にカウントされます。他のASCII文字は使用されない可能性があります(もちろん非ASCII文字は使用されません)。 ノート 穴の開いていない文字をすべて使用する必要はなく、それぞれを1つだけ使用する必要もありません。 出力には、穴の開いていない文字を含めることはできません。 空白の言語を使用することができます。 出力はstdoutに送られるか、ファイルに送られます。入力がないはずです。 ボーナス:ただの楽しみとして、穴の開いた文字を使用してすべての穴のない文字を印刷してみてください。私はそれが既存の言語でできることには懐疑的です。

20
終了コードゴルフ
IOのこのデフォルトに触発されました。 タスク x0〜255の入力整数を指定すると、終了コードでクラッシュするプログラムを作成しますx。 制限事項 終了コードの出力(System.exit(x)、からの戻りmainなど)を直接意図したものを呼び出すことはできません。代わりに、プログラムはエラーまたはクラッシュを引き起こし、1の確率で、プログラムは入力整数で終了します。 この場合、「エラー」および「クラッシュ」という言葉は、プログラムが致命的な意図しない例外を引き起こしたことを意味します。 エラーを直接投げて、直接エラーを引き起こしてはなりません。メソッド、関数、またはその他の目的が異なる機能を果たす(つまり、読み取り専用ディレクトリへのファイル書き込みを実行しようとする)メソッドを使用して、それを引き起こす必要があります。 プログラムには少なくとも2つの終了コードが含まれている必要があります。 シグナルを使用したプロセスの終了は禁止されています。(推論はこの議論で見つかるかもしれません) 得点 プログラムのスコアは、サポートされている終了コードの数によって決定されます。コード終了はタイブレークです。サポートされる終了コードの最大数が勝ちます!

30
ASCIIダブルヘリックスを描く
stdinまたはコマンドラインを介して整数Nを取り込むプログラムを作成します。 Nが0の場合、1文字Oを標準出力に印刷する必要があります。 Nが正の場合、Nセグメント幅で描かれたこの水平 ASCIIアート二重らせんを印刷する必要があります。 Nが1の場合、出力は次のとおりです。 /\ O O \/ Nが2の場合、出力は次のとおりです。 /\ /\ O / O \/ \/ Nが3の場合、出力は次のとおりです。 /\ /\ /\ O / / O \/ \/ \/ Nが4の場合、出力は次のとおりです。 /\ /\ /\ /\ O / / / O \/ \/ \/ \/ パターンは、Nが大きい場合もまったく同じように続きます。/らせんが交差するすべての場所(O両端を除く)でスラッシュ()を使用する必要があることに注意してください。 Nが負の場合、-Nセグメントの高さで描かれたこの垂直 ASCIIアート二重らせんを印刷する必要があります。 Nが-1の場合、出力は次のとおりです。 O / \ \ …

9
コデモン、私はあなたを選ぶ!
親切な隣人のドクターツリーから、コデモンと呼ばれる3匹の魔法の生き物が渡されました。近くのカラービルの町でバトルトーナメントがあります。誰もいない最高のあなたですか? 概要 これはバトルトーナメントです。各プレイヤーは3匹のモンスターのチームをコントロールし、目的は他のチームをノックアウト(キル)することです。100ラウンドあり、勝ちと引き分けのポイントが与えられます。最もポイントの多いチームが勝ちます! モンスター コデモンは複雑な小さな生き物です。選択できる5つのタイプ(要素)、3つの統計、およびそれぞれに3つの移動スロットがあります。 タイプ 各Codémonには1つのタイプが割り当てられます。5つのタイプは、ノーマル、サイキック、ファイア、ウォーター、およびグラスです。それぞれに長所と短所があります。損傷は次のチャートに基づいています。 数字はダメージ乗数です。たとえば、水を攻撃する火には0.5の修正(半分のダメージ)がありますが、グラスを攻撃する火は2倍になります(2)。 統計 各モンスターには、戦闘能力を決定する3つの統計があります。攻撃は、与えるダメージを増加させます。防御は、受けるダメージを減らします。速度により、速度の低いユーザーの前に移動できます。 各モンスターの開始値は、各ステータスごとに50で、最大100です。モンスターを作成すると、80個の追加のステータスポイントを割り当てることができます(それぞれ)。個々の統計が100を超えることはできないことを忘れないでください。したがって、100/80 / 50、90 / 80/60、または65/65/100の分布を持つことができますが、120/50/60は違法です。違法な統計情報を持つチームは失格となります。80ポイントすべてを使用する必要はありませんが、おそらく最低50/50/50を使用すべきではありません。 HPを統計と見なすこともできますが、各Codémonには変更不可の100 HPがあります。HPがゼロになると、戦闘を続けることができなくなります。HPは各戦闘の前に100に補充されます。 動き 各モンスターは3つの戦闘の動きを知っています。選択された3つは異なる必要があるため、パンチ/パンチ/パンチはありません。 15の動きがあり、それぞれ3種類です。各タイプには、直接攻撃、効果のある弱い攻撃、および唯一の効果の移動があります。 id name type power uses usable effect 0 Punch N 20 - NFWG 1 Heal N 0 3 NFWG Heals 50 HP 2 Slow N 10 5 NFWG Enemy speed …

30
アルファベットの歌を作成する
あなたの目標は、次の形式のテキストとしてアルファベットの歌を作成することです(順番に): A is for <word starting with A> B is for <word starting with B> C is for <word starting with C> ... Z is for <word starting with Z> 出力例: A is for Apple B is for Banana C is for Carrot D is for Door E is for …

30
単語内の文字をランダム化する方法
論争の的となっている話によると、原型のドローのltteresのオドラーは、元のドローでのリストとlsat lteter macthのようなlnogのように、raednigにあまり向いていません。 だから、楽しみのために、最初と最後の文字を所定の位置に保ちながら、単語内の文字の順序をランダム化する最短の機能は何でしょうか? JavaScriptを使用してこれを確認します。すべての空白が削除され、124 130文字になりました。 function r(w) { var l=w.length-1; return l<3?w:w[0]+w.slice(1,l).split("").sort(function(){return Math.random()-.5}).join("")+w[l]; } 短いJavaScriptはいつでも歓迎します。 編集:長さチェックが追加されました。短い単語に対して関数が失敗することはありません。

30
時間を教えてください。[閉まっている]
あなたはあなたの言語の時計/時間APIが壊れていて、まったく信頼できないことを知っています。 したがって、組み込みAPIを使用してシステムの時刻/日付にアクセスすることは許可されていません。 しかし、あなたはあなたの言語が日付の計算を実行し、変数に日付/時刻の値を保持する能力が正しいことも知っています。 日付/時刻/クロックAPIを呼び出さずに現在の日付/時刻を出力するプログラムを作成します。たとえばDateTime.Now、GetDate()および同様の機能は許可されていません。 ほとんどの賛成票での答えが勝ちです。 同点の場合、より正確な回答が優先されます(つまり、最大で秒、次にミリ秒、マイクロ秒などの精度)。

30
Bashでのゴルフのヒント
Bashでゴルフをするための一般的なヒントは何ですか?私は、少なくともBashに特有のゴルフ問題全般のコーディングに適用できるアイデアを探しています(たとえば、「コメントの削除」は答えではありません)。回答ごとに1つのヒントを投稿してください。
55 code-golf  tips  bash 

21
プログラミング言語に機能を追加する[終了]
あなたの仕事は、非常に巧妙なライブラリを実装するか、入力テキストを処理したり、コンパイルプロセスを微調整することによって、プログラミング言語に機能を追加することです。 アイデア: PHPスタイルのプレゼンテーションインターリーブをCに追加します(例:)<?c printf("Hello,"); ?> world!。 C#以外の言語の1つにヌル合体演算子を追加します。 PHPにマクロを追加します。 gotoJavaScriptに追加します。 言語Xにパターンマッチングを追加します。 名前空間のサポートを持たない言語に追加します。 CをPHPのように見せます。 HaskellをPascalのように見せます。 ...(コメントセクションにアイデアを投稿してください) ルール: テーブルに何かを持ってきてください。Haskellにメタプログラミング機能を追加するために「テンプレートHaskell」と言うだけではありません。これはStackOverflowではありません。 実装全体が1画面に収まる必要があります(例をカウントしません)。 このタスク専用の外部サイトでコードをホストしないでください。 最も印象的または驚くべき機能が勝ちます。 機能を100%正しく実装することを心配しないでください。それからほど遠い!主な課題は、何をしたいのかを把握し、詳細を慎重に切り捨てることです。、計画された事業が実行可能になるまで。 例: ラムダ演算子を追加するCプログラミング言語にをます。 最初のアプローチ: さて、libgcを使用して、ラムダが上向きおよび下向きfunarg問題を解決するようにしたいと思います。私が最初にやらなければならないことは、Cプログラミング言語のパーサーを記述/検索することであり、その後、Cの型システムについてすべてを学ぶ必要があると思います。型が行く限り、それを理解する方法を理解する必要があります。型推論を実装する必要がありますか、それとも単に仮パラメータを指定どおりに入力する必要がありますか CIのこれらのクレイジーな機能がまだ知らないのはどうですか? Cでラムダを正しく実装することは大きな仕事であることは明らかです。正確さを忘れてください!簡素化、簡素化。 より良い: 上向きのfunargsをねじ込みます、誰がそれらを必要としますか?GNU Cのネストされた関数とステートメント式を使用して、トリッキーなことができるかもしれません。簡潔でハックなコードを使用して、Cでの驚くべき構文変換を披露したかったのですが、これにはパーサーも必要ありません。それは別の日を待つことができます。 結果(GCCが必要): #include <stdio.h> #include <stdlib.h> #define lambda(d,e)({d;typeof(e)f(d){return(e);};f;}) #define map(F,A)({typeof(F)f=(F);typeof(*(A))*a=(A);({int i,l=((int*)(a))[-1]; \ typeof(f(*a))*r=(void*)((char*)malloc(sizeof(int)+l*sizeof(*r))+sizeof(int)); \ ((int*)r)[-1]=l;for(i=0;i<l;i++)r[i]=f(a[i]);r;});}) #define convert_to(T) lambda(T x, x) #define print(T, …

29
わかりやすい文を生成する
問題: 読んで理解できる文を生成します。主語、動詞、目的語が含まれていなければならず、時制と複数形が一致していなければなりません。プログラムは、資格を得るために複数の異なる文を生成できる必要もあります。 ルール: 文章のハードコーディングは許可されておらず、ファイルから直接読み取ることもできません(私はあなたを見ています、無防備です) 単語リストはいくつでも持つことができます プログラムによって生成された例文または2を送信します すべての言語が受け入れられます それはだな人気コンテストなので、ほとんどのupvoted答えが勝利します

30
単語をアルファベットグリッドに合わせる
今日見たミームに触発されました。 チャレンジの説明 無限のアルファベットグリッドを考えてみましょう。 ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ... (CODEGOLFこの例では)単語を取り、それをグリッドのサブシーケンスにし、未使用の文字をスペースに置き換え、無限グリッドの最後の文字をすべて削除します。 C O DE G O L F 例 STACKEXCHANGE ST A C K E X C H A N G E ZYXWVUTSRQPONMLKJIHGFEDCBA Z Y X W V U T S R Q P O N M L K J I …

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