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

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

30
ASCII Sunを拡張する
(STDIN /コマンドラインを介して)負でない整数Nを取り込むプログラムを作成します。 Nが0の場合、プログラムは印刷する必要がありますO(ゼロではなく大文字です)。 Nが1の場合、プログラムは印刷する必要があります \|/ -O- /|\ Nが2の場合、プログラムは印刷する必要があります \ | / \|/ --O-- /|\ / | \ Nが3の場合、プログラムは印刷する必要があります \ | / \ | / \|/ ---O--- /|\ / | \ / | \ Nが大きい場合、このパターンはまったく同じ方法で続きます。「日」の8線のそれぞれが適切なのNで作られるべき-、|、/、または\文字。 詳細 プログラムの代わりに、整数を取る関数を書くことができます。この関数は、太陽のデザインを通常どおり印刷するか、文字列として返す必要があります。 あなたはどちらか 末尾のスペースがまったくない、または 末尾スペースが十分にあるため、パターンは完全な(2N + 1)*(2N + 1)の長方形になります。 任意またはすべてのNの出力には、オプションで末尾の改行を含めることができます。 得点 バイト単位の最短コードが優先されます。

30
ETAOIN SHRDLUゴルフ
ショートと挑戦の甘い説明: オフに基づいてETAOIN SHRDLUは、あなたの挑戦は、入力中にその頻度に基づいて、英語のアルファベットの26個の文字を出力し、任意の言語での最短のプログラムや関数を記述することです。 本当に長く、乾燥した完全な仕様: プログラム/関数は、1つ以上の大文字または小文字を含むテキスト文字列を入力として受け取り、句読点、数字、記号、およびその他の非アルファベット文字も含む場合があります。 プログラム/関数は、入力に出現しない回数も含めて、入力に出現する回数に基づいて頻度の高い順に並べた、英語のアルファベットの26の大文字のみを出力する必要があります。 編集:頻度は大文字と小文字を区別せずに計算されますが、出力は大文字でなければなりません。 2つ以上の文字が同じ頻度を持っている場合、それらは任意の順序である可能性があります。 空白などの他の出力は許可されません。 編集7/1/2014:フィードバックに基づいて、このルールを修正しています。許可される他の唯一の出力は、末尾の改行などのオプションの先頭および/または末尾の空白です。他の出力は許可されません。 未定義の動作は、文字を含まない入力に対して許可されます。 勝者は今から7日後に選ばれるので、それらの指を入力してください! 入力例: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent vitae erat velit. Mauris gravida euismod libero ut tincidunt. Phasellus elit dui, consectetur et egestas in, aliquam vitae diam. Donec eget varius ante. Vestibulum cursus diam aliquet, egestas …
43 code-golf  string 

28
速くて、安くて、良い-2つ選択してください
プログラマとして、私たちは皆、「あなたはそれを速くて良いものにすることができますが、安くはありません、あなたはそれを安くて良いものにすることができますが、それは速くありません、またはあなたはそれを速くて安いものにすることができます、それは良くないでしょう。」 この課題のために、カスタムプログラミングサービス用の架空の構成ツールを実装しています。「SELECT ANY TWO」という見出しの3つのチェックボックスのセットをレンダリングする必要があります。 SELECT ANY TWO ☐ FAST ☐ CHEAP ☐ GOOD 2つのアイテムを選択したら、3番目のアイテムを無効にする必要があります。選択した2つのアイテムのいずれかを選択解除すると、すべてのオプションを再び有効にする必要があります。別の言い方をすれば、0個または1個のアイテムが選択された場合、すべてが有効になりますが、2個のアイテムが選択された場合、3番目のアイテムは無効にする必要があります。 特別なコントロールは許可されていません。チェックボックスは、選択した言語の標準チェックボックスである必要があります。たとえば、言語に「CheckBoxList」コントロールがある場合は、使用しないでください。ほとんどのエントリはHTML / jQueryになると想像していますが、それはルールではありません。これはコードゴルフで、最短のエントリーを探しています。 勝者はとても遠い これをカテゴリに分類します。明確な勝者がいくつかいます: jQuery: テキスト「リソース」を除外した場合の100b未満のnderscore、Mr。Tenacity。また、多くの人からインスピレーションを受けたjQueryの概念を紹介するために、Mattに敬意を表するべきです。 Dyalog APL: marinus、別名Mr.Unicodeこれらすべてをどのように入力しますか?短いプログラムを作成する理由がわかります。 PHP: SuperScriptこれは、ルールの最も厳密な解釈に従って、3番目のオプションを選択解除するのではなく、実際に無効にする最短のエントリだと思います。

30
英数字のHello World [終了]
あなたの目標は、「Hello、World!」と書くことです。(引用符を除く)。これは人気コンテストですので、多くの賛成票が勝ちます。コードの長さは、タイを壊すために使用されます。 次の規則の範囲内であれば、何でも可能です。 すべての文字は文字または数字である必要があるため、文字列「abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789」でのみ文字を使用できます。 使用するすべてのコードは、インポートされたモジュール/クラス/お気に入りの言語で呼び出されるものを除き、1つのファイル内にある必要があります。 選択した言語の標準ライブラリ/フレームワークのみが許可されます(たとえば、PythonのMathモジュールは許可されますが、Numpy、Scipy、およびPygameは許可されません)。TkInterはPythonのGUIの事実上の標準であるため、許可します。 stdinからの読み取り、ファイルの読み取り、画像の表示、Webからの読み取りなど、入力は許可されません。 ルールを曲げずにJavaでそれを行う方法を見つけた場合、+ 10ブラウニーポイント。 あなたのマークに、コードを設定してください! 編集:中括弧({})、大括弧([])、および括弧(())は許可されます。これらがないと、ほとんどの言語ではほとんど不可能です。文字制限ルールも削除します。うまくいけば、これがもっと面白くなります。 EDIT ^ 2:空白も許可されます。脳が正常に機能していません、ごめんなさい。>。<

23
人生、宇宙、そしてすべてに対する答え[クローズ]
はじめに:深い思考が計算された750万年の期間での宇宙とすべての生命への答えは、解決策でした42。 75必要なものから始めて、計算に約数秒かかるプログラミング言語でプログラムを作成し、数値を出力します42。 NB 42は、スクリプトでハードコードされているだけでなく、何らかの方法で計算する必要があります(乱数、お好みの数字)。 提案されているように、あなたはsleep同等の機能を使用できません。独創的である。

7
(再)テトリスの実装
クラシックビデオゲームを再実装するという精神で、コミュニティにTetrisの最高の実装を作成してもらいたいと思います。 参考のため、テトリスの公式NESバージョンのスクリーンショット。 必要な機能 単一行のクリアよりも複数行のクリアに報いる合理的なスコアリングシステムが必要です。現在のスコアは常に表示されている必要があります。 表示される次のピースは、何らかの方法で示されなければなりません。 7つのテトロミノの分布は、ほぼ均等(つまり、疑似ランダムに選択)である必要があります。 ユーザーは、現在のピースを両方向に回転させ、降下を加速する能力を持っている必要があります。 ゲームが終了したら、ゲームが終了したことを明確に示す必要があります。 ソースコードは構造化され、理解しやすいものでなければなりません。 オプション機能 一定数のクリア後の落下速度の進行(つまり、難易度の増加)、および速度に比例したラインクリアごとのスコアの進行。 重力。ブロックを隙間に浮かせたままにすることができる「クラシック」重力を実装することを選択するか、ラインクリアによって元のテトロミノから分離されたブロックがオープンになる「フラッドフィル」重力を実装することを選択することができますギャップ。 名前が入力されたハイスコア。 ラインがクリアされた後、および/または新しいハイスコアを取得した後のアニメーション。 制限事項 使用されるライブラリ(jQuery、PyGameなど)は、自由に利用できる必要があります。 ソースコードのサイズは、空白とコメントを除いて、4096バイトを超えてはなりません。外部リソース(データファイル、画像など)がコード長に追加され、高スコアなどのために生成されるファイルは除外されます。 これはかなりarbitrary意的な制限であることを認識しています。私の主な目標は、既存の実装のコピー&ペーストをやめ、簡潔さと自己完結を促すことです。 受賞基準 このチャレンジは人気コンテストとして審査されます。つまり、最も多くの賛成票を獲得した作品が勝者として選ばれます。賛成する場合、ユーザーが上記の要件を十分に満たしていると感じるすべての投稿に賛成することをお勧めします。 勝者は、最初の有効なソリューションから2週間以内に選ばれます。さらに、この質問を受け取る投票数にほぼ比例して、賞金を勝者に付与します(10 * #votes最も近い50に切り上げます)。2週間の期間が終了した後に同点が生じた場合、競技期間は1週間延長されます。それでも同点の場合、私は最終投票権を留保します。 説明が必要な場合はお問い合わせください。最高の実装が勝つように!

30
音、任意の音を再生する[終了]
あなたのプログラムは、コンピューターに音、あらゆる音を生成させる必要があります。 最初の有効な回答から10日以内に最短のコードが優先されます。同点がある場合は、より早く提出されたものが勝ちます。 プログラムは、あまり一般的ではない合理的なパソコンで実行する必要があります。 多くの設定に応じて、ポップアップ、メッセージボックスなど(Webページなど)を開いても、音が出る場合と音が出ない場合があります。 間違ったコマンドまたは無効な文字をコンソールに入力して警告ビープ音を受け取っただけでは、コンパイラー/インタープリター/ OSがエラーまたはクラッシュでビープ音を鳴らしたとしてもカウントされません。コードは有効なプログラムでなければなりません。
43 code-golf 

30
すべての非ゼロ整数nに対してf(f(n))= -nとなるような関数fを定義します
この課題は、私が頻繁に使用するプログラミングブログに触発されました。ここで元の投稿を参照してください:プログラミングパズル チャレンジ すべての非ゼロ整数、およびが有理数のセットであるf:Q->Qような関数を定義します。f(f(n)) = -nnQ 詳細 あなたが好みの言語では、定義してください1つの機能やプログラムf、パラメータとして受け入れる1の数nを返すまたは出力1つの数をf(n)。 入力は、言語に最も自然なメカニズム(関数引数、STDINからの読み取り、コマンドライン引数、スタック位置、音声入力、ギャングサインなど)を通じて提供されます。 出力は、関数/プログラムからの戻り値、またはSTDOUTに出力される必要があります。 プログラムの状態や、関数の外部から見えるグローバルメモリ/データを利用しない関数への回答を制限したいと思いますf。たとえば、カウンターをfそのカウントの外にf置いて、何回呼び出されたかをカウントし、このカウントに基づいて否定を行うことは、誰にとってもそれほど難しくありません。決定fは、fの語彙範囲内のデータのみに依存する必要があります。 ただし、この制限は、一部のスタック指向言語またはこれらのタイプのデータまたはスコープを区別しない他のタイプの言語にはおそらく不適切です。この挑戦の精神を維持するために最善の判断をしてください。 得点 一般的なコードのゴルフ規則が適用されます。スコアはソースコードのバイト数です。 最小の答えは、ドメインと共同ドメインfが合理の部分集合であることを必要としますQ。あなたのドメインとの終域制限する場合はf整数にしZ、その後、あなたのスコアは、数の90%の天井であるバイトソースコードでは。 タイブレーク 同点の場合、以下が順番に使用されます。 ソースコードに含まれる印刷可能な非空白記号の数が最も少ない 回答提出の最も早い日時 編集 任意のサイズの数値をサポートする必要はありません。セットZをQ選択した言語のデータ型として解釈してください(通常、それぞれ整数と浮動小数点)。 ソリューションがデータ型の基礎となる構造またはビットパターンに完全に依存している場合、その制限とその使用方法を説明してください。

21
それらすべてを支配する一つの環。それらすべてを含む1つの文字列
目的:厳密に1000未満のすべての正の整数を含む文字列を出力します。 明白な答えは、それらのすべてを連結することであり、2890文字の文字列を作成します(manatworkに感謝)。この種の簡単な答えを避けるには、文字列の長さは1500文字未満でなければなりません。1200文字の文字列を出力する簡単なJavaコードを次に示します。 import org.junit.Test; import java.util.ArrayList; import java.util.List; import java.util.TreeSet; import static org.junit.Assert.assertTrue; /** * Created with IntelliJ IDEA. * User: fab * Date: 05/11/13 * Time: 09:53 * To change this template use File | Settings | File Templates. */ public class AStringToContainThemAll { @Test public void testsubStrings() throws …

2
顔認識
このタスクの目的は、特定の「イメージ」内のすべての顔を識別、クリーンアップ、およびマークアウトすることです。 顔には何がありますか? 面はZxZの正方形で、Zは1より大きい奇数の整数です。左上と右の角と中央は「O」の文字で、下の線は「\」と「/」で十分に囲みます。行の残りを埋める '_'文字。例: 3x3の顔: O O O \_/ 5x5の顔: O O O \___/ 7x7の顔: O O O \_____/ 等 入力 入力はSTDIN上にあり、同じ長さの文字列で構成されます。 出力 出力は、認識可能なすべての顔がクリアされた入力(つまり、目、鼻、口以外のすべての文字が顔の境界内から削除される)およびボックス(+、-、および|文字で囲まれた)でなければなりません。2つ以上の顔が重なる場合は、両方をクリアしてボックス化する必要がありますが、大きな顔を優先する必要があります(上に配置する必要があります)。両方の面のサイズが同じ場合、優先順位は実装者の裁量に任されます。入力に面がない場合、出力は入力と同じである必要があります。 いくつかの例 入力: ******* ******* **O*O** ***O*** **\_/** ******* ******* 出力: ******* *+---+* *|O O|* *| O |* *|\_/|* *+---+* ******* 入力(不完全な顔): ******* ******* **O*O** ******* **\_/** …

30
序数の出力(1、2、3)
(関数の戻り値として、または単にプログラムの出力として)数値に連結された正の整数の序数の接尾辞を生成したいと思います。 サンプル: 1st 2nd 3rd 4th ... 11th 12th 13th ... 20th 21st 22nd 23rd 24th など、サフィックスが最初の1〜10のサブパターンを10まで100ごとに繰り返し、最後にパターンが最初から始まります。 上記のように、入力は数値で、出力は順序文字列です。 これの最小のアルゴリズムは何ですか?

30
シェルピンスキーの三角形を描く
シェルピンスキーの三角形は、三角形を取り、高さと幅を1/2に減らし、結果の三角形のコピーを3つ作成し、各三角形が角の他の2つと接触するように配置することで作成されるフラクタルです。以下に示すように、このプロセスが結果の三角形で何度も繰り返され、シェルピンスキー三角形が生成されます。 シェルピンスキーの三角形を生成するプログラムを作成します。実際の三角形を描画するか、ランダムアルゴリズムを使用して画像を生成することにより、パターンを生成する任意の方法を使用できます。出力が上記の最後の図に似ている限り、ピクセル、ASCIIアートなど、必要なものを何でも描画できます。最も少ないキャラクターが勝ちます。

15
このFooマシンは停止しますか?
チューリングマシンが停止するかどうかを判断することは、決定できないことがよく知られていますが、それは単純なマシンでは必ずしも当てはまりません。 Fooのマシンは、テープ上の各セルは整数または停止シンボルがある有限のテープ、と機械でh、例えば 2 h 1 -1 命令ポインターは、最初のセルを指すことから始まります。 2 h 1 -1 ^ すべてのステップで、命令ポインターはそれが指す数値だけ前方に移動し、その数値を無効にします。したがって、1つのステップの後、2セルを前方に移動2し、aに変換し-2ます。 -2 h 1 -1 ^ Fooマシンは、命令ポインターが停止記号(h)を指すまでこれを続けます。したがって、このプログラムの完全な実行は次のとおりです。 2 h 1 -1 ^ -2 h 1 -1 ^ -2 h -1 -1 ^ -2 h -1 1 ^ -2 h 1 1 ^ テープも円形であるため、命令ポインターがテープの片側から外れると、反対側に移動します。例: 3 h 1 3 ^ …

3
クライントポロリグロット
Kleinは私が設計した2D言語で、12の異なるトポロジサーフェスに埋め込むことができます。Kleinプログラムは、コマンドライン引数を変更することにより、異なるサーフェスで実行できます。 トポロジは、プログラムの端から出たときに命令ポインタがどこに移動するかを決定します。エッジから移動すると、IPは一致する色のエッジにジャンプし、矢印に対する位置を維持します。つまり、ポインターは矢印の頭からの距離を保持します。 たとえば000、ほとんどの2D言語で使用されるトポロジであるトポロジでは、エッジから外れると、命令ポインタが反対側に回り込みます。 仕事 タスクは非常に簡単で、実行時に実行されるトポロジを出力するKleinプログラムを記述します。個々の数字はスペースで区切ることができます。(たとえば000、0 0 0両方とも許容される出力です)。-Aコマンドラインフラグを使用するか無視するかを選択できます。コマンドラインフラグを使用しても、バイト数はかかりません。 これはコードゴルフなので、最短の答えが勝者になります。 これは、すべてのトポロジを一度にテストするために使用できるオンラインテストドライバーです。整数モードで実行するには、を削除し-Aます。

20
シェークスピアプログラミング言語でのゴルフのヒント
シェークスピアプログラミング言語でゴルフをするための一般的なヒントは何ですか?コードゴルフの問題に適用でき、少なくともSPLに固有のアイデアを探しています(たとえば、「コメントの削除」は答えではありません)。 回答ごとに1つのヒントを投稿してください。
43 code-golf  tips 

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