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

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

5
ヘビで画像を描く
左、右、または真っ直ぐにしか行けず、交差することができず、画像内のピクセルのグリッドなどの長方形のグリッドを埋める必要がある連続した2次元パスを想像してください。この種の道を蛇と呼びます。 この拡大例は、赤から始まり、紫色になるまで各ステップで色相が約2%増加する10×4グリッドの蛇行を示しています。(黒い線は、進む方向を強調するためのものです。) ゴール この人気コンテストの目標は、色が少しずつ連続的に変化する単一のヘビを使用して、特定の画像を再作成しようとするアルゴリズムを作成することです。 プログラムは、任意のサイズのトゥルーカラーイメージと、0〜1の浮動小数点値(許容誤差)を取り込む必要があります。 許容値は、各ピクセルサイズのステップで変化するスネークの色の最大量を定義します。RGBカラーキューブに配置された場合、2つのRGBカラー間の距離を、2つのRGBポイント間のユークリッド距離として定義します。距離は正規化され、最大距離は1、最小距離は0になります。 色距離擬似コード:(すべての入力値が範囲内の整数であると仮定します[0, 255];出力は正規化されます。) function ColorDistance(r1, g1, b1, r2, g2, b2) d = sqrt((r2 - r1)^2 + (g2 - g1)^2 + (b2 - b1)^2) return d / (255 * sqrt(3)) ヘビの現在の色と別の色でこの関数を呼び出した結果が、指定された許容値よりも大きい場合、ヘビはその別の色に変化しない可能性があります。 必要に応じて、異なる色距離関数を使用できます。http://en.wikipedia.org/wiki/Color_differenceにリストされているような、正確で十分に文書化されたものでなければなりません。また、内に収まるように正規化する必要があります[0, 1]。つまり、可能な最大距離は1、最小は0でなければなりません。異なる距離メトリックを使用する場合は、回答でお知らせください。 テスト画像 もちろん、出力画像(および、必要に応じて成長するヘビのアニメーション)を投稿する必要があります。これらのさまざまな画像を、さまざまな低い許容値(おそらく0.005〜0.03)を使用して投稿することをお勧めします。 (大きな波) 勝利基準 述べたように、これは人気コンテストです。最も高く投票された答えが勝ちます。入力画像の最も正確で審美的に「蛇の道」の描写を提供する回答は、投票する必要があります。 実際にヘビではない画像を悪意を持って送信していることが判明したユーザーは、永久に失格になります。 ノート 使用できるスネークパスは1つだけであり、同じピクセルに2回触れることなく画像を完全に埋める必要があります。 ヘビは画像のどこからでも開始および終了できます。 ヘビはどんな色からでも始まります。 ヘビは画像の境界内に留まる必要があります。境界は循環的ではありません。 ヘビは一度に斜めに移動したり、1ピクセル以上移動したりすることはできません。

4
長さが4乗の文字列に一致
この質問の範囲内で、文字xを任意の回数繰り返した文字列のみを考えてみましょう。 例えば: <empty> x xx xxxxxxxxxxxxxxxx (まあ、実際にはそうである必要はありませんx-文字列全体が1種類の文字を持っている限り、どんな文字でも構いません) 任意の正規表現フレーバーで正規表現を記述して、非負整数n(n> = 0)の長さがn 4であるすべての文字列に一致させます。たとえば、長さ0、1、16、81などの文字列は有効です。残りは無効です。 技術的な制限により、128より大きいnの値をテストするのは困難です。ただし、正規表現は論理的には正しく動作するはずです。 (Perlユーザーに対して)正規表現で任意のコードを実行することは許可されていないことに注意してください。その他の構文(ルックアラウンド、後方参照など)は許可されます。 問題へのアプローチについての簡単な説明も含めてください。 (自動生成された正規表現構文の説明は役に立たないので貼り付けないでください)

21
リムリックハローワールド[終了]
あなたが書く押韻プログラム の戦いに勝つしようとすると、 コンテストや投票を獲得するために それは「Hello Worldのを」計算しなければなりません そして、非常に丁寧それを印刷 最も人気のある詩が勝ちます。 要件は次のとおりです。 詩は韻AABBAの5行である必要があります 何でも印刷できますが、出力には「hello world」が含まれている必要があります(大文字/小文字は関係なく、引用符は出力に含まれません) 記号は読み上げられます。たとえば、上記の4行目は次のとおりです。 コードの下に、別のコードプレビューで、特別なシンボルの曖昧さを解消するための「読み上げ」バージョンのコードを投稿します。 詩は除外されます: デッドコード、または韻や機能を変更せずに安全に削除できる文字を含む 韻を踏む方法としてコメントを使用する(そのための正当な理由がある場合を除く) 韻のフレーズの終わりと同じ記号を使用します。 同点の場合、詩を出力するプログラムが勝ちます。まだ同点の場合、短いプログラムが勝ちます。 新しい行はカウントされません。スペース、タブ、改行は読み上げられません。たとえば、「He​​llo、world!」「二重引用符こんにちはコンマ世界感嘆符二重引用符」と読み上げられます。

12
***風景***
目的:美しい(?)ASCIIアートの風景とスカイラインを生成するプログラムを作成します。 プログラムの入力は1つだけ0123456789abcです。charsの任意の組み合わせ/繰り返しで構成される文字列です。 入力文字ごとに、次のように構成された垂直線を出力します。 . .. ... oooo ooooo OOOOOO OOOOOOO XXXXXXXX XXXXXXXXX XXXXXXXXXX 0123456789 abc代わりに、文字の後に1つの数字nが続き、下部にそれぞれ1,2または3つの穴(スペース)を持つ垂直線nを描画します。 例 クライスラービル 入力:2479742 . . ... ooo ooo OOOOO OOOOO XXXXXXX XXXXXXX XXXXXXX タージマハル 入力:0804023324554233204080 . . . . o o o oo o O O OOOO O O O O OO OOOO OO O …

29
お気に入りのフレーズをプログラムする
など、正確に5語の長さの引用またはフレーズを選択しますProgramming puzzles and code golf!。 n回追加されたときに、フレーズの最初のn + 1ワードを順番に出力するプログラムを作成します。 たとえば、プログラムコードがMYPROGあり、フレーズがであったProgramming puzzles and code golf!場合、実行しています... MYPROG 出力する必要があります Programming MYPROGMYPROG 出力する必要があります Programming puzzles MYPROGMYPROGMYPROG 出力する必要があります Programming puzzles and MYPROGMYPROGMYPROGMYPROG 出力する必要があります Programming puzzles and code MYPROGMYPROGMYPROGMYPROGMYPROG 出力する必要があります Programming puzzles and code golf! 4回を超える追加は未定義で、プログラムは何でもできます。 ルール フレーズは文法的に意味のある英語でなければなりません。大文字と句読点を適切に大文字にすることが理想的です。 フレーズの長さは任意ですが、http://www.shannonentropy.netmark.pl/で計算されるエントロピーは3.5未満ではない場合があります。 (フレーズを貼り付け、[ 計算]をクリックして最後のH(X)を探します。) フレーズには、印刷可能なASCII文字(16進数20〜7E)のみを含めることができます。コードには、印刷可能なASCIIとタブと改行のみを含めることができます。 フレーズには、正確に5つの一意の単語と4つのスペースが含まれている必要があります。すべての非スペースは単語の一部としてカウントされます。スペースは単語の境界です。それらは先頭または末尾ではない場合があります。結局、最後の単語以外は1つあるはずです。 出力には、単語間のスペースも1つ含める必要があります。各追加ステップの出力には、末尾のスペースは含まれますが、先頭のスペースは含まれません。 stdoutへの出力。入力はありません。 得点 スコアは、最初に追加されなかったプログラムのバイト単位の長さです。(例:MYPROGスコア6) …

12
ワームの寿命
条項 ワームは、非負の整数のいずれかのリストであり、その右端の(すなわち、最後の)要素が呼ばれているヘッド。headが0でない場合、ワームは、headを含む要素の最も長い連続したブロックで構成されるアクティブなセグメントを持ち、すべての要素は少なくともheadと同じ大きさです。減少活性セグメントはたとえば1だけデクリメントヘッドとアクティブなセグメントであり、ワームが3 1 2 3 2アクティブなセグメントを有し2 3 2、縮小アクティブセグメントです2 3 1。 進化のルール ワームは、次のように段階的に進化します。 ステップt(= 1、2、3、...)で 、ヘッドが0の場合:ヘッドを削除する else:アクティブセグメントを、縮小されたアクティブセグメントのt + 1連結コピーで置き換える。 事実:ワームは最終的に空のリストに進化し、そのためのステップ数はワームの存続期間です。 (詳細はThe Worm Principle、LD Beklemishevの論文に記載されています。有限リストを意味する「リスト」、およびその最後の要素を意味する「頭」の使用法は、この論文から引用されています。リストの一般的な使用法は抽象データ型であり、通常headは最初の要素を意味します。) 例(括弧内のアクティブなセグメント) ワーム:0,1 step worm 0(1) 1 0 0 0 2 0 0 3 0 4 <- lifetime = 4 ワーム:1,0 step worm 1 0 1 (1) 2 …

13
どの行が削除されたかを知らせる関数を作成します
5行を含む関数を作成します。 関数をそのまま実行すると、0が返されます。 5行のいずれかを削除して関数を実行すると、削除された行がわかります(たとえば、最後の行を削除すると5が返されます)。 簡潔さ、斬新さ、優雅さはすべて考慮に値します。最も高い投票されたソリューション(妥当な時間の後)が勝ちます。

30
すべての母音を含む単語を検索する
プログラムは、この単語リストですべての母音(a e i o u y)を含むすべての単語を見つける必要があります。これを行う簡単な方法はありますが、最短の答えを探しています。私はどんな言語でも取りますが、Bashを見たいです。 次に例を示します(大幅に改善される可能性があります)。 cat wordlist.txt | grep "a" | grep "e" | grep "i" | grep "o" | grep "u" | grep "y" あなたのスコアはコードの長さです。 単語のすべての出現をカウントするための-5ポイント。 最低スコアが勝ちます。

29
最小コードCPUストレステスター…
前書き 高いCPU負荷を発生させてプロセッサのストレステストを行うことができるユーティリティがたくさんあります。Microsoft Windowsでは、オンボードを使用して、などのcalculator.exe大きな数字を入力し、数回999999999押すとn!CPUが時間外に動作するようになります。 しかし、自分で作成しなかった場合、ソリューションには何が含まれますか? 使命 あなたの使命-あなたがそれを受け入れることを選んだ場合-は、地球上で最小のCPUストレステストツールを作成することです。 マスト… 中止されるまで100%のCPU負荷を生成する必要があります ストレステストを実行する秒数を表す数値入力を取得する必要があります ユーザーがストレステストを中止したり、プログラムを終了したりできるようにする必要があるユーザーインタラクション(キーを押す、ターミナルウィンドウを閉じるなど)を許可する必要があります。 Microsoft Windows、Mac OSx、Linuxをターゲットにする必要があります。 (ハムスターでもComodore64にストレスをかける可能性があります。したがって、現在のオペレーティングシステムをターゲットにする必要があります。) してはいけません… 期待される機能を置き換えるサードパーティのプログラムまたはツールを使用しないでください。 (提案をsystem('cpuStressThing.exe')失格のようなショートカットを提案すると。) 5月… できる生成する任意のアプローチ/アルゴリズム/機能を使用して、100%のCPU負荷を予想 できる任意のプログラミングまたはスクリプト言語を使用する (それを実行してその機能の実用的な検証を可能にする長いほど) 勝利条件 可能な限り最小のソースコードを提示してください。勝者は、上記の「必須」および「必須ではない」条件に準拠する最も小さな(サイズの)ソースコードを提示するものです。さあ、その赤ちゃんを燃やして… 編集 質問はコメントエリアで出されたので…1 CPUコアのみをターゲットにする必要があります。マルチコアソリューションの作成を期待しているわけではありません。結局のところ、これは楽しいはずです-動作しません。
28 code-golf 

6
ネパールの国旗を描きましょう
ネパールの旗(Wikipedia、Numberphile)は、他のものとは非常に異なって見えます。また、特定の描画命令もあります(Wikipediaの記事に含まれています)。ネパールの国旗を描くプログラムを作ってほしい。 ユーザーは、要求されたフラグの高さ(100〜10000ピクセル)を入力し、プログラムはネパールのフラグを出力します。フラグを描画する方法は、ASCIIアートからOpenGLまですべて選択できます。 これは人気のコンテストなので、勝者は2月1日に最も多く投票される回答になるため、コードの長さについては気にしないでください。 要件は1つだけです。Webリソースの使用は許可されていません。 楽しむ :)

17
数字を7セグメント表示パターンに変換する
任意の2つの数値A、Bが与えられます。AがスケールであるデジタルLEDパターンとして番号Bを印刷します。 入力: 1 2320451640799518 出力: _ _ _ _ _ _ _ _ _ _ _ _ _| _| _|| ||_||_ ||_ |_|| | ||_||_||_ ||_| |_ _||_ |_| | _| ||_| ||_| | | | _| ||_| 入力: 2 23 出力: __ __ | | __| __| | | …

11
StackOverflow Explodeの作成(ブックマークレット)[終了]
StackExchangeネットワーク(特にSO)で人々がイライラすることがあります。 あなたのタスクは、StackOverflowを何らかの方法で爆発/爆発/破壊させるブックマークレットを作成することです。これは、フラストレーションを分散するより良い方法を提供します。 ルール: ブックマークレットの形式である必要があります ChromeおよびFirefox(最新の安定版)で動作する必要があります jQueryはサイト上にあるため、使用できます explosionThisPage.jsなどをプルするスクリプトタグを作成しない スコアリングは、次の場合を除き、コピーして貼り付ける必要がある文字数です。 説明を含める場合は-1 各アップ投票で-5 -10 jQueryを使用しない場合 -10爆発音が鳴る場合 実際にサイトに害を及ぼす場合は+ 9e72(F5は損傷を修復するはずです) gifが邪魔な場合は削除します。

29
短い月名をより長い名前に変換する[終了]
この挑戦は終わりました!おめでとうフランク! 私は確かに、私は良い成績を得るでしょうだったが、中に電源を入れた後Flonkの私の仕事、私の教授それは私のものだったとも、それがそのように複雑になった理由を理解できなかったと信じていませんでした...私は失敗したと私のお母さんは、FacebookとのMinecraftから私を接地しますひと月ほど。分かりません。:( すべての提出をありがとう!ここでいくつかの素晴らしい答え。公式の勝者はフランクで、スコアは64です。トップ5は次のとおりです。 Flonk、64(Haskell、効率的な数学!) DigitalTrauma、40(クラウド、未来は今) primo、38(Python、そして私の個人的なお気に入り-そして、非常にプロフェッショナルです!) Sylwester、20(ラケット、ジェーンバーはそれを伸ばしている!) ilmale、16(Luaの高度に最適化されたアルゴリズム) 以下の元の課題。 私を助けてください、それは非常に緊急です!!! :( 月名の短縮バージョンを、大文字と小文字を区別せずに、より長い表現(「Dec」->「December」など)に変換する必要があります。現在、私はJavaを使用しています。月の名前は文字列であり、最初にDateオブジェクトに変換したくないのです。ただし、どの言語でも可能です。 これを行う簡単な方法はありますか?? 簡単に始めてください、私はプログラミングの初心者です! これは人気のコンテストをトローリングするコードです(最高の種類があります!)。2014年4月8日に最も賛成票を投じた回答が勝利します。

8
最短コードでポン
挑戦は簡単です。pong http://en.wikipedia.org/wiki/Pongの古典的な2人用ゲームを再現するために、可能な限り最短のコードを提供します。グラフィックと機能のレベルは、このjavascriptデモンストレーションhttp://codeincomplete.com/posts/2011/5/14/javascript_pong/demo.htmlに可能な限り近い必要があります(ただし、左側にある追加オプションなしでクリックできます)または、右下のフレーム、fpsなどの情報)。 いつものように、コードは(両方の意味で)自由言語で書かれていなければならず、Linuxで実行可能でなければなりません。また、使用するライブラリはすべて無料で、簡単に入手でき、このコンペティションの目的で作成されてはなりません(また、Pongの作業バージョンがまだ含まれていない必要があります!)。

12
1024文字のHello World [終了]
正確に1024文字で、それ以上でもそれ以下でも: 印刷する必要がありますHello World。 不要な空白を使用しないでください。 コメントを使用しないでください。 回答を投票するとき、判断は単純な難読化よりも創造性やユーモアを優先すべきです。 回答を選択する最も早い時期は、11月(2012年)の11日(日曜日)です。私はこれまでにいくつかの素晴らしいエントリを見ています。他の人々が思い付くものを見るのを待つことができません。

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