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

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

9
Golf a Venn Diagramジェネレーター
Golf a Venn Diagramジェネレーター ジョンベンの180歳の誕生日を適切に祝うために、今日のタスクはベン図を出力するプログラムを作成することです! 入力: Nダイアグラムに表示される数値の範囲を定義する正の整数(ゼロからN)および3つの正の整数のセット。 出力: 0からすべての整数を示す3セットベン図N図の適切な領域にそれらを表示することにより、そして集合の関係を、これと同じ。 ノート を使用してstdin(または言語に相当するものは何でも)値を取得します。 セットおよびN(コンマ、スラッシュ、または最適なもので区切られた)の入力形式を定義できます。 どのセットにも表示されないが、指定された範囲内にある数字は、領域内ではなく、ダイアグラム上に表示される必要があります。 セットに名前を付ける必要はありません。 出力は、図面またはascii-artです。 図は、境界が明確に区別できる限り、どのような形状でもかまいません(たとえば、ASCIIアートを選択した場合、境界を越えるために+(または同様の)を使用することが不可欠です)。 領域はシェーディングする必要があるかもしれませんが、そうする必要はありません。 ベン図を生成する組み込み関数またはサードパーティライブラリは許可されません。 標準的な抜け穴が適用されます。 これはcode-golfであるため、バイト単位の最短コードが優先されます。

30
リストのモード(最も一般的な要素)
スニペットを記述して、正の整数のリストのモード(最も一般的な数)を計算します。 たとえば、モード d = [4,3,1,0,6,1,6,4,4,0,3,1,7,7,3,4,1,1,2,8] で1、それは5倍の最大値を発生するので、。 リストは、などの変数に格納されd、一意のモードを持っていると想定できます。 例:Python、49 max(((i,d.count(i))for i in set(d)), key=lambda x:x[1]) これはcode-golfであるため、バイト単位の最短ソリューションが優先されます。

12
黄金比を印刷する
これは楽しかった!しかし、たった3桁で、楽しみはすぐに終わりました。この課題は似ていますが、楽しみを続けていきます。 チャレンジ 黄金比 φを可能な限り多く印刷します。黄金比は、φ=(φ+ 1)/φを満たす数として定義され、最初の100桁は次の式で与えられます。 1.6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911375 ... この課題は、φを計算することではありません!2回行う方法を使用せずに、できるだけ多くの桁を印刷することです。可能な限り多くの創造的な方法で数字を取得してください! 制限事項 それ自体では、φの数字を印刷するのは少し単純すぎるので、ここに規則があります。 番号を左から右に順番に作成する必要があります。1つずつ印刷するか、左から右に文字列を作成して最後に印刷します。数字文字の配列を生成して結合することもできます。順番どおりに行う限り、印刷してください。次の規則では、「印刷」および「出力」はこれらのプロセスのいずれかを指す場合があります(たとえば、文字列を作成し、その文字列に既に印刷済み1.6としてカウント1.6される場合)。 コードの場合、1桁あたり15文字の予算があります。期間はその予算にカウントされませんが、同様に印刷する必要があります。制限はコードの合計サイズのみであることに注意してください。平均でこれ以上使用しない限り、任意の数字に15文字以上を使用できます。実際、キャラクターに「借金」を作り、後で「支払う」ことができます。たとえば、印刷1.618するには60文字が必要です。 標準ライブラリのインクルード/インポートは、コードサイズにカウントされません。しかし、これらのインクルードエイリアスを無料で提供することはできません! 現在生成している数字や、すでに印刷した数字は使用しないでください。たとえば1、ソースコードの最初の桁であるため、ソースコードのどこにも表示されない場合があります。8in を出力するコード1.618は、数字の一部またはすべてを使用できますが、のいずれも使用でき[0234579]ません[168]。この目的のために、1桁に相当するすべてのリテラルはその数字として扱われます。だからあなたの言語を表現することができる場合9として、'\t'あなたが使用することができませんでしつまりどこでも、使用することを許可されていない9代わりに。 一度に複数の数字を生成しないでください。コードを1桁ずつ生成するチャンクに明確に分割することができるはずです。 組み込み関数、数学/ブール/ビット単位/文字列演算子、以前の数字を生成したコードで使用した変数または定数を参照しないでください。例外は、整数から文字列への変換、文字列の連結、および1桁ごとに必要な印刷機能です。ビルトインをどの名前で参照するかは問題ではないことに注意してください。ビルトインPIを両方にエイリアスするからであり、一度だけ使用するわけではpありqません。同様に、あなたはしている、それは文字列のように、二つの異なる組み込みコマンドを参照している場合は二回名前を使用することができ、配列。pqlengthlength プログラミング言語に関数がない場合は、同等のものが何であるかについて最善の判断を下してください。たとえば、bashスクリプトの場合、他のプログラムを呼び出すには、関数に課せられた規則に従う必要があります 提出物は単一の言語で書かれている必要があります。そのため、他の言語のビルトインにもアクセスするために他の言語のインタープリターを実行する必要はありません。 含意 以下の点はすべて上記のルールによって暗示されていますが、サンドボックスですでに出てくる質問を避けるためにここにそれらを追加します。 '\b'その間にいくつかのバックスペース(通常は)を印刷することで、出力の一部を上書きすることはできません。 複数の数字を生成/出力するループは禁止されています。(ただし、1桁を計算するループは問題ありません。) 難読化されたバージョンを使用し(1 + √5)/2たり、フィボナッチ数を分割して1桁以上を取得することは禁止されています。 これらの変数参照は数字を生成しないため、10桁を事前に計算して10変数に格納し、それらを参照することはできません-変数を埋めるコードはそうするため、これはルール6の違反です。 実際、以前の(または中間結果)を再利用することはできません。これは、生成されるコードが2桁で共有されるためです。 それ以外の場合は、数字を生成するためにあらゆる手段(純粋に数学的な必要はありません)を使用できます。(そして、あなたはすべきです!) 実際、標準ライブラリを使用して多くの異なる場所から正しい数字を引き出すことができれば、何も計算する必要はありません。 1桁の数字を生成するときに演算子を複数回使用することがあるため、2+2+2最初の数字を生成するのは公正なゲームです6(ただし、最短ではありません)。 あなたはあり、彼らがビルトインされていないため、定数、できるだけ頻繁にあなたが望むようリテラルを使用しています。したがって、印刷する必要がない限り、コード内で必要なだけs 5を使用でき5ます。 出力をハードコーディングすることはできません。出力する数字を使用する必要があるためです。 要するに、数字を2回生成する方法を使用しないでください。また、現在出力している数字や既に印刷されている数字を使用しないでください。 (準)無限のスコアを得ることができる抜け穴を見つけた場合は、それを悪用して挑戦を台無しにしないでください、しかし、私に知らせてください。 得点 最高桁数を正しく印刷するプログラムが勝ちます。同点の場合、短いコードは同点を破ります。 コードのどの部分がどの桁を生成するかを特定するコメントなしのバージョンを追加してください。 PS:誰かが上記の100桁に勝ったら、ここにもう少しあります。

7
EmacsとVimのどちらが良いですか?(Googleの戦い)
挨拶、高貴なゴルファー。今日、あなたは最も古くて際立った議論を解決します-EmacsまたはVim? あなたの課題は、入力として2つの検索用語を使用し、それらの用語のうち、Google検索結果が最も多いものを出力することです。(これは明らかに完全に公平です。どういう意味ですか、偏っていますか?) 入力と出力の例を次に示します。 入力:emacsおよびvim 出力:(vimコメントにまったくフレームウォーを作成しない) 入力:googleおよびmicrosoft 出力:google 入力:code golf stack exchangeおよびcode review stack exchange 出力:(code golf stack exchangeええ!) そして、楽しみのために(そしてあなたのソリューションをテストするために)いくつかのエッジケースがあります: 入力:About 1,000,000 resultsおよびAbout 100,000 results 出力:About 100,000 results 入力:This will autocotrectおよびAnother testcase 出力:(Another testcase自動修正を考慮しない場合、最初のものが勝ちます) 次のテストケースで#は、検索語の記号を最初に削除する必要があります。特定の量の結果を持つ用語に依存しており、ここに用語を投稿するとそれが台無しになるためです。 入力:Thissear#chter#mhasno#resultsおよびAnother testcase 出力:(Another testcase結果がゼロの場合のテストのみ) 入力:"These exact wo#rds do#n't exi#st# on the Internet"およびAnother testcase 出力:(Another testcaseテスト") 入力:Abo#ut …

30
CodeGolf-頭または尾
説明書 未知の入力文字列を考えるとiいずれかの値を持つ頭や尾、復帰1のためのヘッドまたは-1のための尾最短のコードとを。 ゴルフされていないコード(55b)のサンプル: if(i == "heads"){ print(1); }else{ print(-1); } サンプルのゴルフコード(16b): print("t">i||-1) この例ではJavascriptが使用されましたが、これは要件ではありません。ほとんどのユーザーにとって単純すぎる場合は申し訳ありませんが、改善できます。
26 code-golf  string 

4
ミニチュアフェイク
アマチュアの写真家なら誰でも言うことができるように、極端な後処理は常に適切です。そのような手法の1つは「ミニチュアフェイク」と呼ばれます。 その目的は、画像をそれ自体の小型化された玩具バージョンの写真のように見せることです。これは、被写体の高さのばらつきが低く、地面に対して中程度/高い角度から撮影された写真に最適ですが、他の画像にさまざまな効果で適用できます。 課題:写真を撮り、それにミニチュア偽造アルゴリズムを適用します。これを行うには多くの方法がありますが、この課題の目的のために要約すると、次のようになります。 選択的なぼかし 浅い被写界深度をシミュレートするには、画像の一部をぼかす必要があります。これは通常、線形であれ形状であれ、何らかの勾配に沿って行われます。好きなぼかし/グラデーションアルゴリズムを選択しますが、画像の15〜85%に「認識可能な」ぼかしが必要です。 彩度ブースト 色を上げて、手で描いたように見えるようにします。入力と比較した場合、出力の平均飽和レベルは+ 5%を超える必要があります。(HSV飽和を使用) コントラストブースト コントラストを上げて、より厳しい照明条件をシミュレートします(太陽ではなく屋内/スタジオの照明で見る場合など)。入力と比較すると、出力のコントラストは+ 5%を超える必要があります。(RMSアルゴリズムを使用) これらの3つの変更を実装する必要があり、他の拡張/変更は許可されません。トリミング、シャープニング、ホワイトバランスの調整なし。 入力は画像であり、ファイルまたはメモリから読み取ることができます。外部ライブラリを使用してイメージを読み書きできますが、それらを使用してイメージを処理することはできません。提供された関数もこの目的のために許可されていません(Image.blur()たとえば、単に呼び出すことはできません) 他の入力はありません。処理の強度、レベルなどは、人間ではなくプログラムによって決定される必要があります。 出力は、標準化された画像形式(PNG、BMPなど)のファイルとして表示または保存できます。 一般化してみてください。1つのイメージだけで機能するべきではありませんが、すべてのイメージで機能するわけではないことは理解できます。一部のシーンは、アルゴリズムがどれほど優れていても、この手法に単純に反応しません。答えるときも答えるときも、ここに常識を適用してください。 無効な入力、および仕様を満たすことが不可能な画像の動作は未定義です。たとえば、グレースケール画像を飽和させることはできません(ベースの色相はありません)、純粋な白の画像はコントラストを上げることができません。 回答に少なくとも2つの出力画像を含めます。 このドロップボックスフォルダー内のいずれかの画像から生成する必要があります。選択肢は6つありますが、さまざまな程度ですべて実行可能にしようとしました。各example-outputsサブフォルダーのサンプル出力を見ることができます。これらは完全な10MP JPG画像であり、カメラから直接出ているため、作業するピクセルがたくさんあることに注意してください。 もう1つは、任意の画像にすることができます。明らかに、自由に使用できる画像を選択してください。また、比較のために、元の画像またはそれへのリンクを含めます。 たとえば、この画像から: 次のようなものを出力できます。 参考までに、上記の例は、GIMPで処理され、角箱型の勾配ガウスぼかし、彩度+80、コントラスト+20で処理されています。(GIMPがそれらに使用する単位がわかりません) より多くのインスピレーションを得るため、またはあなたが達成しようとしているものをより良く理解するために、このサイトまたはこのサイトをチェックしてください。例の検索miniature fakingや検索もできtilt shift photographyます。 これは人気コンテストです。投票者は、目的に忠実でありながら、最も見栄えが良いと思うエントリーに投票してください。 明確化: 許可されていない関数を明確にしましたが、数学関数を禁止するつもりはありませんでした。私の意図は、画像操作機能を禁止することでした。はい、そこにはいくつかの重複がありますが、FFT、畳み込み、行列演算などのようなものは、他の多くの分野で役立ちます。単に画像を取得してぼかしをかける関数を使用しないでください。ブラーを作成するための適切な方法が見つかった場合、その公正なゲームです。

7
ポケボールシミュレーター
ポケモンのビデオゲームでは、プレイヤーは世界に送り出され、野生動物を小さなボールに押し込み、戦いの訓練をします。もちろん、誰もが戦闘のためにポケモンをプレイしないことを知っています。シリーズが持っている本当のドローは、それ自体を捕まえるポケモンです!あなたの仕事は、キャプチャの試行中にポケットボールをシミュレートすることです。この課題では、次のようなジェネレーションVキャプチャ式を使用します。 HP_maxターゲットポケモンの最大HPと等しい。HP_currentターゲットポケモンの現在のHPに等しい。rateは、ポケモンのキャッチ率bonus_ball、スローされたポケボールの乗数でありbonus_status、ターゲットポケモンがスリープ状態またはフリーズ状態の場合は2.5、ターゲットポケモンが麻痺、中毒、または燃焼した場合は1.5、それ以外の場合は1です。 を見つけaたら、最大3つの「シェイクチェック」を実行します。シェイクチェックが成功する確率は65536 / (255 / a)^(1/4)です。これらのチェックのいずれかが失敗した場合、ポケモンはボールをエスケープします。3つのチェックすべてが成功すると、ポケモンが捕まえられます! 注:除算が実行されるたびに、結果は1/4096の倍数に切り捨てられます。通常、これは重要ではありませんが、プログラムで考慮する必要があります。 あなたの課題は、シェイクチェックを実行し、チェックのステータスを標準出力するプログラムを作成することです。stdinでは、プログラムはポケモンの最大HP、ターゲットポケモンのキャッチ率、およびポケボールの名前(少なくとも、以下の詳細)を受け取ります。最大HPとキャッチ率は両方とも整数であることが保証されていますが、pokeballの名前は常に文字列です。この入力は任意の順序で入力でき、区切り文字を使用すると、一貫性がある限り便利です。入力が正しいと仮定し、エラー処理は必要ありません。 サポートする必要があるポケットボールの名前とそのキャッチ乗数は次のとおりです。 Poke | 1 Great | 1.5 Ultra | 2 Master | 255 ターゲットがスリープ状態で、1 HPであると想定できます。予想される出力形式は次のとおりです。 (First check failed) (no output) (Second check failed) *shake* (Third check failed) *shake* *shake* *shake* (All checks pass) *shake* *shake* *shake* Click! (これはタイプミスではなく、プログラムは2回のシェークを出力するべきではありません。) これはcode-golfなので、スコアはプログラムのソースコードのバイトカウントになります。最低スコアが勝ちます。 ボーナス! ポケモンは1 …
26 code-golf 

4
9ホールミニゴルフ:テキスト操作[終了]
9ホールミニゴルフ:説明 さまざまな難易度の9(ほとんど簡単)コードゴルフチャレンジ 同じ言語を複数回使用した場合の罰則 特定のテーマに関するすべての課題(このテーマ:テキスト操作) 入力と出力はどこでも合理的です(つまり、STDINとSTDOUT、ファイルの読み取り/書き込み、関数の引数と戻り値など)。ただし、プログラムにハードコーディングしてはなりません。 9ホールチャレンジとテキストメカニックから大きな影響を受けた 穴 コードゴルフバッグ 入力として2つの文字列を受け取ります。 最初の文字列の文字カウントを出力しますが、2番目の文字列での文字の出現を無視します。 例:f("foobarbaz", "ao")=>5 ゴルフの口実 入力として2つの文字列を受け取ります。 すべての行の先頭に2番目の文字列を付けて、最初の文字列を出力します。 例:f("foo\nbar\nbaz", "a")=>"a foo\na bar\na baz" タブとスペースの戦争入力として string s、number n、およびboolean b(必要に応じて指定)を受け取ります。 場合はbtrueで、出力sのすべてのタブでは、に変換されnた空間。 そうでなければs、すべてのnスペースをタブに変換して出力します。 例:f("if (x) {\n\tdoStuff();\n}", 4, true)=> "if (x) {\n[sp][sp][sp][sp]doStuff();\n}"([sp]スペースを意味します) ゴルフの柱 文字列s、数値n、および別の数値mを入力として受け取ります。各行の列および列ごとの文字で 出力sします。 また、列間に1つのスペースを埋めます。 例:=>nmf("this is some placeholder text, foo bar baz...", 3, 5) this …

6
最短の共通スーパーストリング
文字列のリストが与えられると、それぞれを部分文字列として含むs_0, s_1, ..., s_n最も短い文字列を見つけます。Ss_0, s_1, ..., s_n 例: S('LOREM', 'DOLOR', 'SED', 'DO', 'MAGNA', 'AD', 'DOLORE')='SEDOLOREMAGNAD' S('ABCDE', 'BCD', 'C')='ABCDE' この問題を解決する最短のプログラム(または関数)を作成します。必要に応じて、文字列を配列または文字/整数のリストとして表すことができます。標準ライブラリは問題ありません。入出力には、STDIN / STDOUT、ユーザープロンプト、関数のパラメーター/戻り値など、より便利なものを使用できます。 パフォーマンスは重要ではありません-たとえば、全長が100文字未満の入力の場合、平均的な最新のハードウェアでは結果を10秒以内に計算する必要があるとしましょう。
26 code-golf  string 

17
役に立たないように見えるプログラム内の行を書く[終了]
プログラムを作成し(サイズは重要ではありません)、役に立たない行を追加しますが、実際にはそうではありません-削除すると、プログラムがクラッシュするか、何か間違ったことをします。コメントで未使用に見える行を自由にマークするか、以下の例のようにコードの説明に言及してください(もちろん、この例では、行は実際には必要ありません。これは単なる例です)。 int main(void) { /* The line below is actually needed. */ 2 + 2; return 0; } これは人気コンテストなので、投票数が最も多いソリューションが勝ちます。

22
双子素数のN番目のペアを見つける
2つの素数は、2つ異なる場合、双子素数として定義されます。たとえば、3と5は29と31と同様に双子の素数です。 ツインプライムのn番目のペア(nはSTDINから来る)を見つけ、STDOUTにカンマとスペースで区切って出力するプログラムを作成します。これはコードゴルフなので、最短のコードが優先されます。 サンプル入力: 3 サンプル出力: 11, 13
26 code-golf 

15
ランダムにポイントを配置してそれらを接続するための最短コード
タスク これは非常に単純なコーディングタスクです。プログラムで行う必要があるのは、キャンバス(または別のコーディング言語の代替)にポイントを配置し、それを既に配置されているすべてのドットに接続することだけです。プログラムは、1つの入力、配置されるドットの数を受け取り、ドットが接続されたある種のディスプレイを出力する必要があります。 例 必要条件 実行できるようにする必要があります。つまり、オンラインで実行するか、ダウンロードして公開するコンパイラ/ツールが必要です。 これを解決するためだけに設計されていない限り、このチャレンジが設定される前に作成されたライブラリを使用できます。 これは最短のコードタスクであり、文字を意味します。コメント、色を変えるコード(可愛さのため)、およびライブラリは無視されます。 あなたの答えはユニークでなければならず、他の人のコードを盗んではいけません。それを数文字短くして再投稿してください。 5と100の値の場合、5分未満で実行できる必要があります。また、少なくとも200 * 200の解像度を使用し、非自明な分布を使用してキャンバス上のランダムな位置に各ドットを配置する必要があります。 現在のリーダーボード Flawr - Matlab - 22 - Confirmed Falko - Python 2 - 41 - Confirmed Wyldstallyns - NetLogo - 51 - Confirmed Ssdecontrol - R - 66 - Confirmed David - Mathematica - 95 - Confirmed ILoveQBasic - …
26 code-golf 

3
回転クインを作成する
文字列の回転は、文字列を2つの部分に分割し、順序を逆にすることで行われます。たとえば"world! Hello,"、の回転です"Hello, world!"。別の、まだ有効なプログラムを形成するためにローテーションできるプログラムを作成することは可能です。Pythonでこの例を考えてみましょう。 print ")import sys; sys.stdout.write(" 回転して形成できます import sys; sys.stdout.write("print ") それ自体が有効なpythonプログラムです。 あなたの挑戦は、それ自体の回転を出力するプログラムを書くことです。それは実行されると元のプログラムを出力します。ボーナスは、サイクル長が2を超えるエントリを指します。 これはコードゴルフで、正確なスコアリングは次のとおりです:(コードの長さ)/(サイクルの長さ-1)。 編集:私たちには勝者がいます(他の誰かがスコア4を破れない限り)!私はまだ、競合他社であるかどうかにかかわらず、他のソリューションを見ることに非常に興味があります。

17
m3ph1st0sのプログラミングパズル1(C ++)[終了]
これは、一連のC ++パズルの最初のものです。お楽しみください。 パズル1番: 次のプログラムを考えます: #include <iostream> int main() { const int a=1; const int b=2; const float c=0.5; std::cout << a/b-a*c; } プログラム内の単一の新しい行にコードを挿入して、出力が0になるようにします。新しい行にはAT MOST 18文字(スペースを含む)が含まれ、残りの行は変更されません。明確にするために、有効な新しいコードの例を次に示します。 #include <iostream> int main() { const int a=1; const int b=2; int* p = NULL; const float c=0.5; std::cout << a/b-a*c; } 15文字の新しい行が挿入されたため、問題ありません。ただし、問題は解決しません。 これがあなたにとって単純すぎる場合、心配しないで、もっと来ています!!

6
ウィキペディア:哲学!
多くのオタクがウィキペディアのほとんどのページ(95%と思う)を知っている可能性があるため、最終的には次のような哲学につながります。 別の通常の記事への最初の非イタリックまたはカッコ内のリンクをクリックします(つまり、File:やSpecial:ではなく、Wikipedia:のようなものでも構いません)。 スクリプトは以下を行う必要があります。 入力として最初のページを取る 到達する各記事の名前を印刷する そして、哲学にたどり着くまでにどれだけの記事を印刷したか、そうでない場合は印刷してください。 1000ポイントから開始し、コード内の各キャラクターにつき1ポイントを失います。 ループ記事の検出と停止:+50 ループする記事を検出し、ユーザーが記事の次のリンクに移動するかどうかを要求する:+170 コマンドライン引数などとして、以前のチェックでデフォルトを許可:+140 最高スコアが勝ちます。

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