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

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

6
眠りに落ちる羊を数える
ほとんどの人は、羊が眠りにつくのを数えようとすることを知っています。羊の群れがいて、そのうちのいくつかはフェンスを飛び越えており、あなたは彼らがジャンプするときに羊を数えます。おそらく、これはあなたの心を静め、眠りに落ちるようにあなたを睡眠のような状態にするのに役立ちます。 カウントされるのを待っている、右向きのASCII羊です。 '00^> || ASCII羊がフェンスを飛び越えています: '00^> /\ ++ すでに数えられている、左向きの1つを次に示します。 <^00' || チャレンジ 2つの入力整数、nおよびが与えられ、合計の羊の数mをn > 2記述し、m > 0すでに数えられた羊の数を言って、眠りに落ちる羊を数えるASCIIアート表現を出力します。 ツイストのために: 羊がいるペンの大きさにより、一番上の列には最大数の10羊しか収容できず、常に一番上の列にいる必要がある現在ジャンプしている羊は数えられません。 後続の行では、それぞれのペンの外側に羊を置くことはできません(2番目の行の左側に1番目の行よりも多くの羊を置くことはできません。右側にも同じ羊を置くことはできません)。 11羊の総数が1匹以上ある場合は、一番上の行に10プラスのジャンプ羊が必要です。 前後の空白、および羊の間の空白は問題ではありません。 羊の間には少なくとも1つの空白文字があります すべてのキャラクターが適切に並んでいます。 これらのルールが満たされている限り、羊の実際の配置は実装次第です。 例 たとえば、ここにとがn=3ありm=1、これが最も単純なケースです。 '00^> '00^> /\ <^00' || ++ || これはとでn=11、m=61本の水平線に収まる最も羊です。 '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00' <^00' <^00' <^00' <^00' || || || …

6
菱形シーケンス
成長する菱形の要素を列挙することを想像してください[1],[1,3,1],[1,3,5,3,1],…(うまく整列するような奇数のみ)。これは次のようになります。常に列挙を開始することに注意してください1。 01 1 02 03 04 1 2 3 4 05 06 07 08 09 … 5 10 11 12 13 (1) (1,3,1) (1,3,5,3,1) (1,3,5,7,5,3,1) … カラムの合計を開始すると[1],[2],[1,3,5],[4],[5],[2,6,10],…、菱形のシーケンスが得られます。これらは、シーケンスの最初の100要素です。 1,2,9,4,5,18,35,24,9,10,33,60,91,70,45,16,17,54,95,140,189,154,115,72,25,26,81,140,203,270,341,288,231,170,105,36,37,114,195,280,369,462,559,484,405,322,235,144,49,50,153,260,371,486,605,728,855,754,649,540,427,310,189,64,65,198,335,476,621,770,923,1080,1241,1110,975,836,693,546,395,240,81,82,249,420,595,774,957,1144,1335,1530,1729,1564,1395,1222,1045,864,679,490,297,100 IO 次の3つの入出力メソッドのいずれかを自由に選択できます(無効な入力を処理する必要はありません)。 整数nを指定すると、そのシーケンスのn番目の要素が出力されます(0インデックスまたは1インデックス、選択) 整数nが与えられた場合、そのシーケンスの最初のn個の要素 シーケンスを無制限に印刷/返す テストケース 上記の最初の100の用語を参照してください。ここにいくつかの大きな例を示します(1-indexed): 101 -> 101 443 -> 1329 1000 -> 49000 1984 -> 164672 2017 -> 34289 …

4
バランスのとれた三値論理
バランスのとれた三値論理 三項は通常言うことですベース3、のために別の名前であり、各桁がある0、1または2、それぞれの場所は次の場所と同じくらいの3倍の価値があります。 バランスの取れた三元は-1、0およびの数字を使用する三元の修正です1。これには、サインが必要ないという利点があります。各場所には、次の場所の3倍の価値があります。最初のいくつかの正の整数であり、したがって[1]、[1, -1]、[1, 0]、[1, 1]、[1, -1, -1]最初のいくつかの負の整数であるが[-1]、[-1, 1]、[-1, 0]、[-1, -1]、[-1, 1, 1]。 3つの入力がありx, y, zます。zいずれかである-1、0または1、しばらくxしてyから可能-3812798742493に3812798742493包括的。 最初のステップでは、変換することであるxとy小数から平衡三します。これにより、27個のトリット(TeRnary digITS)が得られます。あなたは、その後からトリットを結合する必要があるxとy三項演算を使用してペアにして、結果バックは、小数点に変換します。 zこれら3つの3項演算のそれぞれにマップする値を選択できます。 A:2つのトリットが与えられ、どちらかがゼロの場合、結果はゼロになります。それ以外の場合、結果は異なる場合は-1、同じ場合は1です。 B:2つのトリットが与えられ、どちらかがゼロの場合、結果は他のトリットです。そうでない場合、結果が異なる場合はゼロ、同じ場合は否定になります。 C:2つのトリットが与えられた場合、結果が異なる場合は結果はゼロになり、同じ場合は値はゼロになります。 例。仮定しxている29とyあります15。バランスの取れた三元で、これらはなる[1, 0, 1, -1]と[1, -1, -1, 0]。(残りの23個のゼロのトリットは、簡潔にするために省略されています。)それぞれの操作の後に、それらはA:[1, 0, -1, 0]、B:[-1, -1, 0, -1]、C:になり[1, 0, 0, 0]ます。結果を10進数に変換バックがあり24、-37そして27それぞれ。その他の例については、次のリファレンス実装を試してください。 コードスニペットを表示 function reference(xd, yd, zd) { var rd = 0; var p3 …

12
0000-01-01から99999-12-31までの回文のプライム日付をすべてリストします
回文、プライム、日付が何であるかを知っています。 あなたの仕事は、3つの特性すべてを満たす10万年のすべての日付をリストすることです。 数字以外は気にせず、次の形式を使用します:YYYYMMDDおよびYYYYYMMDD。 0000-01-01から9999-12-31 までの日付は8桁の回文日付(ある場合)として印刷し、10000-01-01から99999-12-31までの日付は9桁の回文日付として印刷する必要があります。 日付を時系列にリストすることは必須ではありません。 有効な出力の一部の例。 最初の3つの9桁の主回文日付: ... 100111001 100131001 100161001 ... ルール 標準の抜け穴が適用されます。

4
デコードファクターツリー
ファクターツリーのエンコードに失敗した場合のファクターツリーの定義は次のとおりです。 空の文字列は1です。 連結は乗算を表します。 括弧(またはペア文字)で囲まれた数値nは、n番目の素数を表し、2が最初の素数です。 これは再帰的に行われることに注意してください。n番目の素数は、括弧内のnの因子ツリーです。 数値の因子は、最小から最大の順に並べる必要があります。 たとえば、2〜10の因子ツリーを次に示します。 () (()) ()() ((())) ()(()) (()()) ()()() (())(()) ()((())) この課題では同様の形式を使用します。ただし、この課題はこれらの構造をデコードすることです。 テストケース 臆面もなく盗まは、 再利用、最後のチャレンジから。 上記9に加えて… ()()((()))((())) => 100 (()(()(()))) => 101 (()())(((())))(()(())) => 1001 (((((((()))))))) => 5381 (()())((((()))))(()()(())(())) => 32767 ()()()()()()()()()()()()()()() => 32768 ルール 入力内のペアの文字は、かっこ、角かっこ、中かっこ、または山かっこから選択します。質問があれば、他の形式(XMLタグなど)を許可する場合があります。 2から2 15または32768 までの任意の数の因子ツリーを処理できるはずです。 これはcode-golfであるため、バイト単位の最短回答が優先されます。

5
プライム「n」桁
これには実用的な目的はありませんが、ゴルフは楽しいかもしれません。 チャレンジ 数nが与えられると、 nの各桁の量をカウントし、各カウントに1を加算します nの素因数分解を行う 重複する素数を含めずに、nの素因数分解の各桁の量を数える 手順1と3のリストのそれぞれの要素を乗算して、新しいリストを作成します そのリストの合計を返します たとえば、121には2つ1のsとa 2があるため、手順1から次のリストを取得します。 0 1 2 3 4 5 6 7 8 9 1 3 2 1 1 1 1 1 1 1 121の素因数分解は11 2で、ステップ3の次のリストを示します。 0 1 2 3 4 5 6 7 8 9 0 2 0 0 0 0 0 0 …

8
行列の固有値
正方行列が与えられた場合、行列の固有値を出力します。各固有値は、その代数多重度に等しい回数だけ繰り返される必要があります。 行列の固有値は、いくつかの列ベクトルに対して、などのAスカラー値です。これらは、次の特性多項式の解でもあります(は、と同じ次元の単位行列です)。λvA*v = λ*vAdet(A - λ*I) = 0IA 出力は、有効数字3桁まで正確でなければなりません。すべての入力と出力は、選択した言語の表現可能な数値範囲内にあります。 組み込みは許容されますが、組み込みを使用しないソリューションを含めることをお勧めします。 テストケース これらのテストケースでIは、虚数単位を表します。複素数はの形式で記述されa + b*Iます。すべての出力の有効桁数は3桁です。 [[42.0]] -> [42.0] [[1.0, 0.0], [0.0, 1.0]] -> [1.00, 1.00] [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]] -> [16.1, -1.12, -1.24e-15] [[1.2, 3.4, 5.6, 7.8], [6.3, 0.9, -5.4, -2.3], [-12.0, -9.7, 7.3, 5.9], [-2.5, …

20
Sumacシーケンスの長さ[終了]
閉じた。この質問には、詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 2年前に閉店。 Sumacシーケンスは、t 1およびt 2の2つの整数で始まります。 次の項、t 3、= t 1 -t 2 より一般的には、t n = t n-2 -t n-1 シーケンスは、t n <0のときに終了します。 あなたの課題:Sumacシーケンスの長さをt 1およびt 2から印刷するプログラムまたは関数を作成します。 t 1およびt 2は、使用言語の範囲内の整数です。 標準の抜け穴が適用されます。 テストケース t1 t2 sumac_len(t1,t2) 120 71 5 101 42 3 500 499 4 387 1 3 ボーナス通りの信用: 3 -128 1 -314 …

4
ヤコビ法による行列方程式の解法(改訂版)
数学的背景 AをN×Nの実数行列、Nの実数のbaベクトル、xaのベクトルNの未知の実数とします。行列方程式はAx = bです。 ヤコビの方法は次のとおりです。A= D + Rを分解します。ここで、Dは対角行列で、Rは残りのエントリです。 初期推測解x0を作成する場合、改善された解はx1 = inverse(D)*(b-Rx)です。ここで、すべての乗算は行列ベクトル乗算で、inverse(D)は逆行列です。 問題の仕様 入力:完全なプログラムは、次のデータを入力として受け入れる必要があります:行列A、ベクトルb、初期推測x0、および 'エラー'数e。 出力:プログラムは、最新のソリューションが実際のソリューションと最大でe異なるように、最小の反復回数を出力する必要があります。これは、絶対的な大きさのベクトルの各成分が最大でe異なることを意味します。反復にはJacobiの方法を使用する必要があります。 データの入力方法は選択できます。コマンドラインでの独自の構文である可能性があります。ファイルから入力を選択することができます。 データの出力方法は任意です。ファイルに書き込み、コマンドラインに表示、ASCIIアートなど、人間が読み取り可能なものであれば何でも記述できます。 詳細 真の解決策は与えられません。真の解決策の計算方法は完全にあなた次第です。たとえば、Cramerのルールによって解決することも、逆関数を直接計算することもできます。重要なのは、反復と比較できる真のソリューションがあることです。 精度が問題です。一部の人々の比較のための「正確な解決策」は異なる場合があります。このゴルフの目的のために、正確な解は小数点以下10桁まで正確でなければなりません。 明確にするために、現在の反復ソリューションの1つのコンポーネントでさえ、真のソリューションの対応するコンポーネントをeだけ超えている場合は、繰り返し続ける必要があります。 Nの上限は、使用しているハードウェアと、プログラムの実行に費やす時間によって異なります。このコードゴルフでは、最大N = 50を想定しています。 前提条件 プログラムが呼び出されたとき、次のことが常に成り立つと考えることができます。 N> 1およびN <51。つまり、スカラー方程式は与えられず、常に行列方程式が与えられます。 すべての入力は実数のフィールド上にあり、決して複雑になることはありません。 行列Aは常にメソッドが真の解に収束するようなものであるため、e以下のエラー(上記で定義)を最小化するための反復回数を常に見つけることができます。 Aはゼロ行列でも恒等行列でもありません。つまり、1つの解があります。 テストケース A = ((9, -2), (1, 3)), b = (3,4), x0 = (1,1), e = 0.04 真の解決策は(0.586、1.138)です。最初の反復では、x1 =(5/9、1)が得られます。これは、真の解と0.04以上、少なくとも1つのコンポーネントが異なります。別の反復を行うと、x2 …

30
Odd'em out:手紙
目的 ランダムサイズのマトリックス内の奇数文字を整理して返すプログラムまたは関数(または同等のもの)を作成します。 詳細 このようなランダムな次元の入力として(文字列として)マトリックスが渡されます。 bbbbbbbbbb bbbbbdbbbb bbbbbbbbbb bbbbbbbbbb bbbbbbbbbb あなたの仕事は、残りと一致しない文字(この場合、d2行目、6桁目)を見つけ、その文字を出力として返すことです。マトリックスは、文字で構成されますA-Z、a-z、改行(\n、行のみの両端に)及び5×5から10×10までの範囲の大きさ(25〜100文字)を有します。 標準の抜け穴が適用されます。これはコードゴルフチャレンジです。最小バイトのコードを持つエントリが優先されます。 入力 入力は、プログラムの場合は文字列として、または関数(または同様の)の場合は引数として標準入力を介して渡されます。 出力 行列の「奇数」である単一の文字か None、nil、NUL、または文字列"None"なし「奇数」の文字が存在しない場合。 その他の例 AAAAAAA AAAAAAA AAAAAAA AAAIAAA AAAAAAA 回答: I vvqvvvvvvv vvvvvvvvvv vvvvvvvvvv vvvvvvvvvv vvvvvvvvvv 回答: q ぷうuuuuuuuu ううううううううう ううううううううう ううううううううう ううううううううう ううううううううう ううううううううう ううううううううう ううううううううう ううううううううう 回答: p 発生器 Pythonで作成されたランダムマトリックスジェネレーターは、プログラムのテストに使用できます。注:ミスをして、奇妙な文字を入力しない可能性がわずかにあります。 コードスニペットを表示 Instructions 1. Copy this …

2
Minecraft Inventory Management
Minecraftの在庫管理は困難です。17個のダイヤモンドがありますが、エンチャントテーブル、つるはし、剣を作るには7個必要です。それらを拾って右クリックを7回しますか?または、右クリックして2回、右クリックして7を左に移動しますか?とても混乱しています! 今混乱しているあなたのために、心配しないで、私はそれをすべてすぐに説明します チャレンジ アイテムのスタックのサイズと必要な量を考慮して、その量を得るための最小クリック数を決定します。両方の入力に対して最大64を処理するだけでよく、無限のインベントリスロットがあると仮定できます。ドラッグして配布するトリックは使用できません。 定義 在庫はあなたがアイテムを格納することができ、スロットのコレクションです。 スロットは、あなたがアイテムの1種類にまで置くことができ、あなたのインベントリ内の記憶領域です。 スタックは、同じグループ内に配置された項目の数です。この課題の目的のために、スタックは単に同じ場所にあるアイテムの集まりです(したがって、stack-sizeは無視してください) カーソルがあなたの先のとがったブツです。そのカーソル。「その上に」アイテムを持つことができます。言い換えれば、スロットをクリックしてアイテムをピックアップした場合、ピックアップしたアイテムは、置くまで「カーソル上」にあります。 仕様書 4つの状況が考えられます。カーソルにアイテムがあるか、カーソルがないか、左クリックまたは右クリックのいずれかです。 カーソル上にアイテムがなく、スロットを左クリックすると、スタック全体が取得されます。 カーソルにアイテムがなく、スロットを右クリックすると、スタックの半分が切り上げられます。 カーソルの上にアイテムがあり、スロットを左クリックすると、すべてのアイテムがそのスロットに配置されます。(すべてのMinecraftプレイヤーは、このチャレンジで64を超えるアイテムを持たず、すべて64スタック可能です。1つのタイプしかないため、アイテムスワップはここでは適用されません) カーソルの上にアイテムがあり、スロットを右クリックすると、そのスロットに1つのアイテムが配置されます。 そのため、スロットで指定されたすべてのアイテム(最初の入力、または2番目。順序を選択できます)で開始し、目的の量(他の入力)をカーソルに入れて終了します。 例を見てみましょう。17個のアイテムから始めて、7個のアイテムが必要だとします。最初に、スタックを右クリックします。つまり、9個をピックアップし、そのスロットに8個あります。次に、もう一度スタックを右クリックすると、1つのアイテムがスロットに戻され、8と9のスロットが残ります。最後に、もう一度右クリックすると7とスロットが10になります。戻ります3(クリック数)。 あなたがアウトクリックゴルフをすることができたら、私に教えてください、私は例を編集します:P テストケース これらは手動で生成されるため、エラーがあるかどうかを教えてください。ジッタークリックで右クリックして在庫管理を行うため、最適な在庫管理の経験がありません:P Given, Desired -> Output 17, 7 -> 3 64, 8 -> 5 63, 8 -> 5 10, 10 -> 1 10, 0 -> 0 # note this case 25, 17 …
11 code-golf  game 

14
番号を展開する
番号を展開する あなたの仕事は、次の方法で0より大きい整数を展開することです。 数値を10進数に分割し、各桁に対して次の規則に従ってリストを生成します。 数字が奇数の場合、リストは数字で始まり、1になります。 数字が偶数の場合、リストは数字で始まり、9まで上がります。 数字が0の場合、リストは空です。 数字の下の奇数のリストと、偶数のリストを書き留めます。次に、列を上揃えにし、各行の数字を収集して整数を作成します。最後の手順として、数字を合計して、数字の拡張を見つけます。 34607に適用される上記のルールの例を次に示します。 9 8 79 68 57 346 7 -> 399 7 -> 3997 -> 9418 2 6 288 6 2886 1 5 177 5 1775 4 66 4 664 3 5 3 53 2 4 2 42 1 1 1 テストケースは次のとおりです。 1: 1 …
11 code-golf  number 

18
一意性からリバースエンジニアリング(強盗のスレッド)
警官のプログラム(o)、バイトカウント(n)およびc使用された一意のバイト数()の出力が与えられると、警官の出力に一致する一意のバイトをn持つバイト長の対応するコードをc見つけますo。 これは強盗スレッドです。ここでクラックしたソリューションを投稿してください。 COPSスレッドはここにあります。 強盗は次のような解決策を投稿する必要があります。 #[Language], `n` Bytes, `c` Unique Bytes (Cracked)[Original Link to Cop Thread] [Solution] (Explanation) ルール プログラムに入力を行うことはできません。 プログラムは少なくとも1バイトを使用する必要がありますが、255バイトを超えることはできません。 出力自体も255バイトに制限されています。 プログラムを複数回実行する場合、出力結果に一貫性が必要です。 提出物が7日以内にクラックされない場合、「安全」とマークすることができます。 安全とマークする場合は、目的のソリューションを投稿し、としてスコア付けしてくださいc*n。 勝ち c*nスコアが最低の割れていない投稿が、警官のスレッドに勝ちます。 最もひびが入った人は誰でも強盗スレッドに勝ち、最も早いひびはタイを壊します。 これは、10の安全な答え、または数週間後に決定されます。 注意事項 あなたが生意気に感じたら、ネタばれタグを使用してユーザーにアルゴリズムを伝えることができます。 注:また、クラックに賛成票を投じることを忘れないでください。それらは通常、印象的な部分です。

13
レーベンシュタイン距離とOEIS(強盗)
これは強盗の投稿です。コップポストはここにあります。 あなたの仕事は整数入力Nを取り、シーケンスOEIS A002942のN番目の数字を出力することです。 シーケンスは、逆向きに書かれた平方数で構成されます。 1, 4, 9, 61, 52, 63, 94, 46, 18, 1, 121, 441, ... 先行ゼロは削除されることに注意してください(100は001ではなく1になります)。これを文字列に連結します(または1つの長い数値が与えられます): 1496152639446181121441 この文字列/番号のN番目の数字を出力します。Nを0インデックス付きまたは1インデックス付きとして選択できます(どちらを選択するかを明記してください)。 テストケース(1-indexed): N = 5, ==> 1 N = 17, ==> 1 <- Important test case! It's not zero. N = 20, ==> 4 N = 78, ==> 0 N = …

6
LaTeXの真理値表
論理関数からの出力のリストを受け入れ、その真理値表のLaTeXコードを出力するプログラムまたは関数を作成します。 入力には小文字のラベルを付けa-z、出力にはのラベルを付けますF。入力リストの長さは常により短くなり2^25ます。つまり、入力数は常に25未満になるため、入力名には小文字のアルファベットを使用できます。 入力 論理関数の出力を表す、n入力の数と2^n2進数の長さのリスト。 出力 その関数の真理値表を生成するLaTeXコード。入力値と出力値は行の中央に配置する必要があります。テーブルヘッダーとその値の間、および入力と出力の間には行が必要であるため、コードは次のようになります。 \begin{tabular}{c * <NUMBER OF INPUTS>|c} <INPUTS>&F\\ \hline <INPUT VECTOR i>&<OUTPUT>\\ \end{tabular} 例 入力: 2 [0, 0, 0, 1] 出力: \begin{tabular}{cc|c} a & b & F \\ \hline 0 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 0 & 0 …
11 code-golf  math 

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