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

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

9
私のサイコロマトリックスの価値はいくらですか?
入力 横に並べられた3x3のサブ行列で構成される空でないバイナリ行列。 仕事 あなたの仕事は、3x3のサブマトリックスの中から有効なサイコロパターン(以下で説明)を識別することです。それぞれの有効なパターンは、対応するサイコロの価値があります。無効なパターンは0の価値があります。 出力 有効なサイコロ値の合計。 サイコロパターン 1 :⎛⎝⎜0、 0、 00、1 、 00、 0、 0⎞⎠⎟3 :⎛⎝⎜1 、0、00、1、 00、 0、 1⎞⎠⎟または ⎛⎝⎜0、 0、10、1、 01 、0、0⎞⎠⎟5 : ⎛⎝⎜1 、0、10、1、 01 、0、1⎞⎠⎟2 : ⎛⎝⎜1 、0、00、 0、 00、 0、1⎞⎠⎟または ⎛⎝⎜0、 0、10、 0、 01 、0、0⎞⎠⎟4 : ⎛⎝⎜1 、0、10、 0、 01 、0、1⎞⎠⎟6 : ⎛⎝⎜1 、0、11 、0、11 …

2
数の連続分数を2倍にする
与えられたタスクはxoutput 2*xです。簡単ですよね!?しかし、キャッチxがあります:(おそらく無限の)継続分数として与えられ、出力は継続分数でなければなりません。入力は、次数が最大2の実代数になることが保証されています。 入力:x。これは、整数部分、プレフィックス、および繰り返し部分の3つの部分に分割されます。整数部分は単一の整数で構成されます。プレフィックスと繰り返し部分は、連続した分数のプレフィックスと繰り返し部分を記述する正の整数の配列(空の場合もあります)です。たとえば、入力(3, [1], [2, 4])は連続分数を表し[3; 1, 2, 4, 2, 4, ...]ます。 繰り返し部分が空の場合、それは有理数を示します。たとえば、を(3, [1, 2], [])表し[3; 1, 2] = 11/3ます。両方の形式の有理数を受け入れる必要があります(つまり(3, [1, 1, 1], [])、これ[3; 1, 1, 1] = 11/3も有効な入力である必要があります)。 出力:入力と同じ形式で、入力の2倍の連続した部分を出力します。出力が合理的であれば、どちらの形式の連続分数も出力できます。答えが正解と同等である限り、それは問題ありません。「圧縮」は必要ないので、無限部分は少し「展開」される可能性が[1; 4, 2, 3, 2, 3...]あります(たとえば、書かれ(1, [4], [2, 3])たり(1, [4, 2, 3], [2, 3]))。すべての答えは正確でなければなりません。 テストケース:正確な形式の列は、便宜上提供されています。 Input Exact Form Output (0, [] …

11
数字の並べ替え
Unicode文字のくぼみの中には、「Number Forms」という名前の(現在の)63文字のUnicodeブロックがあります。 ↊(10)またはↈ(100000)。 あなたの仕事は、このブロック内で割り当てられたUnicode文字のリストが与えられると、各文字の数値でリストをソートするプログラムまたは関数を書くことです。 (ソート可能な)文字と値のリストは、Wikipedia Pageにあります。 自己完結型であるために、ここにコードポイントとその値のリストがあります: Hex Char Value 0x00BC: ¼ = 1/4 or 0.25 0x00BD: ½ = 1/2 or 0.5 0x00BE: ¾ = 3/4 or 0.75 0x2150: ⅐ = 1/7 or 0.142857 0x2151: ⅑ = 1/9 or 0.111111 0x2152: ⅒ = 1/10 or 0.1 0x2153: ⅓ = 1/3 …

14
行列を切り取り、目的の合計を取得します
定義 非負整数の行列と非負整数与えられた場合、を含むすべての行と列を削除する「チョップオフ」関数としてを定義します。k F k M kMMMkkkFkFkF_kMMMkkk 例: M= ⎛⎝⎜⎜⎜619612805854⎞⎠⎟⎟⎟F5(M)= (1620)M=(615128985604)F5(M)=(1260)\begin{align}M=\pmatrix{\color{red}6&\color{red}1&\color{white}{\bbox[red,1pt]{5}}\\1&2&\color{red}8\\\color{red}9&\color{red}8&\color{white}{\bbox[red,1pt]{5}}\\6&0&\color{red}4}\\\\F_5(M)=\pmatrix{1&2\\6&0}\end{align} あなたのタスク MMMとターゲットの合計Sが与えられた場合SSS、タスクは、F_k(M)の残りの要素の合計がSと等しくなるように、kのすべての可能な値を見つけることです。kkkFk(M)Fk(M)F_k(M)SSS 例: 上記の行列MMMとS = 9が与えられた場合S= 9S=9S=9: F = 5 (M)= \ pmatrix {1&2 \\ 6&0}および1 + 2 + 6 + 0 = 9k = 5k=5k=5であるため、k = 5は解です。F5(M)= (1620)F5(M)=(1260)F_5(M)=\pmatrix{1&2\\6&0}1 + 2 + 6 + 0 = 91+2+6+0=91+2+6+0=9 k = 1k=1k=1は、他の唯一の可能なソリューションです:F1(M)= …

20
相手にアクセスできる囚人のジレンマ
この課題では、囚人のジレンマを演じるボットを作成します。キャッチは次のとおりです。以前のゲームの履歴にアクセスすることはできません。代わりに、相手自身にアクセスできます。このバージョンでは、両方のプレイヤーが協力すると+2ポイントを獲得し、両方がディフェクトすると+1ポイントを獲得します。各サブミッションは、それ自体を含む他のすべてのサブミッションに対して10回プレイされます。勝者は、合計ポイントが最も多い提出物です。 コントローラー:JavaScript関数を次の形式で作成する必要があります function submissionName(them) { /* Your code here */ } コントローラーは関数のnameプロパティを使用して結果を表示します。したがって、この形式ではない場合(f = x => ...または代わりにまたはf = function() { ... })、スコアを確認することは難しく、独自の関数にアクセスすることはできません。 この関数は、1つのパラメーターを受け入れます。themこれは、相手の関数です。次に、その関数を呼び出して、特定の関数が入力として与えられる相手の反応を確認します。そのデータに基づいて、協力または欠陥に対してそれぞれ「C」または「D」を返さなければなりません。 例(競合します): function cooperate(them) { return 'C'; } function defect(them) { return 'D'; } function nice(them) { // Do whatever they would do when faced with a cooperator return …

30
多重度テスト
プログラミング言語を使用して、1〜99の数字(両方を含む)を次のように表示します。 数字は単一のスペースで区切られています。 数値が3で割り切れる場合は、括弧で囲む必要があります。 数値が4で割り切れる場合は、角括弧で囲む必要があります。 数値が3と4の両方で割り切れる場合は、括弧と角括弧の両方で囲む必要があります(角括弧は数字に近い)。 プログラムは正確に表示する必要があります。 1 2 (3) [4] 5 (6) 7 [8] (9) 10 11 ([12]) 13 14 (15) [16] 17 (18) 19 [20] (21) 22 23 ([24]) 25 26 (27) [28] 29 (30) 31 [32] (33) 34 35 ([36]) 37 38 (39) [40] 41 (42) 43 [44] …

26
デジタルサモリアル
入力が与えられた場合、すべてのベース1からのnデジタル和の合計を出力/返すプログラムまたは関数を記述nしnます。 n+∑b=2n∑i=0∞⌊nbi⌋modbn+∑b=2n∑i=0∞⌊nbi⌋modbn + \sum_{b=2}^n \sum_{i=0}^\infty \left\lfloor \frac{n}{b^i} \right\rfloor \bmod b 例: n = 5 範囲を作成します[1...n]。[1,2,3,4,5] 各要素xに対して、次の基本x桁の配列を取得しますn。 [[1,1,1,1,1],[1,0,1],[1,2],[1,1],[1,0]] 全単射な塩基1の5 IS[1,1,1,1,1] のベース2(バイナリ)5 は[1,0,1] な塩基3の5 IS[1,2] な塩基4の5 IS[1,1] な塩基5の5 IS[1,0] 数字を合計します。 13 テストケース: 1 1 2 3 3 6 4 8 5 13 6 16 7 23 8 25 9 30 10 35 …

14
これはBSTの先行予約の走査ですか?
バックグラウンド バイナリツリーは、そのすべてのノード最大2人の子供に持ってルート権限を取得し、ツリーです。 標識された二分木は、そのすべてのノードは正の整数で標識された二分木です。さらに、すべてのラベルは区別されます。 BST(バイナリ検索ツリー)は、各ノードのラベルは、その左の部分木のすべてのノードのラベルよりも大きく、その右サブツリーの全てのノードのラベルよりも小さくなっている標識された二分木です。たとえば、次はBSTです。 ラベル付きバイナリツリーの事前順序走査は、次の擬似コードによって定義されます。 function preorder(node) if node is null then return else print(node.label) preorder(node.left) preorder(node.right) より良い直観を得るには、次の画像を参照してください。 このバイナリツリーの頂点は、次の順序で印刷されます。 F, B, A, D, C, E, G, I, H BSTについての詳細はこちら、先行予約の走査についての詳細はこちらをご覧ください。 チャレンジ 整数のリストを考えると、あなたのタスクは、その正確プリオーダートラバーサルプリントBSTがあるかどうかを決定することです。aaaaaa 入力 明確な正の整数aの空でないリスト。aaa オプションで、aaaの長さ。 出力 truthyの値があれば、いくつかのBSTのプリオーダートラバーサルです。aaa falseyのそれ以外の値。 ルール 有効な提出、I / O、抜け穴の標準ルールが適用されます。 これはcode-golfであるため、最短のソリューション(バイト単位)が優先されます。いつものように、ゴルフ言語のとてつもなく短い解決策で、選択した言語で長い回答を投稿することを妨げないでください。 これはルールではありませんが、ソリューションをテストするためのリンクとそれがどのように機能するかの説明が含まれていれば、あなたの答えはよりよく受け取られます。 例 Input ----> Output [1] ----> True …

13
これはストレートフラッシュですか?
関連:ポーカーハンドに名前を付ける ストレートフラッシュとは、同じスーツのシーケンシャルランクのカードが5枚入っているポーカーハンドです。ストレートフラッシュの一部として、エースはキングより上または2より下にランクできます。エースは高いランク(例:A♥K♥Q♥J♥10♥はエースハイストレートフラッシュ)またはロー(例:5♦4♦3♦2♦A♦は5ハイストレートフラッシュ)ですが、同じ手でハイとローの両方をランク付けすることはできません(例:Q♣K♣A♣2♣3♣はストレートフラッシュではなくエースハイフラッシュです)。 チャレンジ Nポーカーハンドにストレートフラッシュが含まれている場合、与えられたカード(合理的な形式)は真実の値を出力します。 入力 Nカードの数。(合理的な形式で) 4つのスーツがあります。ハート、スペード、ダイヤモンド、クラブ(H, S, D, C)。 各スーツには、2〜10の数字用のカードが1枚と、「絵」カード、エース、ジャック、クイーン、キングの4枚があります。 (A, J, Q, K) 注:Tとして10を使用できます 出力 Truthy/Falsy 値 テストケース ["AS", "2S", "3S", "4S", "5S"] => true ["3D", "9C", "4S", "KH", "AD", "AC"] => false ["5D", "6D", "7D", "8H", "9D", "10D", "JD"] => false ["JC", "7C", "5D", "8C", "AC", "10C", …

1
ローグライクパスファインディング
ローグライクパスファインディング あなたのタスクは、ダンジョンを表す以下に説明する要素の2次元配列を与えられ、怪物を起こさずにローグが収集できる金貨の量を表す単一の数値を出力または返すことです。 配列の要素は次のとおりです。 空のスペースは.、コールのいずれかまたはスペースで表されます。 Rogueの開始位置は、もちろん次のように表され@ます。 金色のピースは$; で表されます。 壁はで表され#ます。 モンスターは、次の正規表現の文字で表されます[a-zA-Z*&]。 配列には上記以外の文字が含まれてはならないため、壁、空きスペース、ならず者、または金のピース以外のものはすべてモンスターであると想定できます。 経路探索のルールは次のとおりです。 悪党は空のセルまたは金を含むセルのみを通過できます。 隣接するセルまたは斜めに隣接するセルに移動するにはターンが必要です。 金を手に入れるのは瞬時です。 ならず者は目を覚ますことなく、モンスターに1ターン以上隣接したり斜めに隣接したりすることはできません。 ならず者は何回でもモンスターの認識エリアに入ることができ、モンスターは近くで2 ターン連続してモンスターを目覚めさせます。 入出力規則 入力は、2次元配列、フラット配列、文字列など、あらゆる妥当な形式で取得できます。作業が楽になる場合は、配列の次元も取得できます。 不正は最初はモンスターの近くにいないことが保証されています。 完全なプログラムまたは機能は問題ありません。 得点 これはcode-golfであり、スコアは提出物のバイト数であり、少ないほうが良いです。 テストケース 読みやすくするために、ここでは空のスペースにドットを使用しています。スペースを使用したい場合は、上記を参照してください。また、これは不正が常に左上隅にあるという単なる偶然の一致であり、コードは他の有効な位置も処理する必要があることに注意してください。 1) @.. .$. ... -> 1 ただ健全性テスト。 2) @.... ...g$ ..... -> 0 再び、健全性テスト。 3) @.... ...$g ..... -> 1 悪党は左から入ることで金をつかむことができます。 4) @....g.. .......$ ........ …

2
整数線形計画法
前書き 整数線形計画法のソルバーを記述します。 チャレンジ あなたの仕事は整数線形計画法(ILP)のソルバーを書くことです。ILPでは、一連の未知数(すべて整数)の線形不等式が与えられ、目標は線形関数の最小または最大を見つけることです。 たとえば、不等式の場合(混合整数線形計画法からの例) 4x+2y-15≤0 x+2y- 8≤0 x+ y- 5≤0 - x ≤0 - y ≤0 目的関数3x+2y、目的関数の最大値は12(x=2,y=3)で、最小値は0(x=y=0)でなければなりません。 入力は2D配列(または標準仕様に準拠する任意の同等物)として与えられ、各行は最終行を除く1つの不等式に対応します。配列内の数字は係数であり、その≤0部分は常に省略されます。n各行に要素がある場合、n-1未知の要素があることを意味します。 配列の最後の行は、線形関数に対応しています。係数がリストされます。 たとえば、上記の問題の入力配列は次のとおりです。 [[4,2,-15],[1,2,-8],[1,1,-5],[-1,0,0],[0,-1,0],[3,2,0]]. 出力は、適切な形式で指定された最小値と最大値である必要があります。 次の問題の場合(上記の問題から2つの制限が取り除かれます): [[4,2,-15],[1,2,-8],[1,1,-5],[3,2,0]]. 最大値はまだ12ですが、最小値は存在せず、目的関数は任意の大きな(絶対値の意味で)負の値を持つことができます。この場合、プログラムは12、回答者が決定した偽の値に従ってを出力する必要があります。別のケースは、解決策がまったくないことです。たとえば、 [[4,2,-15],[-1,-2,7],[-1,0,3],[0,1,0],[3,2,0]]. この場合、偽の値も出力する必要があります。目的関数の「最適値」が無限である場合と、解がまったくない場合を識別するのは良いことですが、これは必要ではありません。 入力には、不等式と目的関数の両方の整数係数のみが含まれます。未知数もすべて整数です。不等式の係数行列は、完全なランクを持つことが保証されています。 テストケース @KirillLの功績。元のテストスイートでバグを見つけ、ILPの問題についての理解を深めてくれました。 Input Output [[4,2,-15],[1,2,-8],[1,1,-5],[-1,0,0],[0,-1,0],[3,2,1]] [1,13] [[4,2,-15],[1,2,-8],[1,1,-5],[3,2,0]] [-inf, 12] [[4,2,-15],[-1,-2,7],[-1,0,3],[0,1,0],[3,2,0]] [NaN, NaN] [[-1,-1,-1,-1,-1,8],[1,1,1,1,0,0],[5,5,5,5,6,7]] [55, inf] [[-1,-1,-1,-1,-1,8],[1,1,1,1,0,0],[0,0,0,0,0,4]] [4, 4] [[4,2,-15],[-1,-2,7],[-1,0,3],[0,1,0],[0,0,4]] [NaN, NaN] …

16
間隔表記
チャレンジ: 入力: 2つの整数パラメーターaとb(ただしa<b、差は少なくとも2) 出力: 出力またはこのテキスト、返すaとbに充填されました: (a,b) = ]a,b[ = {a<x<b} = {a<x&&x<b} = a+1..b-1 [a,b) = [a,b[ = {a<=x<b} = {a<=x&&x<b} = a..b-1 (a,b] = ]a,b] = {a<x<=b} = {a<x&&x<=b} = a+1..b [a,b] = [a,b] = {a<=x<=b} = {a<=x&&x<=b} = a..b チャレンジルール: I / Oは柔軟です。STDOUTに出力でき、文字列/文字配列などとして返されます。2つの整数、10進数、文字列として入力できます(a+1and を計算する必要があるのでわかりませんb-1が、私のゲストになります)。 任意の長さの先頭および/または末尾の改行が許可され、各行の末尾および/または先頭のスペースが許可されます。 等号のスペース(同じ列に配置するスペースを含む)は必須であり、他の文字間のスペースは許可されません。 a+1そしてb-1これらの計算の後に正しい値に置き換えられます。 の≤代わりに使用することはできません<=。 …

8
列に一意の文字が含まれるFizz Buzz
レーンのDigitsと1、2、Fizz、4、Buzzに触発 前書き あなたの仕事は、正確に次の出力を生成することです。 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz 46 47 …

20
リバースレンジサクセサ
正の整数nを指定して、次の操作を実行します(すべてのステージを出力します)。 のnコピーを含むリストから始めnます。 次のn時間を実行します。 でi目のステップ、徐々にデクリメントiそれが到達するまで、リストの番目のエントリをi 与えられたがあれば、例えば、nある4、あなたはで始まり[4,4,4,4]、あなたが持っている最初のステップで、その後、および[3,4,4,4]、[2,4,4,4]、[1,4,4,4]。2番目のステップでは[1,3,4,4]、があり[1,2,4,4]ます。3番目のステップでがあり[1,2,3,4]ます。4番目のステップでは何も行われません。 したがって、出力は[[4,4,4,4],[3,4,4,4],[2,4,4,4],[1,4,4,4],[1,3,4,4],[1,2,4,4],[1,2,3,4]]です。 合理的な入力/出力形式はすべて許可されます。 標準の抜け穴が適用されます。これはコードゴルフです。バイト数が最小の答えが勝ちです。 チェック用のPython実装。

11
フルーツ袋詰め工場
あなたの使命は、コンベヤーベルトから袋に果物を詰めて小売業者に送ることを最適化し、最大数の袋を最適化できるアルゴリズム(プログラムまたは機能)を構築することです。 各バッグには少なくとも一定量の重量が必要ですが、その重量を使用して別のバッグを満たすことができるため、超過分は利益を失います。袋詰め機は常にnキューからの果物を先読みしnており、処理中の(単一の)袋にこれらの果物のいずれかを追加することのみを選択できます。nキューの最初の要素を超えて見ることはできません。プログラムは、バッグの中にすでにある重量を常に正確に知っています。 これを視覚化するもう1つの方法はn、新しい果物が到着する前に果物を採取する必要がある場所に、最終的なサイズの積載エリアを備えたコンベアベルトを用意することです。最後に残った果物と満杯でない袋は廃棄されます。 入力 キュー内の果物の重量のリスト/配列(正の整数) バッグの最小総重量(正の整数) 先読みn(正の整数) 出力 アルゴリズムは、すべてのバッグについて、その中の果物の重さを返す必要があります。それは、あなたやあなたの言語にとって便利な手段であれば、その標準入力でも戻り値でもなんでもです。プログラムを実行して、コンピューターで1分でスコアを計算できるはずです。 例 Total weight 1000, lookahead of 3 and fruit queue: [171,163,172,196,156,175,162,176,155,182,189,142,161,160,152,162,174,172,191,185] One possible output (indented to show how the lookahead affects the bagging): [171,163,172, 156,175, 176] [162, 155,182,189, 161,160] [152,162,174,172,191,185] 得点 アルゴリズムは、私が用意した10000個のオレンジのバッチで、両端を含む2〜7の先読みで6回実行してテストされます。少なくとも1000ユニットの袋に詰めてください。オレンジは通常、平均重量170、標準偏差13で分布しています。 スコアは、6回の実行からのバッグの数の合計になります。最高のスコアが勝ちます。標準の抜け穴は許可されていません。 Haskellの簡単な実装例とテストスイートの定型文

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