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

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

7
円形グラフィックスとしての数字
まず、このパズルを学習して、作成するものの感触をつかみます。 あなたの挑戦は、1から100(両端を含む)の間の(10を底とする)数を与えられたパズルからのもののような円形グラフィックを出力するプログラムまたは関数を書くことです。これはこの課題に似ていますが、ローマ数字ではなくグラフィックを作成する点が異なります。次の円は、左から右に番号1〜10を表します。 パズルの答えとして、グラフィックは裏返しのローマ数字のように読む必要があります。線の太さはローマ数字記号を表し、グラフィック全体が数字を表します。参考までに、必要な線の太さは次のとおりです。各行には、その行と次の行の間に3ピクセルのパディングが必要です。 Number Roman Numeral Line Width 1 I 1px 5 V 3px 10 X 5px 50 L 7px 100 C 9px サンプルを1つか2つ投稿してください。入力が正しい、標準の抜け穴などであると仮定します。これはコードゴルフであるため、最も少ないバイトが勝ちます。同点の場合、ほとんどの票が勝ちます。がんばろう!

4
小惑星フィールドをうまくナビゲートする
前書き 誰もが小惑星フィールドをうまくナビゲートする可能性は約3,720対1であることを知っています。しかし、あなたの警告にもかかわらず、ハン・ソロはまだ彼の運を試してみようとしています。 人工生命を恐れて、船の固有の方言(お好みのCode Golf言語)で、小惑星野ASCII迷路をどの経路で進むかを決定する小惑星回避プログラムをコーディングすることにします。 入力 ミレニアムファルコンには、これに似たデータを提供する小惑星フィールドマッピングプログラムがあります。 | ##### ######### | | ###### # ### # | | # # # # #### # | @ ## #### |# # # ### ## | |## ## #### # # | |#### ##### # ## | 一番上の行はファルコンの左、一番下の行はファルコンの右、そして列は船の前にあるものを表します。 それぞれ#が障害です。 各スペースは、船が飛行できる空のスペースです。 入力の高さは常に7文字です。これは、小惑星のマッピング幅の制限です。 入力は常に32文字です(フィールド自体は30文字、開始と終了の制限は2文字)。これは、小惑星のマッピング深度の制限です。垂直バー|は、マッピングの開始と終了を示します。 @ファルコンです。入力の中央の行(4行目)と最初の列に常にあります。 …
36 code-golf  maze 

10
私がしなければならない数学の問題をいくつ教えてください!
先生はいつも宿題の中で最も複雑な数学の問題を教えてくれます。のような:pg. 546: 17-19, 22, 26, pg. 548: 35-67 odd, 79, 80-86 even。そして、宿題のためにどれくらいの時間を割くかを前もって知りたいのですが、それをすべて把握する必要はありません。それが私のためにプログラムするあなたの仕事の理由です。 仕様書 args、stdioなどとして完了しなければならない問題の詳細を示す文字列を取得します。 それらはコンマで区切られます(おそらくcomma-space区切られます) 数だけの形式で単一の問題が含まれます(例79) フォーム内の範囲17-18(ここでも、オプションのスペースを処理する必要があります) 範囲には両端が含まれます オプションで、範囲の末尾にoddまたはevenを付ける必要があります。 一連の範囲/ページの先頭に、フォームのページ番号が追加されpg. 545:ます。これもオプションのスペースを処理する必要があります。すべてのページで問題を解決する必要があるため、これらは無視しても問題ありません。 テキストは大文字でも小文字でもかまいませんが、両方ではありません。 宿題のためにやらなければならない問題の数を返す、標準出力など。 これはcode-golfなので、バイト単位の最短コードが勝ちです! テストケース pg. 546: 17-19, 22, 26, pg. 548: 35-67 odd, 79, 80-86 even -> 27 pg. 34: 1 -> 1 PG. 565: 2-5,PG.345:7 -> 5 pg. …

30
カタロニア語番号
の カタロニア番号(OEISは)多くの場合、組み合わせ論に登場する自然数の列です。 n番目のカタロニア語番号は、Dyckの単語の数です(括弧または括弧のようなバランスの取れた文字列 [[][]]です;形式的には、2文字aとbを使用して、先頭から始まる部分文字列の数がnumber以上の文字列として定義されます長さ2nで、文字列全体が同じ数のaおよびb文字を持ちます。n番目のカタロニア語番号(n> = 0の場合)も、次のように明示的に定義されます。 n = 0から始めて、最初の20個のカタロニア語番号は次のとおりです。 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190... チャレンジ STDINまたは受け入れ可能な代替手段を介して負でない整数nを取り、n番目のカタロニア語番号を出力する完全なプログラムまたは関数を作成します。プログラムは、入力0〜19に対して少なくとも機能する必要があります。 I / O 入力 プログラムは、STDIN、関数の引数、またはこのメタ投稿ごとに受け入れ可能な代替のいずれかから入力を受け取る必要があります。入力した数値は、標準の10進数表現、単項表現、またはバイトとして読み取ることができます。 言語がSTDINまたは受け入れ可能な代替から入力を取得できない場合(のみ)、ハードコーディングされた変数またはプログラム内の適切な同等物から入力を取得できます。 出力 プログラムは、n番目のカタロニア語番号をSTDOUT、関数結果、またはこのメタ投稿ごとに受け入れ可能な代替物に出力する必要があります。標準の10進数表現、単項表現、またはバイトでカタロニア語番号を出力できます。 出力は適切なカタロニア語番号で構成され、オプションで1つ以上の改行が続きます。抑制できない言語のインタープリターの一定の出力(挨拶、ANSIカラーコード、インデントなど)を除き、他の出力は生成できません。 これは、最短の言語を見つけることではありません。これは、すべての言語で最短のプログラムを見つけることです。したがって、私は答えを受け入れません。 この課題では、実装されている限り、課題より新しい言語は受け入れられます。以前に未実装の言語用にこのインタープリターを自分で作成することは許可されています(推奨されます)。それ以外は、コードゴルフのすべての標準ルールに従わなければなりません。ほとんどの言語での提出は、適切な既存のエンコーディング(通常はUTF-8)でバイト単位でスコア付けされます。また、n番目のカタロニア語番号を計算するための組み込み関数が許可されていることに注意してください。 カタログ この投稿の下部にあるスタックスニペットは、a)言語ごとの最短ソリューションのリストとして、b)全体的なリーダーボードとして、回答からカタログを生成します。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 ## Language Name, N bytes …

9
正しい順序でキャンディーを食べる
キャンディーを食べるということになると、私は一般的な素人よりも高い基準を守っています。「それを混ぜる」と「最後のベストを保存する」の間に微妙なバランスがあります。 このチャレンジでは、各文字がキャンディーを表す文字列が与えられます。異なる文字(大文字と小文字が区別されます)は、異なる種類のキャンディーを表します。次に、プログラムは、以下の手順に基づいて、キャンディーの正しい消費順序を決定する必要があります。このタスクを実行するために、完全なプログラム(STDIN / STDOUT)または名前付き関数のいずれかを作成できます。 私のキャンディスタッシュがであるとしましょうoroybgrbbyrorypoprr。最初に、キャンディーを同じタイプの山にソートし、上部にあるより多くの量で、より低いASCII文字値をタイブレーカーとして使用します。 rrrrrr oooo bbb yyy pp g 次に、キャンディーの各行を間隔を空けて等間隔に配置します。たとえば、キャンディーが3つある場合、1つは道の3分の1、2分の3、最後に配置されます。 .r.r.r.r.r.r ..o..o..o..o ...b...b...b ...y...y...y .....p.....p ...........g 次に、各列を下って最終的なキャンディの注文を作成しますrorbyroprbyorrobypg。 入力 キャンディスタッシュを含む文字列。上記の例の入力は次のとおりです。 oroybgrbbyrorypoprr 出力 キャンディーを含む文字列が正しい消費順序に再編成されました。 rorbyroprbyorrobypg 得点 これはコードゴルフです。バイト単位の最短回答が優先されます。標準のコードゴルフ規則が適用されます。

1
ドミノサーキット
スコアボード VisualMelonの提出物の未加工のスコア(ドミノカウント)は次のとおりです。回答が増えたら、これらを以下に説明する正規化されたスコアに変換します。既存のソリューションは、ベンチマークのすべての回路を解決できるようになりました。 Author Circuit: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- VisualMelon 39 45 75 61 307 …

24
ASCIIの再マッピング
チャレンジ ASCII文字を並べ替えるプログラムを作成してください! すべての印刷可能なASCII文字を1回だけ含む単一の文字列を出力する必要があります。この文字列の最初の文字には値1が割り当てられ、2番目の文字には値2などが割り当てられます。 通常、2つの文字が隣り合っている場合(文字コードの違いが1である場合)、出力ではそれらが隣り合って表示されない場合があります。 得点 スコアは、プログラムの出力によって決定されるように、ソースコード内のすべての文字の値の合計になります。 確認セクションを参照して、スコアを計算してください。 最低スコアが勝ちます! ルール 「Printable ASCII」は、32〜126の文字コードを含むように定義されています。 完全なプログラムまたは関数を作成できます。 コードには、印刷可能なASCII文字と改行のみを含めることができます。 あなたのプログラムは何も入力しないかもしれません。 改行の値は常に1です。プログラムの出力には改行を含めないでください。 検証 このスタックスニペットを使用して、コードの出力が有効であることを確認し、コードのスコアを計算します! var result = document.getElementById("result");document.getElementById("submit").onclick = function() {var code = document.getElementById("code").value;var output = document.getElementById("output").value;var values = [];for (var i = 0; i < output.length; i++) {var c = output[i];var v = c.charCodeAt();if (v < …

3
静物(または感動的なもの)を描く-Game of Lifeで画像を描く
入力としてグレースケール画像が与えられます。あなたの仕事は、ConwayのGame of Lifeで、入力画像にできるだけ近い静的またはループパターンを見つけることです。 出力は、静止画像またはgifに変換可能な何らかの形式のループアニメーションのいずれかです。出力画像の寸法は入力と同じである必要があり、黒と白のピクセルのみが含まれている必要があります。 出力がアニメーションの場合、各フレームはGame of Lifeルールに従って前のフレームから生成され、ピクセルごとに1つのセルが必要です。アニメーションはループする必要があり、最初のフレームは同じルールによって最後のフレームから生成されます。 出力が静止画像の場合、ゲームのルールを適用して同じ画像を生成する必要があります。これは、「生きている」セルが3つ以上または2つ未満の「生きている」近隣を持つことはできず、「死んだ」セルが正確に3つの「生きている」近隣を持つことはできないことを意味します。(これは基本的に上記のアニメーションと同じですが、フレームは1つだけです。) 追加の規則と説明: あなた(またはあなたのプログラム)は、「生きている」セルを白で表し、「死んだ」セルを黒で表すか、その逆を表すかを選択できます。つまり、これをハードコーディングするか、プログラムで入力画像に基づいて選択できます。(ただし、アニメーションのすべてのフレームで同じである必要があります。) 境界条件は周期的である必要があります。つまり、右端の列のセルには左端の列に隣接セルがあります アニメーションの場合、フレームレートはユーザー(またはプログラム)に依存します。グレーのピクセルを近似するには、高速のフレームレートがうまく機能すると思います。 回答に埋め込まれた結果を少なくとも2つ投稿してください。以下のすべての入力画像から結果を投稿できる場合は、望ましいです。 十分に小さいファイルサイズでgifを実現するためにこれが必要な場合は、テストイメージを縮小してもかまいません。より大きなファイルにもリンクしたい場合は、それで問題ありません。自慢したい場合は、高解像度のソースファイルを自由に見つけてください。 コード内の制御可能なパラメーターが多すぎないようにしてください。プログラムの入力のみが画像であることが最善です。例外は、ファイルサイズに影響するため、アニメーションフレームの数を制御するためのパラメーターが必要な場合です。 外部プログラムを使用して、入出力ファイルの形式を変更したり、必要に応じて出力フレームをアニメーションにコンパイルしたりできます。(これは、ファイル形式処理の課題ではありません。) これは人気コンテストなので、投票数が最も多い答えが勝ちです。 ほとんどがこのサイトの他の質問から取られたテスト画像の選択です。(後で「ボーナス」入力画像を追加する可能性があります。) 物事を始めるために、Python 2の非常に馬鹿げた参照の試みがあります。これは、4つの正方形のブロックがGame of Lifeの安定した構造であるという事実を利用しています。入力画像を4倍に再スケーリングし、対応するピクセルが0.5より暗い場合はブロックを描画します。 from skimage import io from skimage import transform import sys img = io.imread(sys.argv[1],as_grey=True) source = transform.resize(img, [i/4 for i in img.shape]) img[:]=1 for x in xrange(source.shape[0]): for y …

18
ピタゴラスの定理を視覚的に説明する
ピタゴラスの定理の一般的な視覚的説明は次のとおりです。 正方形はa + b = c、ピタゴラスの定理が言うように、辺の長さの2乗との面積を表すことを意図しています。 この部分はあなたが見せなければならないものです。 あなたのタスク 入力として2つの整数を取得します。これは、辺aとb直角三角形(例:)を表すためのもの3, 4です。 その後、長さのうちの正方形を作るだろうa、bとcのうちの#文字。たとえば、ここは3です。 ### ### ### 次に、これらを特定のピタゴラスのトリプレットを説明する数式にフォーマットします。 ##### #### ##### ### #### ##### ### #### ##### ### + #### = ##### =と+記号の両側にスペースがあり、すべてが下にあることに注意してください。 あなたは、の値を取得することはありませんaとbのメイクというc非整数。 これはコードゴルフなので、バイト単位の最短コードが勝ちです! テストケース (時間ができたらもっと来る、これらは手で作るのは本当に難しい) 3, 4 ##### #### ##### ### #### ##### ### #### ##### ### + #### = ##### …


9
レーシングカーをプログラムする
@kuroinekoへのお祝い。ガントレットトラックで優れたスピード(672ムーブ)の賞金を獲得します。 リーダー:* Nimiが軽量2129を獲得。他のエントリーは大きくなりましたが、かなりのスピードを示しています。 *リーダーは後のエントリにより変更される場合があります。 あなたの仕事は、レーシングカーを高速で運転できる小さなプログラムを書くことです。 ルール プログラムはトラックの画像を読み取ります。車は黄色のピクセルで起動できますが、黒のピクセルを通過して終了する必要があります。あなたの車のパスは、灰色((c、c、c)で、30 <= c <= 220)トラック上にのみなければなりません。 あなたの車は、整数vxとvy((0,0)で始まる)で構成される速度vで各ターンごとに直線で移動します。各ターンの開始時に、プログラムはvxとvyを次のように変更できます。 abs(vx2-vx1) + abs(vy2-vy1) <= 15 更新:最大加速度を15に増やしました。 プログラムは、現在の場所から(場所+ v)までの直線を白でプロットし、先頭に青い点を付けます。この線の下のピクセルが黒の場合、レースを終了しています。それ以外の場合、その行の下のすべてのピクセルが灰色または黄色の場合、次のターンに進むことができます。 プログラムは、白と青のパスを追加したトラックイメージを出力する必要があります。 追加の出力(2015-01-15を追加): 勝利またはボーナスを競いたい場合、プログラムはそれぞれシティまたはガントレットのポイントのリスト(青い点)を出力する必要があります。回答にポイントのリストを含めます(検証用)。ポイントは次のようになります(x0,y0), (x1,y1), ... (xn,yn)。'\n'ページ上のデータに合わせて、文字を含む空白を自由に使用できます。 サードパーティの画像の読み取りと書き込み、線の描画、ピクセルアクセスライブラリを使用できます。パス検索ライブラリを使用することはできません。必要に応じて、必要に応じてPNG画像を他のグラフィック形式(GIF、JPG、BMPなど)に変換できます。 運転するいくつかのトラック 開始する簡単なトラック: レーストラック: 障害物コース: 都市: ナイトメアトラック:ガントレット(他の人が簡単すぎる場合) 得点 スコアは、シティトラックでの結果に基づきます。ポイントは、バイト単位でのプログラムの長さに、レーシングカーがフィニッシュするのにかかった各ターンの10ポイントを加えたものに等しくなります。最低スコアが勝ちます。回答にシティトラックランの画像を含めてください-運転スタイルを確認してください。 次の形式で回答のタイトルを使用してください。 <Racing Driver or Team Name> <Language> <Score> 例:Slowpoke Perl 5329 プログラムは、上記の規則に従って、任意のトラックイメージを走行できる必要があります。テストトラックの最適なパスまたはパラメータをハードコードしてはなりません。他の標準的な抜け穴が適用されます。 同様の課題 これは、Martin:To Vectoryによって提起されたものに似たパズルです。–ベクターレーシンググランプリ。このパズルにはいくつかの違いがあります。 …

28
JavaはJavaScriptに対して、Carはカーペットに対して
JavaScriptとJavaの違いは何ですか?に対するGreg Hewgillの答えに触発されたタイトルの盗難 前書き JavaとJavaScriptはプログラマーの間で一般的に使用される言語であり、現在Stack Overflowで最も人気のあるタグです。しかし、よく知られているように、似たような名前は別として、この2つに共通点はほとんどありません。 プログラミングの最も悪名高い討論の1つに敬意を表し、タグ検索の最近の不満に触発されて、次のことを提案します。 チャレンジ 入力として文字列を受け取るプログラムを作成します。car文字列が「Java」で始まり、「JavaScript」が含まれていない場合に返されます。そうでなければ、を返しcarpetます。 入力と出力の例 車: java javafx javabeans java-stream java-script java-8 java.util.scanner java-avascript JAVA-SCRIPTING javacarpet カーペット: javascript javascript-events facebook-javascript-sdk javajavascript jquery python rx-java java-api-for-javascript not-java JAVASCRIPTING ノート 入力マッチングでは大文字と小文字を区別しないでください 出力の可能性のみcarまたはcarpet 回答がJava、JavaScript、またはRegexを使用している場合の想像上のボーナスポイント 別のタイトル:JavaとJavaScript、そしてハムとハムスター

5
文字、数字、記号、スペース、繰り返し
定期的に遭遇するASCII文字は97個あります。それらは4つのカテゴリに分類されます。 レター(合計52) ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 数字または数字(合計10) 0123456789 記号と句読点(合計32) !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 空白(合計3) スペース 、タブ\t、および改行\n。(改行バリアント\r\nは1文字として扱います。) 簡潔にするために、これらのカテゴリをそれぞれL、N、S、Wと呼びます。 LNSW希望する文字の24の順列のいずれかを選択し、無制限に繰り返して自分用のプログラミングテンプレートを作成します。 たとえば、順列を選択するとNLWS、プログラミングテンプレートは次のようになります。 NLWSNLWSNLWSNLWSNLWS... このテンプレートに基づいてプログラムまたは関数を作成する必要があります。 すべてLが任意の文字(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz)に置き換えられます。 すべてNが任意の数字(0123456789)に置き換えられます。 すべてSが任意の記号(!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)に置き換えられます。 すべてWが空白文字( \t\n)に置き換えられます。 基本的に、コードはパターンに従う必要があります <letter><number><symbol><whitespace><letter><number><symbol><whitespace>... 質問のタイトルが示すように、必要に応じて、4つの文字カテゴリの異なる順序を選択できます。 ご了承ください: カテゴリの置換には異なる文字を使用できます。例えば、9a ^8B\t~7c\n]正当テンプレートに準拠NLWSNLWSNLWS(\tおよび\nそのリテラル文字になります)。 コード長の制限はありません。例えば1A +2B -and 1A +2Bおよび1A and 1allはテンプレートに適合しNLWSNLWSNLWS...ます。 テンプレートに準拠したコードは、拡張されていないASCII文字を1つ受け取り、上記の分類のメンバーであるカテゴリに基づいて0〜4の数値を出力する必要があります。つまり1、入力が文字の2場合、数字の3場合、記号の4場合、空白の場合に出力されます。出力0の入力は、これらのどれも(ない場合は制御文字)。 入力の場合、代わりに、入力ASCII文字のコードを表す0から127までの数字を入力できます。 コードに必要な入力(charコードとして)と出力のペアは、次のとおりです。 in out 0 0 1 0 2 0 3 0 4 0 5 0 …

5
Zzub Zzif(リバースフィズバズ)
すべての数字が削除されたフィズバズ出力のスニペットが与えられた場合、フィズバズスニペットが正しいように、可能な限り低い値で正しい数字を入力します。この課題の目的のために、fizzそしてbuzzそれぞれ、3と5の彼らの通常の値を持っています。 入力がfizz、buzzおよび空の行の無効なシーケンスである場合、代わりにzzubzzif(改行の有無にかかわらず)出力します。 入力と出力は、改行で区切られた行、または言語にとって便利な文字列の配列形式である場合があります。 大文字を使用すると、無視したり、好きなことをしたりできます。 :あなたは、これらの1つ以上を処理するために選択する必要がありますfizzbuzz、fizz buzz、buzz fizz、などがありますが、これらのフォーマットの少なくとも一つを選択する必要があります。 すべての入力は、の一連のシーケンスfizz、buzzおよび空の行であると想定できます。 例 入力: フィズ 出力: 2 fizz 4 入力: バズ フィズ 出力: buzz fizz 7 入力: フィズバズ 出力: 13 14 fizzbuzz 16 17 入力: 出力: 1 入力: フィズ フィズ 出力: zzubzzif 入力: 出力: zzubzzif

8
自己コンパイルコンパイラ[終了]
これは、私がしばらく前に聞いたコンパイラに関する話に基づいていますが、残念ながら、いつ、どこで思い出すことができません。 自分自身をコンパイルできる言語で最短のコンパイラを作成します。「コンパイルプログラム」命令を持たない合理的なISA(68K、x86、MIPS、ARM、SPARC、IBM BALなど)をターゲットにします(VAXの一部のバージョンが除外される場合があります)。からソースプログラムを読み取りstdin、生成されたコードをに出力しstdoutます。I / Oおよび文字列処理に標準Cライブラリを使用できます(例:)_printf。言語全体をコンパイルする必要はありません。コンパイラを含むサブセットのみをコンパイルする必要があります(つまり、アセンブリ言語のクインを印刷するだけで、印象的ですが、ソリューションとしてカウントされません)。

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