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

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

6
メタクインできますか?
他のクインパズル(より具体的には、これ)と同様に、それ自体のソースを生成するプログラムを作成します。 ここに新しい工夫があります:生成されるコードはソースと同一であってはなりません。むしろ、最初のものを作成する別のプログラムを出力する必要があります。 上記に関連する課題は、2つの言語間をジャンプすることで達成されました。これはたった1つの言語で行われると思っていますが、ソースの2つ(またはそれ以上)のバージョンは大きく異なるはずです(以下のルールを参照)。この制約により、単一文字の回答は許可されないため、最終的な提出にはもう少し考えを加える必要があります。 ルール コードは1つの言語でのみ作成する必要があります。(複数の提出物、各言語に1つは完全に受け入れられます。) 異なるコードバージョンは、構文的に明確でなければなりません。つまり、コードの抽象構文ツリーを作成する場合、少なくとも1つのノードが異なる必要があります。 供給ASTは必要ではないだろうが、あなたはあなたのプログラムのそれぞれについて、1を提供するために、傾斜して感じた場合、それは考え判断に役立ちます。 すべての構文が構文的に異なる限り、必要な数の反復を作成できます。(スコアが役立つ場合は、以下を参照してください。) 得点 最終スコアは、すべてのプログラムの平均長さをプログラムの数で割ったものになります。 例1: A(Bのソース)= 50文字 B(Aのソース)= 75文字 最終スコア= 31.25 例2: A(Bのソース)= 50文字 B(Cのソース)= 75文字 C(Aのソース)= 100文字 最終スコア= 25
25 code-golf  quine 

11
piの500桁を計算する
以下のルールを満たし、piの最初の500桁を計算するプログラムを作成します。 長さは500文字未満でなければなりません。 「pi」、「math.pi」、または同様のpi定数を含めることはできません。また、piを計算するライブラリ関数を呼び出すこともできません。 「3」、「1」、「4」の数字を連続して使用することはできません。 最新のコンピューターでは、妥当な時間(1分未満)で実行する必要があります。 最短のプログラムが勝ちます。

30
print / outputステートメント自体の行番号を出力するコードを記述します(「Hello World、from line X!」の形式で)
チャレンジ を出力するプログラムを作成しますHello World, from line X!。ここXで、は実際の印刷ステートメント自体のソースコードの行番号です。 ルール このコンテキストでは、表示する文字列を出力するステートメントの最初の行番号が必要ですstdout ソースコードを文字列(ファイルまたはクイン)として単純に検索して行番号を見つけることは避けてください いずれの場合は、追加の空白やステートメント(コードの流れを中断していない)のソースコードに追加され、それはする必要があり、実行時に反映(該当する場合コンパイルした後) 推奨事項 言語で提供されている場合、例外/スタックトレースを使用してこの目標を達成できます。異なるシステム/実装間で移植可能なコードを使用するために最善を尽くしますが、これは要件ではないことに注意してください。のような定義済みの変数を使用する__LINE__ことは、ルールで許可されていますが、推奨されません。 勝者 これは人気のあるコンテスト(2014年6月10日に終了)であり、コミュニティが最も高く投票した回答がその時点での現在の投票に基づいて勝者として宣言されます。 投票するときは、誰かの答えの創造性、それがどれほど精巧で面白いかを考えてください。使用されているプログラミング言語の難しさ/制約

30
ドミノ効果を書く
最も少ないUnicode文字を使用して、3つのパラメーターを受け入れる関数を作成します。 ドミノの総数 n影響を受けたドミノ 影響を受けるドミノの倒れる方向(0またはL左、1またはR右) ドミノを倒したら、残りのドミノを同じ方向に倒す必要があります。 あなたは、出力とドミノすべき|スタンディングドミノを表すと\し、/ドミノを表すには、それぞれ左右に倒します。 例 10, 5, 1戻る||||////// 6, 3, 0べきです\\\|||

9
コンソール/ターミナルで「Snake」ゲームを再作成する
ゲームは楽しいです このコードゴルフはとても楽しかったので、他の古典的なゲームの複雑さも似たバージョンを作らなければなりませんでした。Pythonで基本的なSpace Invadersゲームを作成する最短の方法 ただし、今回はクラシックな「Snake」ゲームを再現してみてください。小さなゲームとしてスタートし、常にピースを集めてスコアを上げていきます。ピースを集めると、あなたの「しっぽ」が大きくなり、あなたが作った道を辿ります。目的は、あなた自身の尾や壁に衝突することなく、最も長く続くことです 資格: あなた、あなたが尾を構成するキャラクター、壁、あなたが集めるピースはすべて異なるキャラクターでなければなりません スコア付きのHUDを表示します。収集するピースごとにスコアが1ポイント増加します プレイヤーが自分の尻尾や壁に衝突すると負けます ゲームの開始時はもちろん、ピースが収集された直後にランダムな領域にピースが出現します 一貫性がある限り、ゲームの速度は重要ではありません。 ブロック文字の高さは幅の2倍であるため、「セル」は2x1文字である必要があります。 方向を変更するためのキーはawsd、それぞれ、左、上、下、右である必要があります 開始方向は常に上でなければなりません 壁の端を表示する必要があります。スコアは壁に重なる場合があります 上記の基準を満たす最短のコードが優先されます。創造性のための想像上のボーナスポイント
25 code-golf  game 

18
セミコロンなしでC ++で1〜1000を印刷
このよくある質問に続いて、セミコロンを使用せずにC ++で1〜1000の数字(文字列「1〜1000」またはおかしな文字列ではなく、すべて)を印刷するソリューションを提示します。元の質問とは異なり、条件とループを使用できます。 コンパイラフラグを必要としないソリューションが推奨されます。これに反する場合は、使用しているものを記載してください。未定義の動作は許可されているため、使用しているコンパイラとバージョンを指定してください。賢い解決策が優先されます。これは最短のコードコンテストではありません。 (解決策がありますが、それ以前に同様の解決策が投稿されない場合は24時間以内に投稿します。)

30
文字列を小文字に変換(組み込みの小文字関数なし!)
このcode-golfの目標は、ユーザーがASCII文字列(印刷可能なASCII文字のみを含む)を入力できるコードを作成し、プログラムがこの文字列の小文字のバリアントを出力することです。 重要:文字列(または1文字のみ)を小文字(ToLower().NET、strtolower()PHP など)に変換する組み込み関数を使用することはできません!ただし、他のすべての組み込み関数を使用できます。 別の重要な注意:入力文字列には大文字のみが含まれていません。入力文字列は、大文字、小文字、数字、およびその他のASCII印刷可能文字の混合です。 がんばろう!

30
サイコロの結果をASCIIで描く
ASCIIで立方体型のダイスを使ってサイコロを投げた場合のランダムな結果を表示します。 $ dice の結果になるはずです ----- | | | o | | | ----- ----- |o | | | | o| ----- ----- |o | | o | | o| ----- ----- |o o| | | |o o| ----- ----- |o o| | o | |o o| ----- ----- |o o| …

30
数字のリストを並べ替える[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた3年前。 コードボウリングについて: ゴルフでは、最低スコア(最小のアプリケーション、最もエレガントななど)を取得しようとします。ボウリングでは、最高のスコアを取得しようとします。したがって、コードボーリングチャレンジの目標は、チャレンジの要件を満たしたままで、最大で最もろくでなしの、最も困難なコードを維持することです。ただし、そのためだけにソースを長くする意味はありません。追加された長さは、パディングだけでなく、デザインによるものであるように見える必要があります。 チャレンジ: 数字のリストを昇順でソートするプログラムを作成します。 例: 入力: 1、4、7、2、5 出力: 1、2、4、5、7 コード: WTFがあまりないため、これは明らかに良い答えではありません。 function doSort(array $input) { sort($input); return $input; } ルール: 実際のルールはありません。プログラムが機能する限り、それを手に入れてください! 覚えておいてください:これはゴルフではなくコードボウリングです。目的は、できる限り最悪で最もろくでなしのコードを作成することです!見栄えは良いが、実際には一見邪悪なコードに対するボーナスポイント...

21
ジミーの多様性のシーン
おそらくご存知のように、最近、ジミーの素敵なチャレンジが何度も登場しています 。これらの課題では、最愛の友人のアクロバットスキルに挑戦しました。今、私たちはあなたのために異なる挑戦をしました。今日は、さまざまなタイプのジミーを識別します! 説明 ジミーには、ドワーフ、アクロバット、ボディービルダーの3種類があります。 This is dwarf Jimmy: o This is acrobat Jimmy: /o\ This is bodybuilder Jimmy: /-o-\ これらのジミーはすべて素晴らしい友人であり、彼らはお互いに同じ立場に立っているのが好きです。あなたの仕事は、次のようなジミーのシーンが与えられた場合です: o /o\ o /-o-\/-o-\ o /o\ ライン上のドワーフ、アクロバット、およびボディービルダーの量をそれぞれ出力します。 チャレンジ 上記の例に示すように、Jimmyシーンとして合理的な形式で入力してください。 入力文字列は1行で、オプションで3種類のJimmysとオプションの空白を含める必要があります。 文字列には、必ずしもすべてのジミーの種類または空白が含まれるわけではありません。 文字列にはにない文字は含まれませんo/\ -。 ジミー品種の任意の組み合わせが可能です。これは、同じタイプまたは異なるタイプのジミーが隣り合うことができることを意味します。それを説明する必要があります。 先頭および末尾の空白はオプションであり、決して必要ではありません。プログラムでは、先頭および/または末尾の空白の有無にかかわらず文字列を考慮する必要があります。 文字列には、有効なJimmysと空白のみを含める必要があります。たとえば、---///---は、有効なジミーシーケンスではないため許可されません。 3つの数値を出力します。シーン内のドワーフ、アクロバット、ボディービルダーの数(それぞれの順序で)。 これは、スペースで区切られた整数としてコンソールに出力される場合もあれば、何らかのコンテナ(つまり、配列型)としての関数からの戻り値になる場合もあります。 出力は、どのような形式でも、この規則の上の一番上の箇条書きで述べられているように順序付けする必要があります。 標準のルールと抜け穴が適用されます。 テストケース /-o-\ /-o-\ o/o\ /-o-\ /-o-\ /-o-\ OUTPUT: 1 1 …

27
月に何日?
月のテキスト表現(大文字と小文字を区別しないフルネームまたは3文字の略語)を指定すると、その月の日数を返します。 たとえば、december、DEC、およびdecすべての31を返す必要があります。 2月には28日または29日があります。 入力が正しい形式の1つの月であると想定します。

24
並べ替えられた!Combinatorics:Subfactorialの計算
subfactorial又はrencontres番号(A000166は)置換の組合せ論に表示階乗番号と同様の番号のシーケンスです。特に、n番目の階乗!nは、n個の要素のセットの混乱の数を示します。混乱とは、同じ位置に要素が残っていない順列です。サブ階乗は、次の繰り返し関係を介して定義できます。 !n = (n-1) (!(n-1) + !(n-2)) 実際、階乗についても同じ再帰関係が成り立ちますが、下位階乗については次から始まります。 !0 = 1 !1 = 0 (階乗の場合、もちろん1!= 1になります。) あなたの仕事は計算することである!nは、与えられたn個。 ルール 階乗のように、階乗も非常に速く成長します。プログラムが入力nのみを処理でき、!nが言語のネイティブの数値型で表現できる場合は問題ありません。ただし、アルゴリズムは理論的には任意のnに対して機能する必要があります。つまり、積分結果と中間値は、言語で正確に表現できると仮定できます。定数eが有限精度で保存または計算される場合、これは定数eを除外することに注意してください。 結果は正確な整数である必要があります(特に、科学表記法で結果を近似することはできません)。 プログラムまたは関数を作成し、入力を受け取って出力を提供する標準的な方法を使用できます。 任意のプログラミング言語を使用できますが、これらの抜け穴はデフォルトでは禁止されています。 これはcode-golfであるため、バイト単位で測定された最短の有効な回答が勝ちます。 テストケース n !n 0 1 1 0 2 1 3 2 4 9 5 44 6 265 10 1334961 12 176214841 13 2290792932 14 32071101049 20 895014631192902121 …

30
数値の逆数(1 / x)
チャレンジ (浮動小数点/ 10進数)数を指定して、その逆数、つまり1を数で割った値を返します。出力は、単なる整数ではなく、浮動小数点/ 10進数でなければなりません。 詳細仕様 入力を浮動小数点/ 10進数の形式で受け取る必要があります... ...少なくとも有効数字4桁の精度が必要です(必要な場合)。 多いほど良いですが、スコアには含まれません。 許容可能な出力方法で出力する必要があります... ...数の逆数。 これは、1 / x、x⁻¹として定義できます。 少なくとも有効数字4桁の精度で出力する必要があります(必要な場合)。 入力は正または負で、絶対値は[0.0001、9999]の範囲内にあります。小数点以下4桁以上、ゼロ以外の最初の桁から4桁以上は与えられません。出力は、最初の非ゼロから4桁目まで正確である必要があります。 (ありがとう@MartinEnder) 入力例を次に示します。 0.5134 0.5 2 2.0 0.2 51.2 113.7 1.337 -2.533 -244.1 -0.1 -5 4桁を超える精度を持つ入力は決して与えられないことに注意してください。 Rubyのサンプル関数は次のとおりです。 def reciprocal(i) return 1.0 / i end ルール 受け入れられたすべての形式の出力が許可されます 禁止されている標準的な抜け穴 これはcode-golfで、バイト単位の最短回答が勝ちますが、選択されません。 明確化 入力を受け取ることはありません0。 報奨金 この課題はほとんどの言語では明らかに些細なことですが、より難解で異常な言語では楽しい課題になる可能性があります。 @DJMcMayhemは、ブレインフラックは浮動小数点数では難しいことで有名なので、最短のブレインフラックの回答に対して+150ポイントの賞金を授与します。 @ L3viathanは、最短のOIL回答に対して+150ポイントの報奨金を授与します。OILにはネイティブの浮動小数点型はなく、除算もありません。 …

1
オートバッチゴルファー
整数以外のサポートがないにもかかわらず、機能的なコマンドが驚くほど不足しているにもかかわらず、私はBATCHが大好きです。どうして?これが機能するため: SET var=SET %var% i=0 これは次のように評価されます。 SET var=SET SET i=0 素晴らしいですね。バイトを節約するため、この手法をBATCHプログラムで使用したことがあります。 あなたの挑戦は、もしあなたがそれを受け入れるなら、この方法でBATCHプログラムを「ゴルフ」することです。プログラムのSET一部に評価されるステートメントを含めることにより、入力BATCHプログラムのバイトサイズを減らし、他の方法でプログラムを変更することはできません。(たとえば、変数名をより短い名前に変更することはできません。変数の横にあるBATCHは大文字と小文字を区別しないことに注意してください。)スコアは次のように計算されます。 score = # of characters in your program + 5*(net result bytes in test cases below) 私は、テストケース用にプログラムを最適化する作業を阻止するために、テストケースを追加する権利を留保します。 この挑戦のために、あなたのSET文は、制御文字(含めることはできません|、<、>、%)または改行を。setステートメント内でコードの一部を移動する以外にコードを変更することはできません。(されていることを、あなたは交換してください、不要な空白を削除しないことEQUを==私たちは、行がで終わっていると仮定します、など)\n。 テストケース 各テストケースは個別のコードブロックにあり、各テストケースは自己完結型です。つまり、その中に与えられた内容のみを想定してゴルフを行う必要があります。(SET d=SETつまり、あるプログラムを使用している場合、そのステートメントは他のプログラムに自動的に与えられません)。各テストケースの後に、各例の結果があります。テストケースの間には行があります。 @ECHO OFF SETインクリメント= 10 :ループ IF%increment%EQU 0 GOTO end ECHO%increment% SET / A%increment%-= 1 GOTOループ :終わり 出口 …
25 string  metagolf 

3
1つの簡単なGOTOでプログラムを構築する
あなたの仕事は、プログラム全体(または少なくともその大部分)を完全に再構築しなければならないGOTOを1つだけ使用することができる最大のプログラムを構築することです。スコアは、GOTOなしでコードが再構築されたときに、場所を変更したり、新しく導入された(ステートメントを削除してもスコアに追加されない)コード内のステートメントの数としてカウントされます(他のユーザーは、エレガントなもの)。これはコードボウリングなので、最高得点が勝ちます。 注:この挑戦を試みることによって、ヴェロキラプトル攻撃に対する責任を主張しません。

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