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

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

10
文字は他の文字に収まりますか?
色別に適切にグループ化されたマットを覚えていますか? 昨日私はそれを見ていましたが、いくつかの文字が他の文字に収まることに気付きました。例:P手紙Rが行く場所に収まる。そのため、ここで簡単な課題があります。2つの文字が与えられ、いずれかの文字が他の文字の内側に収まる場合(直接または回転しますが、反転しません)、偽の値を返します。つまり、入力が[P,R]また[R,P]はの場合、どちらの場合も一方の文字が他方の文字に収まるため、真偽を返す必要があります。取得した[L,U]場合は、falseyを他の内部に収まらないため返さなければなりません。 ルール 入力は、マット内にも数字があるため、[0-9A-Z]の範囲の2つの英数字にする必要があります(2つの入力として2つの個別の文字、2つの文字を含むリスト、 2文字、何でも)。 出力は一貫している必要があります(真実と偽の値は常に同じでなければなりません)。 以下はフィッティングの表です([Y,Y]入力としてのようなものを取得する場合のために、文字は常に適切な場所に収まることに注意してください)。 char fits inside chars -------------------------------------------------------- C G,O F B,E,P,R G O I 0,1,7,B,D,E,F,H,K,L,M,N,O,P,R,T,V,W,X,Z L E M W P R S O V A W M 0 O 1 B,E,L 3 O 6 9,O 8 O 9 6,O 私は子供用マットのすべてのフィッティングをテストしたことを厳soleに誓います。(額から汗を乾かします。) これはcode-golfなので、各言語の最短コードが勝つかもしれません! いくつかのテストケース input output ------------- …

3
最小の長方形カバー
長方形カバー 次のようなビットのマトリックスがあるとします。 1 1 0 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 このマトリックスの長方形カバーを見つけたいと思います。これは、0を含まないが、すべて1を含むマトリックスの長方形のサブセットのセットです。サブセットは互いに素である必要はありません。上記のマトリックスの長方形カバーの例を次に示します。 +----+ +----+ |1 1| 0 0 0 …

27
一般化されたマトリックストレース
インスピレーション。 与えられた(とにかく): 2つの引数(または2つの要素のリストで構成される単一の引数)ブラックボックス関数、(入力と出力は1、2、3、…)f: ℤ+ × ℤ+ → ℤ+ 少なくとも2行2列の厳密に正の整数行列 行列の関数traceを返します。 関数トレースとは何ですか? 通常のマトリックストレースは、マトリックスの主な対角線(左上から右下)の合計です。 [[1,2,3],[4,5,6],[7,8,9]]→ [1,5,9]→ 1+5+9→15 しかし、加算する代わりfに、対角線に沿って適用したい: [[1,2,3],[4,5,6],[7,8,9]]→ [1,5,9]→ f(f(1,5),9)かf(1,f(5,9)) 左から右または右から左のどちらを使用するかを明記してください。 指定された行列とすべての中間値は、言語の整数ドメイン内の厳密に正の整数になります。行列は非正方形の場合があります。 例 f(x,y) = xy、[[1,2,3],[4,5,6],[7,8,9]]→ 1×5×9→45 f(x,y) = xy、[[1,2,3],[4,5,6],[7,8,9]]→ →1591 f(x,y) = x-y、[[4,5,6],[1,2,3]]→ 4-2→2 f(x,y) = (x+y)⁄2、[[2,3,4],[5,6,7],[8,9,10]]→ 5または7 f(x,y) = x+2y、[[1,2,3],[4,5,6],[7,8,9]]→ 47または29 f(x,y) = max(x,y)、[[1,2,3],[4,5,6],[7,8,9]]→ max(1,5,9)→9 f(x,y) = 2x、[[1,2,3],[4,5,6],[7,8,9]]→ 2または4 …

25
バイナリシーケンス
d> 1桁の2進数Aを入力として、Bのn番目の桁を見つけるための以下の規則に従って、d桁の2進数Bを出力します。 Aの最初の数字と2番目の数字が等しい場合、Bの最初の数字はゼロです。それ以外の場合は1つです。 1 <n <dの場合、Aの(n-1)番目、n番目、および(n + 1)番目の桁が等しい場合、Bのn番目の桁はゼロになります。それ以外の場合は1つです。 Aの(d-1)番目とd番目の桁が等しい場合、Bのd番目の桁はゼロです。それ以外の場合は1つです。 ルール 文字列/リストの入出力形式は問題ありません。入出力の別の許可された方法は、整数とそれに続く先行ゼロの数(または先行ゼロの数に続く)です。 コードをできるだけ短くしてください。 テストケース 00 -> 00 01 -> 11 11 -> 00 010111100111 -> 111100111100 1000 -> 1100 11111111 -> 00000000 01010101 -> 11111111 1100 -> 0110
23 code-golf  binary 

5
ホイールの数を決定する
数学以外の説明 これは、背景に関係なく親しみやすい説明です。残念ながら数学が含まれていますが、中学校レベルの理解を持つほとんどの人が理解できるはずです ポインターシーケンスは、a(n + 1)= a(na(n))のようなシーケンスです。 この式を少し分解して、その意味を理解しましょう。これは、最後の用語を見るシーケンスの次の用語を見つけ、その多くのステップを取り戻し、見つかった用語をコピーすることを意味します。たとえば、これまでにシーケンスがあった場合 ... 3 4 4 4 3 ? 私たちは3つのステップから戻ります 3 ... 3 4 4 4 3 ? ^ 私たちの結果を作ります4。 通常、このゲームは両方向に無限のテープでプレイしますが、一定のステップ数を経てシーケンスの先頭に戻るホイールでプレイすることもできます。 たとえば、ここにシーケンスの視覚化があります [1,3,1,3,1,3] 今、私たちは、任意の数は、ことに気づくかもしれないのx、ホイール内のセルの数を超えたホイールで、nは、同様であるかもしれないX mod nをホイールの周りのすべての完全な回路は、何もしないと同じですので。したがって、すべてのメンバーがホイールのサイズよりも小さいホイールのみを考慮します。 数学の説明 ポインターシーケンスは、a(n + 1)= a(na(n))のようなシーケンスです。通常、これらは整数から整数に定義されますが、この定義で必要なのは後継関数と逆関数のみであることに気付くかもしれません。すべてのサイクリックグループにはこれらの両方があるため、実際には任意のサイクリックグループのポインターシーケンスを考慮することができます。 これらのタイプの関数を探し始めると、各関数に類似した関数がいくつかあることに気付くでしょう。たとえば、Z 3では、次の3つがすべて要件に適合する関数です。 f1 : [1,2,2] f2 : [2,1,2] f3 : [2,2,1] (ここでは、入力を使用してリストにインデックスを付けるだけで結果を取得する関数を表すためにリストが使用されます) これらの関数はすべて互いに「回転」していることに気付くかもしれません。私は回転によって何を意味するのか正式には、関数Bはの回転であるIFF 私たちはここに関与数学の少しを得れば今、私たちは、実際にあればことを示すことができるポインタ配列であるの回転ごとにもポインタ配列です。したがって、実際には、互いの回転であるシーケンスは同等であると見なされます。 …

26
単語のランクを見つける
定義 単語のランクは、単語が意味のあるかどうかに関係なく、辞書のように、文字の可能なすべての順列(または配置)がアルファベット順に配置されるときの単語の位置として定義されます。 「青」と「見える」という2つの単語を考えてみましょう。そもそも、これらの単語の文字のすべての可能な配置をアルファベット順に記述します。 "blue": "belu","beul","bleu","blue","buel","bule","eblu","ebul","elub","elbu","eubl", "eulb","lbeu","lbue","lebu","leub","lube","lueb","ubel","uble","uebl","uelb", "ulbe","uleb" "seen": "eens","eesn","enes","ense","esen","esne","nees","nese","nsee","seen", "sene","snee" 次に、左から見て、必要な単語の位置を見つけましょう。「blue」という単語が4番目の位置にあり、「seen」という単語が10番目の位置にあることがわかります。したがって、単語「blue」のランクは4、「seen」のランクは10です。これは、単語のランクを計算する一般的な方法です。必ず1からカウントを開始してください。 仕事 あなたの仕事は、入力として任意の単語を取り、そのランクを表示するコードを書くことです。ランクが出力になります。繰り返し文字を含む単語には注意してください。 例 "prime" -> 94 "super" -> 93 "bless" -> 4 "speech" -> 354 "earth" -> 28 "a" -> 1 "abcd" -> 1 "baa" -> 3 入力は完全に小文字であると想定でき、入力にはアルファベット文字のみが含まれます。また、空白または無効な文字列が入力された場合は、何でも返すことができます。 得点 これはcode-golfなので、最短のコードが優先されます!

11
全単射関数ℤ→ℤⁿ
(すべての整数のセット)から(たとえば恒等関数)に全単射関数を作成するのは簡単です。ZZZ\mathbb{Z}ZZ\mathbb{Z} それから全単射関数を作成することも可能であるに(2つの整数のすべてのペアのセットのデカルト積のと)。たとえば、2D平面上の整数ポイントを表すラティスを取得し、0から外側にらせんを描き、そのポイントと交差するときのらせんに沿った距離として整数のペアをエンコードできます。Z 2 Z ZZZ\mathbb{Z}Z2Z2\mathbb{Z}^2ZZ\mathbb{Z}ZZ\mathbb{Z} (自然数でこれを行う関数は、ペアリング関数として知られています。) 実際、これらの全単射関数のファミリーが存在します: fk(x ):Z → Zkfk(バツ):Z→Zkf_k(x) : \mathbb{Z} \to \mathbb{Z}^k チャレンジ 関数(は正の整数)のファミリーを、整数を個の整数のタプルに全単射でマッピングするというプロパティで定義します。k f k(x )kfk(x)fk(バツ)f_k(x)kkkfk(x)fk(バツ)f_k(x)kkk 入力と与えられると、提出は返す必要があります。x f k(x )kkkxバツxfk(x)fk(バツ)f_k(x) これはcode-golfなので、最短の有効な回答(バイト単位で測定)が勝ちます。 仕様書 上記の基準を満たす限り、任意のファミリを使用できます。fk(x)fk(バツ)f_k(x) 関数ファミリーの動作方法の説明と、関数の逆数を計算するスニペットを追加することをお勧めします(これはバイトカウントには含まれません)。 関数が全単射であることを証明できる限り、逆関数が計算不可能であれば問題ありません。 言語の符号付き整数と符号付き整数のリストに適切な表現を使用できますが、関数への入力を無制限にする必要があります。 値を最大127までサポートする必要があります。kkk
23 code-golf  math  number 

19
算術シーケンスを再構築する
中間からいくつかの項が削除された正の整数の有限の算術シーケンスが与えられた場合、シーケンス全体を再構築します。 タスク 算術シーケンスを考えます。連続する2つの要素の差が同じである正の整数のリスト。 2 5 8 11 14 17 ここで、次の制約に従って、シーケンスから1つ以上の整数が削除されたとします。 削除される整数は、シーケンスの連続した用語になります。 シーケンスの最初と最後の整数は削除されません。 少なくとも3つの整数がシーケンスに残ります。 上記のシーケンスの場合、可能な削除は次のとおりです。 2 5 8 14 17 (removed 11) 2 5 17 (removed 8 11 14) 2 14 17 (removed 5 8 11) あなたのタスク:これらの部分シーケンスのいずれかを指定して、元の完全なシーケンスを再構築します。 詳細 入力が有効(解決策あり)で、少なくとも1つの用語が欠落していると仮定できます。シーケンス内のすべての数値は正の(> 0)整数になります。シーケンスは、用語間に正または負の差がある場合があります(つまり、増加または減少している場合があります)。一定のシーケンスではありません(例:)5 5 5。 あなたの解決策は、完全なプログラムまたは機能かもしれません。いずれかのデフォルトの入力と出力の方法が許容されています。 入力および出力は、文字列(合理的な区切り文字を含む)、文字列のリスト、または数字のリストです。あなたの言語にとって都合の良いベースで数字を表すことができます。 他の人があなたのコードをより簡単にテストできるように、あなたの提出物に異常なI / Oメソッド/フォーマットを記載してください。 テストケース In: 2 5 …

22
複数のサイコロの頻度分布
2つの正の整数aとを指定するとb、bサイコロのサイコロを振っaて結果を合計する頻度分布を出力します。 頻度分布は、サイコロの各可能なシーケンスが一度発生した場合、各可能な合計の頻度をリストします。したがって、頻度は合計がに等しい整数ですb**a。 ルール 周波数は、周波数が対応する合計の昇順でリストする必要があります。 対応する合計で頻度をラベル付けすることは許可されていますが、必須ではありません(合計は必要な順序から推測できるため)。 出力が言語の表現可能な整数の範囲を超える入力を処理する必要はありません。 先頭または末尾のゼロは許可されません。出力には正の周波数のみが表示されます。 テストケース フォーマット: a b: output 1 6: [1, 1, 1, 1, 1, 1] 2 6: [1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1] 3 6: [1, 3, 6, 10, 15, 21, 25, 27, 27, 25, 21, 15, 10, 6, 3, …

8
Casciitum Scribe
前書き サボテンにはさまざまなサイズ、形、色があります。しかし、すべての西洋で最も象徴的なサボテンと必需品はサグアロでなければなりません。重要な特徴は、そのサイズと腕であり、定型的なサボテンの外観を定義しています。 あなたの仕事は、サグアロをASCIIの世界に持ち込むことです。ただし、実際の世界と同様に、他のサグアロはありません。そのため、プログラムはさまざまなアーム構成でサグアロを生成できる必要があります。 サグアロの例 入力:[0b10, 0b11]([2, 3]10進数、入力長2) _ / \ _ | | / \ | | | | | | \ \_| | \__ | \ | _ | | _ / \ | | / \ | | | | | | \ \_| |_/ / \__ __/ …

1
マリオは縮小衛星に陥りますか?(図を追加)
スーパーマリオギャラクシーは、マリオが走るにつれて縮小するプラットフォームでタイル張りされた2つの菱形八面体形*の惑星を備えています。マリオが三角形の穴または以前に触れたタイルによって残された隙間に落ちた場合、彼はコアのブラックホールによって消費されます。(ウォッチ: Hurry-Scurry Galaxy、 Sea Slide Galaxy) 画像:MarioWiki.com (惑星は、2x3の "ブリッジ"で面が切り離されて互いに接続された2x2x2の立方体と考えることができます。) 残念ながら、私のコントローラーは非常に壊れているため、マリオはジャンプできず、4つの基本的な方向に制限されています。さらに、マリオは非常にゆっくりと移動し、最初に彼の後ろのプラットフォームが消えない限り、1歩でも戻ることができません。 カメラは常にマリオの頭の上にあり、マリオは2x2の顔の右下から開始すると仮定します。 ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ M ■ ■ ■ ■ ■ ■ ■ ■ ■ あなたのプログラムはU D L R、マリオが惑星を歩き回る一連のステップを表す、リストまたは一連の方向(上、下、左、右)を取ります。プログラムは、2つの異なる出力の1つを出力できます。1つは、マリオがまだ生きて歩いていることを表し、もう1つは、彼の散歩のどこかでマリオが収縮衛星に落ちたことを表します。 RR: ■ ■ RRD: ■ ■ RRL: …

16
持っていく
チャレンジ 正の整数のリストが与えられた場合、各整数から最大1ビットを取得する順列が存在するかどうかを調べると、すべて1のsで構成される2進数を作成できます。 結果の2進数のビット数は、最上位MSBと等しくなります、整数リストのにます。 出力 コードは、そのような置換が存在するかどうかを示す真偽値を出力または返す必要があります。 例 真実: リスト[4, 5, 2]とそのバイナリ表現[100, 101, 10]を使用して、3番目、1番目、2番目のビットをそれぞれ使用して作成できます111。 4 -> 100 -> 100 -> 1 5 -> 101 -> 101 -> 1 2 -> 010 -> 010 -> 1 Result 111 リストでは[3, 3, 3]、すべての数値の最初と2番目のビットの両方がに設定されている1ので、数に余裕を持って選択することができます。 3 -> 11 -> 11 -> 1 3 -> 11 -> 11 …

22
ラウンド・ミー、ヘルプ・ミー
入力を考えるとn、あなたのプログラムや関数を出力しなければならない整数最小の正kなどnの最も近い倍数に丸めはkより大きくなりますn。 例。 入力を指定する20と、出力値は次のようになります3。 倍数1IS 20である、ないより大きい20。 倍数2IS 20である、ないより大きい20。 の最も近い倍数は3で21、これはより大きいため20、出力されます。 テストケース #Input #Output 2 3 4 5 6 4 8 3 10 4 12 7 14 3 16 6 18 4 20 3 22 4 24 5 26 3 28 5 30 4 32 3 34 4 36 8 38 3 40 …
23 code-golf  number 

7
偽除数和ポリグロット
タスク この課題では、あなたのタスクは、プログラミング言語でプログラムを書くことであるL正の整数を受け取り、N、との適切約数の合計出力N(シーケンスA001065 OEIS上を)。これは、任意の正しい出力返すべき1≤N≤10 000。最初の10個の出力は次のとおりです。 0, 1, 1, 3, 1, 6, 1, 7, 4, 8 さらに、プログラムは偽のポリグロットでなければなりません。これは次のことを意味します。これは、他のプログラミング言語で有効なプログラムであるL」、及び各入力に対して1≤N≤10(テストケース上)、それの適切約数の和を返しnは、いくつか存在する11≤N≤10 000れます正しい結果を返しません。誤ったものを返したり、永久にループしたり、クラッシュしたりする場合があります。n≥11のすべて、またはそれらの一部または1つに対して誤った結果を与える可能性があります。 ルールとスコアリング 完全なプログラムまたは関数を作成でき、2つの言語で異なる入出力手段を使用できます。最も低いバイトカウントが優先されます。標準のコードゴルフ規則が適用されます。この課題では、言語のさまざまなメジャーバージョンまたは実装が個別と見なされます。 非ASCIIエンコードを使用したプログラミング言語を使用する場合(多くの場合このサイトで使用しているように)、両方の言語に同じバイトシーケンスを使用する必要があることに注意してください。つまり、潜在的に異なるコードページ間で変換するか、マルチバイトUnicode文字のペナルティを受ける必要があります。 追加のテストケース 20 -> 22 36 -> 55 180 -> 366 997 -> 1 2875 -> 869 10000 -> 14211

30
確実に壊れたソート
少なくとも3つの個別のエントリを含む正の整数のリストが与えられた場合、昇順または降順でソートされていないそのリストの順列を出力します。 例 1,2,3 -> 2,1,3 or 3,1,2 or 1,3,2 or 2,3,1 1,2,3,3 -> 2,1,3,3 or 3,1,2,3 or 1,3,2,3 etc.. タイトルをありがとう@Arnauldと@NoOneIsHere!

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