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

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

28
配列分解
正の整数の配列が与えられた場合、これらの整数の異なる素因数の安定した配列を出力します。言い換えると、入力の整数ごとに、その素因数を取得し、並べ替え、出力にまだない素数を出力に追加します。 テストケース [1,2,3,4,5,6,7,8,9,10] -> [2,3,5,7] [10,9,8,7,6,5,4,3,2,1] -> [2,5,3,7] [100,99,98,1,2,3,4,5] -> [2,5,3,11,7] [541,60,19,17,22] -> [541,2,3,5,19,17,11] [1,1,2,3,5,8,13,21,34,45] -> [2,3,5,13,7,17] [6,7,6,7,6,7,6,5] -> [2,3,7,5] [1] -> [] [8] -> [2] [] -> [] 出力は、整数または文字列の配列またはリスト、区切られた出力、または番号の順序付きリストを出力するその他の標準手段として使用できます。 これはcode-golfであるため、バイト単位の最短回答が優先されます。

1
ハイドラスレイヤーになる
あなたはこの地域の最高で最も有名なヒーローです。最近、ヒドラが近くの渓谷でぶらぶらしているという噂がありました。あなたがあなたであるという勇敢で高潔なヒーローであることは、あなたが今日いつかそれをチェックアウトすることになると考えています。 ヒドラエの問題は、頭を切り落とそうとするたびに、新しい頭が成長することです。幸いなことに、あなたは一度に複数の頭を切り落とすことができる剣を持っています。しかし、ヒドラがあなたの剣のカットよりも少ない頭を持っている場合、あなたはヒドラを攻撃することはできませんキャッチがあります。ヒドラの頭が正確にゼロになったら、あなたはそれを殺しました。 呼ばれる特殊な剣もあり等分ハイドラの頭の半分を切ったが、ヘッドの数が偶数である場合にのみします。ヘッドの数が奇数の場合、Bisector はまったく使用できません。これは、ゼロヘッドの切断とは異なります。 あなたはヒドラを殺すための最良の方法を見つけるためにコンピュータープログラムを書くことに決めました。 仕事 入力として与えられます Hydraが始まる頭の数 Hydraが毎ターン再生する頭の数 それぞれが使用可能な剣のリスト(それぞれが二等分線であるか、各ターンで一定数の頭を切る) 可能な限り少ないターンでヒドラを殺す動きのリストを出力する必要があります。ヒドラを殺す方法がない場合は、そのことを示す他の値を出力する必要があります(言語が強く入力されている場合は空のリストでも構いません)。ヒドラを殺すための最適な方法が複数ある場合、それらのいずれかまたはすべてを出力できます。 これはコードゴルフの質問なので、回答はバイト単位で記録され、バイト数は少ない方が良いでしょう。 テストケース リクエストにより利用可能 5 heads, 9 each turn, [-1,-2,-5] -> [-5] 12 heads, 1 each turn, [/2,-1] -> No solution 8 heads, 2 each turn, [-9, -1] -> [-1,-9] 3 heads, 23 each turn, [/2,-1,-26] -> [-1,-1,-26,-26,-26,-26,-26,-26,-26,-26] 16 heads, …
13 code-golf  math  game 

5
ランク相関係数
通常の相関係数(2d)は、点の集合が線でどれだけうまく記述できるかを測定し、はいの場合、その符号は正または負の相関があるかどうかを示します。ただし、これは、ポイントの座標が実際に、たとえば測定値として定量的に解釈できることを前提としています。 あなたはしかし、あなたはまだできることを行うことができない場合はご注文の座標を、そこにあるの順位相関係数:それはポイントがによって記述することができますどれだけ測定単調機能。 チャレンジ 2dポイントのリストが与えられたら、それらのランク相関係数を決定します。 詳細 入力は正の整数(ただし、そうする必要はありません)、またはその他の「ソート可能な」値であると想定できます。 ポイントは、ポイントのリスト、またはx座標とy座標の2つのリスト、マトリックスまたは2D配列などとして取得できます。 出力は、0〜1の実数を表す必要があるため、浮動小数点または有理数型である必要があります。 定義 ランク:番号のリストをX=[x(1),...,x(n)]指定するrx(i)と、各エントリにrankと呼ばれる正の数を割り当てることができx(i)ます。そのためには、リストをソートx(i)し、ソートされたリスト内のインデックスを割り当てますrx(i)。2つ以上のx(i)値が同じ場合、対応するすべてのインデックスの算術平均をランクとして使用します。例: List: [21, 10, 10, 25, 3] Indices sorted: [4, 2, 3, 5, 1] 番号10はここに2回表示されます。ソートされたリストでは、インデックス2とを占有します3。それらの算術平均は2.5、ランクが Ranks: [4, 2.5, 2.5, 5, 1] 順位相関係数は:レッツは、[(x(1),y(1)),(x(2),y(2)),...,(x(n),y(n))]与えられたポイントになるところそれぞれx(i)とy(i)実数でそれぞれについて(WLOGは、あなたはそれが整数であると仮定することができます。)i=1,...,n我々は計算のランクを rx(i)とry(i)のx(i)とy(i)それぞれ。 してみましょうd(i) = rx(i)-ry(i)ことがランク差とlet S合計でS = d(1)^2 + d(2)^2 + ... + d(n)^2。そして、順位相関係数は rhoで与えられます rho = 1 - 6 …

5
フォールアウトターミナルハッキング
誰もが頑固なベセスダファンですか?おそらく黒曜石のエンターテイメントを好むでしょうか?さて、あなたがそれらのいずれかであるなら、次の図はあなたに比較的馴染みがあるはずです。 私はかなりユニークなASCII-Artチャレンジを準備する自由を取りましたので、ここで私があなたに何をさせるつもりかについての最初の手がかりがあります: _____________________________________________________ / \ | _____________________________________________ | | | | | | | Welcome to ROBCO Industries (TM) Termlink | | | | Password Required | | | | Attempts Remaining: | | | | | | | | 0x01 | 0x0D | | | | 0x02 | 0x0E …

8
最小タクシー距離マップ
チャレンジの説明 タクシーメトリック、2点間の距離は次のように定義されます。 ゼロと1のみの行列を考えてみましょう: 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 マトリックス内で1最も近い異なる 距離にそれぞれをマッピングしてみましょう1(もちろん、2つの隣接する行/列間の距離が1に等しいと仮定します): 0 0 0 3 0 2 0 0 0 0 0 0 0 0 0 1 0 0 3 0 …

4
この数はフェルマーですか?
フェルマー数は正の整数で、整数xで2 2 x +1 として表現できます。 「Fermat-ness」と呼ばれる番号の属性を定義しましょう。 数のフェルマーネスは、基数から始まり、フェルマーネスを最大化するために2のべき乗が拡張された2のべき乗の長さよりも1つ小さくなります。 フェルマー数ではない数のフェルマーネスはゼロです。 したがって、17(= 2 2 2 2 0 +1)にはフェルマーネス3があります。 チャレンジ 入力として正の非ゼロ整数を与え、数値のフェルマーネスを出力します。 ルール 入力を2進数、10進数、16進数、bignum、またはゴルフに最適な形式で入力できます。 ソリューションは、使用する表現が64を超えるビット長の数値を処理できる必要があります。 非負の整数のべき乗のみ。 もちろん、標準的な抜け穴は禁止されています。 これはcode-golfなので、最短の回答が勝ちます。 テストケース これらはフォーマットですinput->output。入力はスペースを節約するために16進数です。 10000000000000000000000000000000000000000000000000000000000000001 -> 2 1000000000000BC00000000000000000000000000000000001000000000000001 ->0 1234567890ABCDEF -> 0 100000000000000000000000000000001 -> 1 5 -> 2 11 -> 3 10001 -> 4 101 -> 1 10進数で同じ: 115792089237316195423570985008687907853269984665640564039457584007913129639937 …

14
Dottie番号の概算
Dottie番号は余弦関数の固定点である、または方程式の解(X)= X COS。1 あなたの仕事は、この定数に近いコードを作成することです。コードは、整数を入力として受け取り、実数を出力する関数を表す必要があります。入力が増加するときの関数の制限は、ドットの数でなければなりません。 数値の分数、小数、または代数表現として出力できます。出力は任意に正確である必要があり、floatとdoubleはこの課題には不十分です。ご使用の言語が任意の精度の数値に対応していない場合、それらを実装するか、新しい言語を選択する必要があります。 これはコードゴルフの質問なので、回答はバイト単位で記録され、バイト数は少ない方が良いでしょう。 チップ 定数を計算する1つの方法は、任意の数を取り、それに余弦を繰り返し適用することです。アプリケーションの数は無限に向かう傾向があるため、結果はコサインの固定点に向かう傾向があります。 これはかなり正確な数値の近似値です。 0.739085133215161 1:ここでは、ラジアン単位のコサインを取ります

3
道路はいくつの方法で川を渡れますか?
まっすぐな川と、橋をn回川を渡る道路を想像してください。道路はそれ自体でループせず、無限に長くなります。この道路は、曲がりくねった道と見なされます。オープン蛇行は、それ自体と交差しないと線と交差する両端に無限に延び開曲線であるN回。 有効な蛇行は、それが訪れる交差点の順序によって完全に記述される場合があります。 蛇行する可能性があるn 個の交差点を持つ交差点の明確なパターンの数は、n番目の平均数です。たとえば、n = 4 このシーケンスの最初の数は次のとおりです。 1, 1, 1, 2, 3, 8, 14, 42, 81, 262, 538, 1828, 3926, 13820, 30694, 110954... これは、OEISシーケンスA005316です。 チャレンジ 入力として正の整数nを取り、n番目の平均値を出力するプログラム/関数を作成します。 仕様書 標準のI / Oルールが適用されます。 標準的な抜け穴は禁止されています。 ソリューションには0インデックスまたは1インデックスのいずれかを指定できますが、どちらを指定してください。 この課題は、すべての言語で最短のアプローチを見つけることではなく、各言語で最短のアプローチを見つけることです。 あなたのコードがされるバイト数で得点特に指定がない限り、通常はエンコーディングUTF-8で、。 このシーケンスを計算する組み込み関数は許可されますが、組み込みに依存しないソリューションを含めることをお勧めします。 「実用的な」言語であっても説明が奨励されます。 テストケース これらは0インデックスです。言語がデフォルトでできない場合、これほど大きな数字を処理する必要はないことに注意してください。 Input Output 1 1 2 1 11 1828 14 30694 21 73424650 …

1
Pythonのリストの最も一般的な要素
これはPythonでのゴルフのヒントの質問です。これはmainのトピックです。 Pythonのリストの最も一般的な要素をすべて、可能な限り最短で取得するための最短の方法を探しています。リストがと呼ばれる変数にあると仮定して、私が試したものは次のとおりですl: from statistics import* mode(l) 複数のモードがある場合、これはエラーをスローします。 max(l,key=l.count) これは1つのアイテムのみを返します。最大数のすべての要素を取得する必要があります。 from collections import* Counter(l).most_common() これは、(element, count)カウントでソートされたのタプルのリストを返します。これから、対応するカウントが最初のものと等しいすべての要素を引き出すことができましたが、これよりもはるかに良いゴルフをする方法は見当たりません: from collections import* c=Counter(l).most_common() [s for s,i in c if i==c[0][1]] もっと短い方法があると確信しています! また、変数の割り当てやの複数の使用をせずに実行できる場合lは、コードの残りをラムダ式として保持し、より多くのバイトを節約できます。 編集:@Urielの提案に従って、次のことができます。 {s for s in l if l.count(s)==l.count(max(l,key=l.count))} そしてlist.count、数バイトのエイリアスを作成できます。 c=l.count;{s for s in l if c(s)==c(max(l,key=c))} @Urielは、次のようにしてさらに2バイトを取得できることを指摘しましたmap。 c=l.count;{s for s in l …
13 code-golf  tips  python 

7
ポイントで変異した箸KoTH
基本的なルール(私のルールとは異なります) 物語 4579年、人間はそれぞれ1001本の指を持つ2つの手になりました。箸はポイントに基づいています。そして、@ Dennisは@Martinよりも多くの担当者がいます...手描きの赤い丸は今では投票されていません... Jon SkeetはすべてのSEサイトで2兆回の担当者を叩いています...ええ、怖いです 箸は解決されたハンドゲームです。これを回避するために、変異させて作成しました。指の量を増やしました。 ゲームのルール これが演奏される方法 誰もが2つの手で始まります。各手には1001本の指があります。すべての手は上の1(1)指で起動し、それぞれの手。ターン中に、他のプレイヤーの手を「ヒット」できます。ヒットするには、ヒットするハンドを1つ、ヒットするハンドを1つ選択します。ヒットしたハンドには、最初は指の数があり、ヒットした手に持っていた指の数があります。 EX P1: 1,1 P2: 1,1。P1[0]ヒットP2[1]。今指はP1:1,1 P2:1,2です。今P2[1]ヒットp1[0]。指はP1:3,1P2になりました1,2。 片方の手が1001本以上の指に達すると、その手は外に出ます。その後、(自分のターンで)ハンドを手にしたプレイヤーは「スプリット」できます。分割とは、中にある手を取り、指の量を半分に切り上げ(切り上げ)、それらの指をもう一方の手に渡して戻すことです。 EX P1:1000,2P2 7,7。P2[0]ヒットP1[0]。スコアはP1:0,2P2 1,1です。P1[1]彼のターンでスプリットし、スコアはP1:1,1とP2 7,7です。 1人のプレイヤーが両方の手を出したらゲームは終了します。ポイントは、勝者が持っている指の量によって得点されます。ポイントが多いほど良い。敗者はポイントを獲得しません。 使用される他のルールがありますが、これらはここで使用されるものです。 みんながみんなで遊ぶ(ラウンドロビン) 終盤 あなたが勝つすべてのラウンドからあなたのポイントを合計します。次に、全員のポイントを平均します。合計を平均ポイントで割り、最終スコアを取得します。ほとんどのポイントが勝ちます。 実際のルール 標準抜け穴 ゲームを解決しようとしないでください。私は実際にそれを実行できる必要があります:P ボットが高速で実行できることを確認します。ラウンドの長さを判断するにはこれには時間がかかります プログラムに必要なすべてのライブラリは、デフォルトのpythonライブラリに含まれている必要があります。インポートする必要があるものもリストします。輸入はちょうど(数学のために私は:基本的なインポートされますimport math) 回答はPython 3.xで動作する必要があります ハンドラ ボットは、play機能を持つ独自のPython 3ファイルになります。 playそれぞれ2つの数字の2つのリストが渡されます。この数字は、各手に何本の指が上がっているかを示しています。最初のリストは自分の手です。 他のプレイヤーのハンドをヒットすることを選択した場合、2ビットのリストを返します。最初のビットは、ヒットする0ために使用しているハンドのインデックス(最初、1最後)であり、2番目のビットは、相手にヒットしているハンドのインデックスです。 分割することを選択した場合、他の真の値を返します。 多田! コントローラはここにあります。各ボットを独自のファイルに保存し、各ボットのファイル名を(なしで.py)にリストしbotnamesます。 最後のメモ: あなたと他のボットが最初に交代します。ゲームが100,000(10万)ラウンドで終了しない場合、ゲームは終了し、どちらのボットも勝ちません。 コントローラーは、永久に移動することから保護されていませんが、不要なオーバーヘッドは強く眉をひそめます。

16
城の階段を作ってください!
印刷可能なASCII(改行なし)で構成される文字列が与えられます。あなたの仕事は、私の城に素敵な階段を作ることです。 素敵な階段を構築するには? まず、文字列のすべての回転を取得する必要があります。たとえば、文字列abcdには次の回転があります:(abcd, bcda, cdab, dabc各文字は最後の文字に達するまで最後に移動します)。 各回転を互いの上に配置します。 abcd bcda cdab dabc 真っ直ぐな壁には登れないので、階段を作らなければなりません。つまり、ローテーションリストのインデックスに対応する各ローテーションの前にいくつかのスペースを追加する必要があります。 abcd bcda cdab dabc また、私の城の反対側にリンクする階段が必要なので、以下のような階段を作成し、各回転を反転させて間隔を追加する必要があります。 abcd dcba bcda adcb cdab badc dabccbad これはcode-golfであるため、バイト単位の最短コードが優先され、タグの標準ルールが適用されます。 テストケース 入力:abcd、出力: abcd dcba bcda adcb cdab badc dabccbad 入力:aaaa、出力: aaaa aaaa aaaa aaaa aaaa aaaa aaaaaaaa 入力:Code golf、出力(スペースに注意してください): Code golf flog edoC ode golfC …

2
これらの三つ編みは等しいですか?
組紐理論に慣れていない場合は、まずこれを読むことをお勧めします。この質問は、少なくとも手元の概念に精通していること、およびグループ理論に精通していることを前提としています。 私たちは定義できσ nはここで編組あるとN番目のオーバートップ交雑からストランド(インデックス付きつ)+ 1からn番目の鎖、及びσ N -の逆であるとσ Nすなわち(N + 1番目ストランドはn番目のストランドと交差します)。 編組グループB N次いでによって生成された<σ 1、σ 2、σ 3、。。。、σn -1 >。したがって、B nのすべてのブレードは、σ ブレードの積として書くことができます。1 グループの2つのブレードが等しいかどうかを判断するのは簡単な作業ではありません。そのかなり明白であってもよいσ 1 σ 3 =σ 3 σ 1は、それが少し明らかである例えばσ 2 σ 1 σ 2 =σ 1 σ 2 σ 1。2 したがって、質問は「2つのブレードが同じであるかどうかをどのように判断できますか?」です。さて、上記の2つの例はそれぞれこれを少し表しています。一般に、Artinの関係と呼ばれる以下の関係は真です。 σ I σ J =σ jを σ I ; i-j> 1 σ …

2
周期文字列、隠しプログラム
次のタスクを実行する3つのプログラムを作成します。 これら3つのプログラムのソースコードをA、B、Cとしましょう。 AがBCを出力として生成する場合、 BがCAを実行している場合、 CがABを実行する場合。 そのため、各プログラムは文字列(各プログラムで循環)を書き込み、それ自体を隠します。 追加ですが必須の制約: 標準的な抜け穴は禁止されています。 各プログラムは少なくとも1バイトの長さが必要です。 3つのプログラムはそれぞれ異なる言語で作成する必要があります。 あなたの提出物がこの形式を持っているといいでしょう: 言語A(Aのサイズ)-言語B(Bのサイズ)-言語C(Cのサイズ)-スコア A B C <extra stuff> 勝者は、3つのプログラムのサイズの合計である最小スコアを獲得した人です。
13 code-golf  quine 

9
シーザーズシフト
説明 シーザーシフトは非常に単純な単一アルファベット暗号で、アルファベットの各文字がその後の文字に置き換えられます。例: Hello world! -> IFMMP XPSME! (IBSLR, EGUFV!実際のチャレンジの出力です。これは1シフトした例です。) ご覧のとおり、間隔と句読点は調整されていません。ただし、メッセージの推測を防ぐため、すべての文字は大文字です。文字を戻すことで、メッセージは解読され、便利になりましたが、メッセージの意味を知らないはずの人が解読するのも簡単です。 そこで、高度な形式の暗号を使用して、Caesarを少し支援します:Self-shifting Caesar Shift! チャレンジ あなたの仕事は、暗号化する文字列が与えられると、入力に対応する暗号化された文字列を出力するプログラムまたは関数を書くことです。高度なシーザーシフトは次のように機能します。 1. Compute letter differences of all adjacent letters: 1.1. Letter difference is computed like this: Position of 2nd letter in the alphabet -Position of 1st letter in the alphabet ======================================= Letter difference 1.2. Example input: …

10
トリプルバランス番号
説明 3つの部分に分割され、すべての部分の数字が合計されて同じ数になる場合、少なくとも3桁のトリプルバランスの整数を考慮します。次のように番号を分割します。 abcdefghi - Standard case: the number of digits is divisable through 3: abc def ghi abcdefgh - Number % 3 == 2: The outer groups are both assigned another digit abc de fgh (the inner group will have one digit less than both outer groups) abcdefghij - Number …

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