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

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

10
ゴルフの絵文字
前書き 今日の課題(この課題に触発された)は、キャラクターを再利用せずに、さまざまなアスキーの絵文字を出力するスニペット、関数、または完全なプログラムを多数書くことです。 チャレンジ このチャレンジの有効なアスキーの絵文字のリストは、こことこの投稿の下部にあるコードブロックの両方にあります。 各スニペットは、提出物の別々の行にある必要があります。 すべてのスニペットに対して1つの言語のみを使用できます。 各スニペットは、stdoutに出力するか、絵文字とオプションの末尾の改行を含む文字列を返す必要があります。 すべてのスニペットで1つの文字を複数回使用することはできませんが、1つのスニペットで複数回使用することは問題ありません。 いずれのスニペットでも、言語のコードページ(または言語がカスタムコードページを使用しない場合はASCII)にない文字を使用することはできません。別の言い方をすれば、1バイトでエンコードできる文字のみに制限されます。 スニペットは入力を取得できません。 標準の抜け穴は許可されていません。 スコアは、上記のテキストファイルでそれぞれ異なるASCII絵文字を印刷する一意のスニペットの数です。 最高得点が勝ちます! 幸運を! 許可された絵文字、スペースで区切られた: :-) :) :-] :] :-3 :3 :-> :> 8-) 8) :-} :} :o) :c) :^) =] =) :-D :D 8-D 8D x-D xD X-D XD =D =3 B^D :-)) :-( :( :-c :c :-< :< …

3
Nullifierを最適化する
私はゲームCreeper World、特に続編の大ファンです。質問に答えるためにこのゲームがどのように機能するかを知る必要はありません。私の質問がどこから来たのかを言及したかっただけです。 ゲームの目的は、無効化装置として知られる武器を使用して、クリーパーを生成しているエミッターを破壊することです。 Nullifierは、この半径内のエミッターを破壊できます。 eee eeeee eenee eeeee eee 各無効化機能は、複数のエミッターをターゲットにすることができます。 あなたの目的 配列からなる2Dマップシミュレートを考えると、何もしてエミッタ可能性があり、あなたが好きな文字とし、スペースや電子または数字-ちょうど彼らが識別可能であること、nullifiersの最適な量と出力と同じマップがn個(またはあなたが希望するもの)エミッターが最小の無効化要素で破壊されるように配置されます。 最適な方法が複数ある場合は、1つを出力するだけで十分です。ただし、タスクが解決できない場合、レイアウトがそれらのすべてに当てはまらないほど多くのエミッタがあると言う場合、明確に異なる何かを出力する必要があります。nullで十分です。 クイックルール: 入力:多次元配列 入力には「なし」と「エミッタ」を意味する2つの文字が含まれ、回答には何が含まれますか 出力:多次元配列 出力には3つの文字が含まれます。これは、何も、エミッターとnullifierを意味するか、入力が解決できない場合は区別可能な出力を意味します 何もしない文字はnullifierでのみ置き換えることができます nullifierは複数のエミッターにヒットする可能性があり、常に範囲内のすべてにヒットします nullifierは、上記で指定された領域にヒットでき、常にターゲットにできるすべてのエミッタにヒットします バイト単位の最短回答が勝つ 禁止されている標準的な抜け穴 例 入力: [[ , ,e, , ], [ , , , , ], [e, , , ,e], [ , , , , ], [ , ,e, , …

11
整数の配列間で一致する最小コストを見つける
それぞれサイズがおよび、の整数XXXおよびの2つのソートされた配列を考えます。たとえば、、ます。YYYmmmnnnm&lt;nm&lt;nm < nX=(1,4)X=(1,4) X = (1,4)Y=(2,10,11)Y=(2,10,11)Y = (2,10,11) 我々は、マッチングの各要素ペアのいくつかの方法であると言う元素とのない二つの要素となるように、同じ要素と対にされていない 。マッチングのコストは、ペアの差の絶対値の合計です。Y X YXXXYYYXXXYYY たとえば、、場合、ペアを作成できます。このペアのコストはです。ペア作成した場合、コストはます。ペア作成した場合、コストはます。Y = (2 、10 、11 )(7 、2 )、(11 、10 )5 + 1 = 6 (7 、10 )、(11 、11 )3 + 0 = 3 (7 、11 )、(11 、10 )4X=(7,11)X=(7,11)X = (7,11)Y=(2,10,11)Y=(2,10,11)Y = (2,10,11)(7,2),(11,10)(7,2),(11,10)(7,2), (11,10)5+1=65+1=65+1 = 6(7,10),(11,11)(7,10),(11,11)(7,10), (11,11)3+0=33+0=33+0 = 3(7,11),(11,10)(7,11),(11,10)(7,11), …

23
文字列の数字を文字に、またはその逆に変換します
数字とそれに相当する文字のリストに基づいて、文字列を入力し、その文字列の文字を同等の数字/文字に置き換えて、結果を出力します。 リスト 1 = a 2 = b 3 = c 4 = d 5 = e 6 = f 7 = g 8 = h 9 = i 0 = j 入力 thisisastring1124 出力 t89s9s1str9n7aabd ルール 数字は小文字のみに相当します。 リスト外の文字はそのまま残されます。 入力文字列にスペースを含めることはできません。 完全なプログラムまたは機能のいずれかが許可されます。 それはコードゴルフなので、最少のバイトが勝ちます。
12 code-golf  string 

30
最後の桁の大きな数字
番号の指定されたリストは、x x x … x n 3 2 1の最後の桁を見つける 例:[x1,x2,x3,...,xn][x1,x2,x3,...,xn][x_1, x_2, x_3, ..., x_n]xxx…xn321x1x2x3…xnx_1 ^{x_2 ^ {x_3 ^ {\dots ^ {x_n}}}} [3, 4, 2] == 1 [4, 3, 2] == 4 [4, 3, 1] == 4 [5, 3, 2] == 5 なぜなら。3(42)=316=430467213(42)=316=430467213 ^ {(4 ^ 2)} = 3 ^ {16} …
12 code-golf  math 

14
警官と強盗のハードコーディング(強盗)
これは警官と強盗の挑戦です。この課題に対する警官のスレッドはこちら 考えるべき興味深い質問は次のとおりです。 番号のシーケンスがある場合、どのシーケンスについて話しているかが明確になる前に、それらの番号をいくつ提供する必要がありますか? 私はから順に、正の整数についての話をしたい場合は例えば111、私が言うことができる1,2,3,…1,2,3,…1,2,3, \dots、それは本当に十分でしょうか? この質問に答える1つの方法があり、コードゴルファーになるには、コードゴルフが関係します。これらの用語を生成する最短コードがシーケンスのすべての用語を生成する場合、シーケンスの十分な用語を提供しました。これをcode-golfの観点から考えると、テストケースを通過する最短のコードが目的のタスクを実行するように、十分なテストケースを提供したことになります。 チャレンジ この挑戦は警官と強盗の挑戦です。どの警官がテストケースを提示し、強盗は、意図されたシーケンス以外のテストケースをスプーフィングするためのより短い方法を見つける必要があります。警官は次のものを提示します。 入力として正の整数を受け取り、出力として整数を生成するコード。このコードは、0個または1個のインデックスを付けることができますが、インデックスが何であるかを明確にする必要があります。このコードはシーケンスを定義します。 出力に影響する可能性のある関連するプラットフォームまたは言語の要件(longintのサイズなど)。 コードによって計算されたシーケンスの最初のn項とともに、数値。これらは「テストケース」として機能します。nnnnnn 強盗は、提示されたものよりも短い同じ言語のプログラムを見つけ、すべてのテストケースに合格します(最初の入力に対して警官のコードと同じ出力を生成します)。強盗のコードは、警官のプログラムからの出力がnよりも大きい数で異なっていなければなりません。nnnnnn 得点 強盗は、発見されたクラックの数でスコアが付けられ、クラックが多いほど良くなります。元のクラックよりも短い有効な回答を見つけることにより、回答を再びクラックすることができます。2回目に答えがクラッキングされた場合、ポイントは最初ではなく2番目のクラッカーに与えられます。

12
分布図を描く!
チャレンジ 入力として3つの整数が与えられます- min_value, max_value, sample_size、配列またはいくつかのパラメーターとして答えに渡すことができます。 あなたの仕事は、である出力任意の便利な形式の図を示していることで数字の周波数、(min_value, max_value)乱数場合範囲は、最大表示(min_value, max_value)範囲を撮像しますsample_size回。乱数列は回答内で生成する必要があります。 範囲とサンプルサイズが大きい場合、表現が正確である限り、ダイアグラムで使用するステップを自由に変更できます。 例 と[1, 5, 10]を入力として: o o o x o x o x x x x x x x x 1 2 3 4 5 [1, 100, 15](00番組1-9、図10に示す10-19、等そう10の工程において、)として入力: xx oo oo xx oo xx oo oo oo oo xx oo oo xx …
12 code-golf  random 

1
自己推定パングラム
パングラム 素早い茶色のキツネが怠zyな犬を飛び越えました。 これはパングラムの例です-アルファベットのすべての文字を少なくとも1回含む文。 自己列挙パングラムは、独自の文字の数の分析を生成することによってパングラムする基準を満たす文です。 これを達成する例は、文です このパングラムには、4つのAs、1つのB、2つのC、1つのD、30のE、6つのF、5つのG、7つのH、11のI、1つのJ、1つのK、2つのL、2つのM、18のN、15のO、2つのPが含まれます、1つのQ、5つのR、27のS、18のT、2つのUs、7つのV、8つのW、2つのX、3つのY、および1つのZ。 チャレンジ 入力が文字目録につながる文字列である関数を生成します。この例では、入力は「このパングラムに含まれています」です。各文字の数量は、書面に記載され、表示される文字数に貢献する必要があります。 ルール オックスフォードコンマはオプションです Zの前にアンパサンドを使用します(または、ハードモードの場合、関数で「&」と「and」を切り替える機能を含めます) すべての文字は合計文字数にカウントされます 書かれていない数字はありません これはコードゴルフですので、バイト単位の最短コードが勝ちます HONOでのuこの週末R夫婦の、数字は女王の英語で書かなければなりません。たとえばnine hundred and ninety-nine Gs、文字Gの999回の出現およびnine hundred and nine Gs909の出現。 桁は、標準の短いスケールの命名規則で記述されます エッジケース コードがループでスタックする場合があります。たとえば、2つのOがある場合、コードはカウントを3つのOに増やします。これにより、コードは再び2つのOをカウントします。これに戻る前に1文字おきに計算しても問題を解決できない場合は、入力が誤ったスターターおよび出力false、nullまたは空の文字列であると考えてください。 文字に999を超える出現がある場合、入力は誤ったスターターと見なされる必要があります。 テストケース 「このパングラムに含まれる」は、例文を出力する必要があります

9
各CSVレコード内のフィールドの数を数える
各csvレコードのフィールド数が異なるテキストファイルを想像してください。タスクは、ファイルの各レコードにあるフィールドの数を出力するコードを記述することです。ファイルにヘッダー行がなく、選択に応じてファイルまたは標準入力から読み込むことができると想定できます。 ファイルの各行の定義について以下で説明するcsvルール用のrfc4180のバージョンを想定できます。以下は、仕様の関連部分を軽く編集したバージョンです。 CSV形式の定義 各レコードは、改行(CRLF)で区切られた個別の行に配置されます。例えば: aaa,bbb,ccc CRLF zzz,yyy,xxx CRLF ファイルの最後のレコードには、終了改行が含まれる場合と含まれない場合があります。例えば: aaa,bbb,ccc CRLF zzz,yyy,xxx (ルール3はこのチャレンジには適用されません) 各レコード内には、コンマで区切られた1つ以上のフィールドがあります。スペースはフィールドの一部と見なされるため、無視しないでください。 各フィールドは、二重引用符で囲まれていてもいなくてもかまいません。フィールドが二重引用符で囲まれていない場合、フィールド内に二重引用符が表示されない場合があります。例えば: "aaa","bbb","ccc" CRLF zzz,yyy,xxx 改行(CRLF)、二重引用符、およびコンマを含むフィールドは、二重引用符で囲む必要があります。例えば: "aaa","b CRLF bb","ccc" CRLF zzz,yyy,xxx 二重引用符を使用してフィールドを囲む場合、フィールド内に表示される二重引用符は、その前に別の二重引用符を付けてエスケープする必要があります。例えば: "aaa","b""bb","ccc" 例 入力: ,"Hello, World!" "aaa","b""bb","ccc" zzz,yyy, "aaa","b bb","ccc","fish","" 出力を与える必要があります: 2, 3, 3, 5 最も便利な方法で出力値を指定できます。 図書館 任意のライブラリを使用できます。 これまでのところ素晴らしい答えですが、特にクールなコマンドライン/ bashの回答がありません。
12 code-golf 

1
Octaveで匿名の再帰関数を定義する最も短い方法は何ですか?
Octaveの関数型プログラミングは大好きですが、実際には扱いにくいです。匿名の再帰関数を定義する最短の方法について疑問に思っています。 私はいくつかのアイデアを持っていますが、これらのアイデアを組み合わせてさらに短くする方法(または同様に短いがより汎用性の高い方法)があるかどうか疑問に思っています。この質問のために、再帰的にゼロまでカウントダウンしましょう(ペイロードをできるだけ単純に保つためです)。 私の推論が正しければ、次の例で使用した変数名は重複しません。目的の関数はでq(n)、常にゼロを返します。iは、カウンタ変数として使用され、のローカルスコープでf呼び出した再帰関数gですf。 44バイト、「のインライン定義f」 q=@(n)(f=@(g,i){@()g(g,i-1),i}{~i+1}())(f,n) 44バイト、「の引数リスト定義f」 q=@(n,f=@(g,i){@()g(g,i-1),i}{~i+1}())f(f,n) 44バイト、「の別個の定義f」 f=@(i,g){@()g(i-1,g),i}{~i+1}();q=@(n)f(n,f) 41バイト、「戻り値として必要な関数」 f=@(g)@(n){@()g(g)(n-1),n}{~n+1}();q=f(f) 現在の「勝者」は、flawrによるこの答えに触発されています。ただし、これを行うためのさまざまな方法が広範に考えられるため、おそらく誰かがさらに短い方法の組み合わせを考えることができます。 もちろん、目標は「フル」機能のために39バイト未満にすることです。オンラインで試してください!
12 code-golf  tips  octave 

11
隣人の合計が最も高い数を見つける
チャレンジ 数値のグリッド(10 &lt;= N &lt;= 99)が与えられた場合、それに隣接する4つの数値の合計が最も大きい数値を返します。それは数字の上、下、右、左の数字ですが、それ自体ではありません。 数自体はカウントされず、その4つの近隣のみがカウントされます。 端の数字は、欠落している数字が0であるかのように扱われるべきです。 関係を避けるためにテストを設計します。 数字は繰り返されません。 これはcode-golfです。 例 与えられた 56 98 32 96 12 64 45 31 94 18 83 71 戻る 18 実際のテスト 与えられた 98 95 67 66 57 16 40 94 84 37 87 14 19 34 83 99 97 78 50 36 18 …

8
チャチャスライドのインデックス作成
前書き: もともとオランダ語の歌が頭にありましたが、歌詞は次のとおりです:「Doe 'n stapje naar voren、en' n stapje terug」(これは「少し前へ、少し後ろへ」と訳されています)完全な歌詞を検索しましたが、歌詞が前後に移動するだけで、決して横にならないことに気付きました。 だから、代わりにこの挑戦のためにMr C The Slide Man別名DJ Casper-Cha-Cha Slideの歌詞を使うようになりました。 他のすべてを無視し、言及された量を含む「左」、「右」、「戻る」、および「ホップ」(「ホップ」を前方としてカウントしました)の単語だけを見ると、完全な歌には次のリストがあります(私はここで略語LRBHを使用しています): LBHRLLBHRLBHHRRLLLRLBHHHHRRLLLBHHHHHRLRLRLHRLLBHHLRLBHH ここでは、スペースを節約するために隠されたJavaScriptコードスニペットで完全な曲の歌詞が表示されます。ここでは、動きと量がブロックされた括弧で囲まれています。 コードスニペットを表示 To the [left], take it [back] now y'all One [hop] this time, [right] foot let's stomp [Left] foot let's stomp, cha cha real smooth Turn it out, to the [left] …

8
数字の出現
入力: 整数のリスト(ゼロを含むことはありません) 出力: 以下に基づくカウントを持つ同じサイズのリスト: 現在のアイテムが負の場合:このアイテムの前にあるすべてのアイテムを調べ、それらの他の数字で数字が発生した回数をカウントします 代わりに現在のアイテムが正の場合:このアイテムの後のすべてのアイテムを見て、それらの他の数字で数字が発生した回数を数えます ねじれが1つあります:リストのサイズが偶数の場合、すべての数字を1回だけカウントします(複数の数字と一致する場合でも)、サイズが奇数の場合、現在のアイテムの各数字の数字のすべての数字をカウントします(複製されます)数字は複数回カウントされます)。 これを少し明確にするためにいくつかの例を挙げましょう。 偶数リストの例: Input: [4, 10, 42, -10, -942, 8374, 728, -200] Output: [3, 2, 4, 1, 2, 1, 1, 5 ] リストのサイズは偶数なので、各番号を1回だけカウントします。 4:ポジティブだから、楽しみにしています。数字を含む3つの数字があります4(42、-942、8374)。ですから、から始め3ます。 10:ポジティブだから、楽しみにしています。数字のいずれか含む二つの数字があり1、および/または0(は-10、-200)。したがって、2番目の出力は2です。 42:再び肯定的です。数字のいずれか含む4つの数字があり4、および/または2(-942、8374、728、-200)。したがって、3番目の出力は4です。 -10:今回はマイナスなので、後方を見る。数字1および/または0(マイナス記号は無視し10ます)を含む数字は1つだけです()。したがって、4番目の出力は1です。 等 奇数リストの例: Input: [382, -82, -8, 381, 228, 28, 100, -28, -2] Output: [13, 2, 2, 4, …

5
ブレゼンハムのラインラスター化によるマトリックスのトレース
これに触発された。 2年生のアガサスティーブンデールは、ラスターグラフィックスに真剣に取り組んでおり、線形代数のコースを取りました。今、彼女はマトリックスを長方形として想像していますが、彼女の芸術的な精神では、彼女はそれらの長方形に対角線を付け、それらに沿ってトレースを計算しようとします。実際、彼女は正方行列だけでなく、すべての行列のトレースを計算したいと考えています。 Agathaはアーティストであるため、お気に入りの画像エディターで線を描く方法を知っています。後者はBresenhamのアルゴリズムを使用して線をプロットします。彼女はウィキペディアもチェックして、擬似コードを見つけました。 function line(x0, y0, x1, y1) real deltax := x1 - x0 real deltay := y1 - y0 real deltaerr := abs(deltay / deltax) // Assume deltax != 0 (line is not vertical), // note that this division needs to be done in a way that preserves the …

15
時間内にビニング
この課題のタスクは、配列の要素を時間ビンに入れることです。入力は、イベントの時間を表す正の整数の非減少配列と、各ビンのサイズを表す整数になります。例から始めましょう。入力配列Aと出力配列を呼び出しますO。 `A = [1,1,1,2,7,10]` and `bin_size = 2`. `O = [4,0,0,1,1]`. なんで?bin_size = 2:、我々は次のような間隔がありませんよ(0,2], (2,4], (4,6], (6,8], (8,10]、4つの項目は、(1,1,1,2)最初の区間内にあるが(0,2]、第二と第三の間隔、1でどれ7間隔で(6,8]、1 10時間間隔でを(8,10]。 コードは、bin_size先頭から始まるすべての間隔を考慮し、それぞれに含まれる0数字の数をカウントするA必要があります。間隔の右端を常にビンに含める必要があるため、上記の例2ではのカウントに含まれます4。コードは、入力と出力の長さの合計で線形時間で実行する必要があります。 その他の例: `A = [1,2,7,12,15]` and `bin_size = 5`. `O = [2, 1, 2]`. `A = [1,2,7,12,15]` and `bin_size = 3`. `O = [2,0,1,1,1]`. 入力および出力は、便利な任意の形式で指定できると想定できます。好きな言語とライブラリを使用できます。

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