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

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

15
関数クリップボード:貼り付け
この課題は、2018年5月の「Language of the Month」イベントの一部として、MATL言語の機能の一部に関連しています。 関連する課題: 関数クリップボード:コピー。 前書き MATLの関数クリップボードは、通常の入力取得関数への最新の4つの呼び出しへの入力を保存(「コピー」)します。通常の関数は、MATLで最も一般的なタイプの関数です。入力取得とは、関数が少なくとも1つの入力を取得することを意味します。保存されたクリップボードの内容は、スタックにプッシュできます(「貼り付け」)。 このチャレンジは、クリップボードの内容を入力として受け取ります。そのクリップボード状態を生成したすべての関数は、入力として1つ以上の正の整数をとったと想定されます。したがって、クリップボードの状態は、数字のリストのリストで表すことができます。(クリップボードへの実際の入力方法の詳細については、関連するチャレンジを参照してください。ただし、現在のチャレンジには必要ありません)。 クリップボードの内容を解釈する 例1 最初の内側のリストにはを参照し、最新したがって、クリップボードの状態なので、上の関数呼び出し、および [[11, 28], [12, 16], [4], [5, 6]] は、最後の関数呼び出しが2つの入力を受け取ったこと11を28示します。最後から2番目の呼び出しは、入力を取りました12、16。など(このクリップボードの状態は、関連するチャレンジの最初の例のコードによって生成されます)。 例2 十分な関数呼び出しがなかった場合、クリップボードの末尾の内部リストは空になります。 [[7, 5], [], [], []] (これは、単に7およびを追加するプログラムによって作成されます5)。 例3 関数呼び出しには任意の数の入力を含めることができますが、少なくとも少なくとも1(入力を受け取らない関数はクリップボードの状態を変更しません)。したがって、次のことも可能です。 [[3], [2, 40, 34], [7, 8, 15], []] クリップボードの内容にアクセスする 関数クリップボードの内容は、MATLの関数M(ちなみに通常の関数ではなく、クリップボード関数)を使用してスタックにプッシュされます。この関数は、入力として正の整数を受け取り、次のようにクリップボードの内容の一部をスタックにプッシュします。例1のクリップボードの状態を参照してください: [[11, 28], [12, 16], [4], [5, 6]] 1Mすべての入力を最新の関数呼び出しに返します。そう考える例えば、それができます11、28。 同様に2M、3Mおよびは、4M最新の2番目、3番目、4番目の関数呼び出しにすべての入力を返します。そう2Mなります12、16。3M与える4; そして、4Mなります5、6。 …

30
範囲内のものを数える
チャレンジ: ものの数をカウント1範囲の間のすべての数のバイナリ表現で。 入力: 2つの非10進正整数 出力: 12つの数値の間の範囲にあるすべてのs の合計。 例: 4 , 7 ---> 8 4 = 100 (adds one) = 1 5 = 101 (adds two) = 3 6 = 110 (adds two) = 5 7 = 111 (adds three) = 8 10 , 20 ---> 27 100 , 200 ---> …

13
カレーにして
引数x 1、x 2、…、x nをとる関数fを持つ –すなわち。 f:X 1 ×X 2 ×…×X n →Y – カリー化は、fを、さらに別の関数にマップする単一の引数a 1をとる関数として再定義します。このテクニックは、部分的に適用する場合に便利です。たとえば、カリー化したpow関数を使用して記述できますexp = pow(e)。 例 3つの引数(f:X 1 ×X 2 ×X 3 →Y)を取る次の関数fがあると仮定します。 def f(a,b,c): return a + b * c この関数をカリー化すると、f_curryが残ります:X 1 →(X 2 →(X 3 →Y))、その関数を2回呼び出すと、次と同等のf_curry(1)(2)関数(h)が返されます: def h(c): return 1 + 2 * c カリー化された関数fは次のように書くことができます(Python 3): …

8
ほぼコロンボのエピソード
あなたの仕事は、コロンボのエピソードタイトルで2人の行方不明のキャラクターを見つけることです。 入力 コロンボエピソードの69タイトルのうちの1つ(以下を参照)で、正確に2文字が置き換えられ*ます。 例: "Ran*om for a *ead Man" 出力 エピソードの完全なタイトルを返すか、文字の順序が明確であれば、2つの不足している文字だけを適切な形式で返すことができます。 有効な出力: "Ransom for a Dead Man" "sD" ["s", "D"] エピソード 書式なしリストを取得するには、このリンクに従ってください。 Prescription: Murder Swan Song Murder, Smoke and Shadows Ransom for a Dead Man A Friend in Deed Sex and the Married Detective Murder by the Book An Exercise …

30
base-36文字列をインクリメント
これは、以前スタックで尋ねた同様の質問のコードゴルフバージョンですが、面白いパズルになると思いました。 36を底とする数値を表す長さ10の文字列が与えられた場合、それを1つ増やし、結果の文字列を返します。 これは、文字列から数字だけを含めることを意味0する9とからの手紙aにz。 Base 36は次のように機能します。 最初に0to を使用して、右端の数字がインクリメントされます9 0000000000> 9回の繰り返し> 0000000009 その後、ato zが使用されます。 000000000a> 25回の繰り返し> 000000000z 場合はzニーズがインクリメントされるように、それはゼロにループバックし、その左に数字がインクリメントされます。 000000010 さらなるルール: 大文字または小文字を使用できます。 先行ゼロを削除することはできません。入力と出力の両方が長さ10の文字列です。 zzzzzzzzzz入力として処理する必要はありません。 テストケース: "0000000000" -> "0000000001" "0000000009" -> "000000000a" "000000000z" -> "0000000010" "123456zzzz" -> "1234570000" "00codegolf" -> "00codegolg"

14
これは切り捨てられた三角形の数ですか?
関連するOEISシーケンス:A008867 切り捨てられた三角数 三角形の数の一般的なプロパティは、三角形に配置できることです。たとえば、21を取り、osの三角形に配置します。 o ああ おー おおおお ああ おっと 各角から同じサイズの三角形を切り取る「切り捨て」を定義しましょう。21を切り捨てる1つの方法は次のとおりです。 。 。。 おー おおおお 。おー。 。。oo。。 (の三角形は.オリジナルからカットされます)。 o残りは12 秒なので、12は切り捨てられた三角形の番号です。 仕事 あなたの仕事は、整数を取り、数値が切り捨てられた三角形の数であるかどうかを返す(または標準出力メソッドのいずれかを使用する)プログラムまたは関数(または同等のもの)を書くことです。 ルール 標準的な抜け穴はありません。 入力は負でない整数です。 カットの辺の長さは元の三角形の半分を超えることはできません(つまり、カットは重なり合うことができません) カットの辺の長さはゼロにすることができます。 テストケース 真実: 0 1 3 6 7 10 12 15 18 19 偽物: 2 4 5 8 9 11 13 14 16 17 20 …
20 code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

20
エッフェル塔:「A」から大きな「A」を作成する
行数を指定した関数を作成しn、なりますbigA。 の水平バーはbigA中央の行、またはn偶数の場合は2つの下になければなりません 出力に等幅フォントを想定 出力は、行を分割するための明確な改行と、左詰めの正しい空白を含む文字列(または同様の文字配列など)である必要があります(\ tは4つのスペースと想定できます)。右側に空白を含めることができます。 例 n = 1 A n = 2 A AAA n = 3 A AAA A A n = 4 A A A AAAAA A A n = 5 A A A AAAAA A A A A これは、小さな「H」から「H」を作成することに触発されています

21
マッチ棒を数える
ここのほとんどの人は、マッチスティックパズルでも使用される7つのセグメントディスプレイに精通しています。以下の桁です0通じ9や手紙aを通じてz除いて、k,m,t,v,wこの形式で書かれました、。 _ _ _ _ _ _ _ _ | | | _| _| |_| |_ |_ | |_| |_| |_| | |_ _| | _| |_| | |_| _| _ _ _ _ _ _ _ _ _ |_| |_ | _| |_ |_ | |_ | | | …

1
私のマトリョーシカ人形を再構築
バックグラウンド マトリョーシカ人形(またはロシアの入れ子人形)がお互いの内側に収まる人形のセットです。私は誤ってマトリョーシカ人形のコレクションを混同しましたが、どれがどの中に入ったのか覚えていません。 目的 一意の文字列のリストが与えられたら、それらをネストされたマトリョーシカ人形にソートします。各文字列は個々の人形であり、マトリョーシカ人形は文字列のリストです。 ルール ましょうmin(a,b)文字列aとの辞書式の最小値になりbます。a ⊂ bそれaがの部分文字列であることを示しましょうb。次に、 マトリョーシカ人形のリストは、辞書式にソートする必要があります 文字列がaでき収まる文字列にbあればa ⊂ b 場合a ⊂ bとa ⊂ c、そのa内側に行こうmin(b,c) との両方a ⊂ cでb ⊂ cあるがa ⊄ b b ⊄ a、の場合、min(a,b)内部のみになりますc との両方a ⊂ c、そしてb ⊂ c、もしそうなら、中に入るa ⊂ bだけです。つまり、マトリョーシカが途中で終了しないように、スーパーストリングがサブストリングの前に移動します。bc 例 In: hahaha, hah, lol, lololol, bahaha, bah, haha, ah Out: bahaha, bah, ah hahaha, haha, …
20 code-golf  string 

27
水平に整列したASCIIアート
あなたの仕事は、入力として2つの「ASCIIアート」を受け入れ、各アートを水平方向に並べて配置することです。 たとえば、2つの文字列がある"abc\ndef"とし"123\n456"ます。"abc123\ndef456入力を印刷するとき、次のように見えるので、文字列「」を生成するためにそれらを水平に整列させる必要があります。 abc def そして: 123 456 出力は、印刷されると次のようになります。 abc123 def456 1つの入力が他の入力の隣にどのように配置されるかに注意してください。 入力 入力は文字列であり、2つの個別の引数として、または文字列のシーケンスとして使用できます。 アート内の文字には、32〜126(両端を含む)の範囲の10進コードが含まれます。 2つだけではなく、任意の数のアートを揃えることができます(ただし、少なくとも2つはサポートする必要があります)。 各アートの寸法は同じであり、少なくとも1つの行が含まれていると想定できます。 少なくとも100x100のキャラクターアートをサポートできる必要があります。 サイトの規則に合わせるために、引数の順序は重要ではありません。どのアートが左にあるか右にあるかは関係ありません。 出力 出力は、上記の整列されたアートであり、返されるか、stdoutに出力されます。 オプションの末尾の空白。 整列された芸術の間に視覚的な区切りがあってはなりません。 入力および出力アートは\n、\r文字列であるか、区切られている必要があります。2D配列を許可するのは非常に簡単です。 提出物は、機能または完全なプログラムである場合があります。 テストケース: "abc\ndef", "123\n456" -> "abc123\ndef456". "qwertyuiop\n asdfghjkl", "Some other\nTextFiller" -> "qwertyuiopSome other\n asdfghjklTextFiller" " * \n *** \n*****\n *** \n * \n", " + \n + …

9
形状を維持しながら列を反転
前書き 整数のリストのリストがあると仮定します(または実際には任意のオブジェクトですが、簡単にするために整数に固執しましょう)。リストの長さはさまざまで、空のリストもあります。リストを表形式で書きましょう。 [[ 1, 2, 3, 4, 5], [ 6, 7], [ 8, 9, 10, 11], [], [12, 13, 14], [15, 16, 17, 18]] このテーブルには、数字を含む、5つの縦の列があり1, 6, 8, 12, 15、2, 7, 9, 13, 16、3, 10, 14, 17、4, 11, 18、と5。私たちは、各列を逆にした場合、我々はリストを取得し15, 12, 8, 6, 1、16, 13, 9, 7, 2、17, 14, 10, 3、18, 11, …

21
以下の形式を最小バイトで印刷するにはどうすればよいですか?
この課題は、これに触発され、現在削除された質問です。 入力として正の整数Nを取り、以下のパターンに従う数値1 .. N 2の行列を出力します。 最初の行に1 .. Nを入力し、最後の行(行番号N)に(N + 1).. 2Nを入力してから、2番目の行に(2N + 1).. 3Nを入力し、入力が完了するまで続けますすべての行。 出力形式は柔軟であるため、リストなどのリストが受け入れられます。 N = 1 1 N = 2 1 2 3 4 N = 3 1 2 3 7 8 9 4 5 6 N = 4 1 2 3 4 9 10 11 12 13 …

7
文字列のローカル期間
ローカル期間 空でない文字列sを取得します。ローカル周期のSインデックスでは、iが最小の正の整数n個毎ように0≤K <N 、我々は、S [I + K] = S [I-N + K]両側が定義されるたびに。または、連結wwがsの隣に配置され、wの2番目のコピーがsのインデックスiで始まる場合、2つの文字列は重複する場所で一致するように、空でない文字列wの最小長です。 例として、(0から始まる)インデックス2 でs = "abaabbab"のローカル周期を計算してみましょう。 n = 1を試してください:s [2 + 0]≠s [2-1 + 0]なので、この選択は正しくありません。 n = 2を試してください:それからs [2 + 0] = s [2-2 + 0]がs [2 + 1]≠s [2-2 + 1]なので、これも正しくありません。 n = 3を試してください:s [2 + 0-3]は定義されません、s [2 + …
20 code-golf  string 

30
次の色
チャレンジ 虹をの文字列で表される7色として考えてくださいRed Orange Yellow Green Blue Indigo Violet。 あなたの仕事は、これらの色のいずれかを入力として受け取り、次に虹色を順番に出力するプログラムを作成することです。これには重複が含まれますViolet -> Red 入力 虹色のいずれかを含む文字列。 出力 虹の次の順番の色。 ルール 色の名前は大文字と小文字が区別されます。これらは、この投稿に含まれるケースと一致する必要があります。 入力は常に有効です。無効な入力に対する動作は許可されます。 これはコードゴルフなので、最短バイト数が勝ちです! 入力と出力の例 Input -> Output Red -> Orange Orange -> Yellow Yellow -> Green Green -> Blue Blue -> Indigo Indigo -> Violet Violet -> Red

11
スケールを印刷してください
あらいやだ!私はすぐに理論テストを行っていますが、スケールをまだ覚えていません!以下を印刷して、主要なスケールを覚えてください。 7♯ - C♯ D♯ E♯ F♯ G♯ A♯ B♯ C♯ 6♯ - F♯ G♯ A♯ B C♯ D♯ E♯ F♯ 5♯ - B C♯ D♯ E F♯ G♯ A♯ B 4♯ - E F♯ G♯ A B C♯ D♯ E 3♯ - A B C♯ D E F♯ G♯ …

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