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

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

19
極大値の抽出
正の整数の配列を指定すると、隣接する要素以上のすべての要素の配列を出力します。ほとんどの要素には、2つの隣接する要素があります。最初と最後の要素は、隣接する要素が1つしかないため、特殊なケースです。 配列には少なくとも2つの要素が含まれていると想定できます。 テストケース: Input | Output [4,2,6,12,4,5,4,3] | [4,12,5] [1,2] | [2] [1,2,3,2,1] | [3] [3,2,1,2,3] | [3,3] [4,4] | [4,4] [2,4,4,4,1] | [4,4,4] [2,3,3,4] | [3,4] [4,3,3,4] | [4,4] これはcode-golfで、最短のコードが勝ちます!

12
このポリゴンの面積は?
多角形の面積を計算します。 この靴ひもアルゴリズムのビデオに触発されました。 仕事 あなたの仕事は、ポリゴンの面積を計算するプログラムまたは関数を作成することです。プログラムまたは関数は、メタのデフォルト定義に従って定義されます。 入力 ポリゴンの各頂点のXおよびY座標を受け取ります。入力は、タプルのリスト([[x1, y1], [x2, y2], etc])、マトリックス、またはフラットリスト([x1, y1, x2, y2, etc])として取得できます。それぞれを含む2つのリストxとy座標も許可されます。頂点には反時計回りの番号が付けられ、最初の頂点は指定された最後の頂点と同じであるため、ポリゴンを閉じます。 必要に応じて、最後の頂点なしで入力を取得できます(各座標を1回だけ受信します)。 ポリゴンのエッジが交差しないと仮定できます。すべての頂点に整数座標があると仮定することもできます。 出力 ポリゴンの面積。すべての標準出力方法が許可されています。ご使用の言語で浮動小数点除算が許可されておらず、解が整数でない場合、分数を返すことができます。分数を必ずしも単純化する必要はないため、返品2/4は許可されます。 受賞基準 最短のコードが勝ちます! テストケース [[4,4],[0,1],[-2,5],[-6,0],[-1,-4],[5,-2],[4,4]] 55 [[1,1],[0,1],[1,0],[1,1]] 0.5 1/2

30
私のオッズから私のオッズを引きます
負でない整数を指定すると、偶数桁の合計と奇数桁の合計の絶対差を返します。 デフォルトのルール 標準の抜け穴が適用されます。 任意の標準入出力方法で入力を取得し、出力を提供できます。 入力は、文字列、整数、または数字のリストとして取得できます。 これはcode-golfなので、すべての言語でバイト単位の最短コードが勝ちます! テストケース 入力〜>出力 0〜> 0(| 0-0 | = 0) 1〜> 1(| 1-0 | = 1) 12〜> 1(| 2-1 | = 1) 333〜> 9(| 0-(3 + 3 + 3)| = 9) 459〜> 10(| 4-(5 + 9)| = 10) 2469〜> 3(|(2 + 4 + 6)-9 | = …

20
対角線を合計する
入力として正の整数の行列を取り、行列を通る対角線上の要素の個々の合計を出力します。 対角線で右下に向かう線のみを数えます。以下に示すように、左下の要素のみを含む対角線から開始し、次にその上の長さ2の対角線(存在する場合)から右上の要素のみを含む対角線まで続けなければなりません。 例: Input: 8 14 5 1 10 5 5 8 6 6 8 10 15 15 4 11 Output: 15, 21, 20, 32, 29, 13, 1 (Diagonals: {{15},{6,15},{10,6,4},{8,5,8,11},{14,5,10},{5,8},{1}}) Input: 1 Output: 1 Input: 1 5 Output: 1, 5 Input: 4 1 Output: 1, 4 Input: 17 4 5 …
19 code-golf  math  matrix 

26
弦の波を作る
入力として文字列を指定すると、次のアルゴリズムが適用された文字列が出力されます。 1. Split the String by " " (find the words): "Hello World" -> ["Hello","World"] 2. Find the vowel count of each component: [2,1] ( ["H[e]ll[o]","W[o]rld"] ) 3. For each of the components, output the first n letter where n is the number of vowels it contains: ["He","W"] 4. Join …
19 code-golf  string 


6
アナグロットポリグラム
仕事 それぞれが1からnまでの異なる数を出力するnの異なる言語で、nの異なるプログラムに再配置できるコードを記述します。 2つの言語が同じであってはなりませんが、メジャーバージョン番号が異なる限り、「同じ言語」の異なるバージョンは異なる言語と見なされます。この課題に対して、REPL環境は親言語と区別されませんが、依然として言語です。各言語は、ソースコードの異なる順列で実行され、範囲内の異なる番号を出力する必要があります。 順列は、文字ではなくバイトでカウントされます。 テスト目的で実行される言語で実行される各順列を含める必要があります。 得点 あなたのスコアは ここで、Nは言語の数、Lはプログラムバイトの一意の順序の数です。 Lはプログラムの長さと等しくありません (プログラムが1または0バイトでない場合) 以下は、Conor O'Brienのご厚意によりLを計算するpythonスクリプトです。 Lは、プログラムに繰り返しバイトがない場合にのみ、プログラムの階乗の長さに等しくなります。 目標は、スコアを最大化することです。

9
プレフィックス表記からポスト表記へ
免責事項:いいえ、これは文字列を逆にするための冗談の挑戦ではありません。 仕事 サポートする操作は、減算(-)だけです。 また、サポートするアトムは2つだけです(ゼロ(0)および1(1))。 ここでは、プレフィックス表記は、-AB後置記法に相当しAB-、AかつB式です。 あなたの仕事は、プレフィックス表記の式を、ポストフィックス表記の同等の式に(再帰的に)変換することです。 定義 プレフィックス表記の式は、次の文法によって生成されます。 S > -SS S > 0 S > 1 後置記法の式は、次の文法によって生成されます。 S > SS- S > 0 S > 1 例 Prefix notation: --01-0-01 Parentheses: -(-01)(-0(-01)) Convert: (01-)(0(01-)-)- Postfix notation: 01-001--- ルールと自由 一貫性がある限り、操作とアトムの名前を任意の文字に変更できます。 入力形式は出力形式と一致している必要があります(入力がプレフィックス表記であり、出力がポストフィックス表記であるという事実は別として)。 テストケース Input Output 1 1 0 0 -01 01- …
19 code-golf  string 

30
デジタルルートの反対!
[アナログルート]とも呼ばれます (デジタルルートの反対!);) 数値のデジタルルートは、1桁になるまでその数字を連続的に合計したものです。たとえば、89456のデジタルルートは次のように計算されます。 8 + 9 + 4 + 5 + 6 = 32 3 + 2 = 5 89456のデジタルルートは5です。 STDINを介して入力として数字を指定すると、そのデジタルルートを持つ可能性のあるすべての2桁の数字を出力/返します。あなたがそれを必要とするなら、それはそれ自身を含めることができます、例えば05 これらはすべて可能な入力と出力です。 (数字自体に先行ゼロを含めるかどうかを選択できます) I / O 0 => 0または00または何もない 1 => 01および/または1、10、19、28、37、46、55、64、73、82、91-1が100を返さないことを確認する 2 => 02および/または2、11、20、29、38、47、56、65、74、83、92 3 => 03および/または3、12、21、30、39、48、57、66、75、84、93 4 => 04および/または4、13、22、31、40、49、58、67、76、85、94 5 => 05および/または5、14、23、32、41、50、59、68、77、86、95 6 => 06および/または6、15、24、33、42、51、60、69、78、87、96 7 => 07および/または7、16、25、34、43、52、61、70、79、88、97 …

30
文字列内の文字の最長実行
あなたの課題:文字列s、文字を受け取り、inのc最長実行の長さを見つける関数を作成します。実行の長さはになります。csl ルール: 場合はs長さが0であるか、c空である、l0にしてください。 cin のインスタンスがない場合、0 sでlなければなりません。 標準の抜け穴と標準のI / Oルールが適用されます。 s sの実行中cの場所に関係lなく、同じである必要があります。 印刷可能なASCII文字は、sとに表示できますc。 テストケース: s,c --> l "Hello, World!",'l' --> 2 "Foobar",'o' --> 2 "abcdef",'e' --> 1 "three spaces",' ' --> 3 "xxx xxxx xx",'x' --> 4 "xxxx xx xxx",'x' --> 4 "",'a' --> 0 "anything",'' --> 0 勝者: コードゴルフと同様に、各言語の最短回答が勝ちます。
19 code-golf  string 

2
これらのリストは同等ですか?
ご存じのとおり、pythonにはリストがあります。知らないかもしれませんが、これらのリストには自分自身を含めることができます。 a = [] a.append(a) Python 2 Python 3 これらはクールで、あなたがそれらでできる面白いことがたくさんありますが、それらを比較することはできません。 a = [] a.append(a) b = [] b.append(b) a == b Python 2 Python 3 仕事 あなたの仕事は、Python(またはpythonオブジェクトを直接処理できる任意の言語)で関数を記述し、それ自体を含む2つのリストを取得して比較することです。 2つのリストが同じ長さであり、番号のシーケンスが存在しない場合、そのシーケンスで両方のリストにインデックスを付けると、2つのオブジェクトは、この等しいという定義の下で等しくなくなります。リストに含まれるすべての非リストオブジェクトは、簡単にするためにPython整数になります。整数のPythonの組み込みの同等性と比較する必要があります。 リストが無限に深いかどうかを判断するために、プログラムは Pythonの再帰の深さに依存してはなりません。あれは: def isInfinite(a,b): try: a==b return False except RunTimeError: return True 2つのリストが自己参照であるかどうかを判断する有効な方法ではありません。 テストケース 関数を定義すると仮定します equal a = [] a.append(a) b = …

20
最初にあなたと一緒に
「force」のすべての出現を「first」に、「first」のすべての出現を「force」に置き換えて、すべての文字位置の元の大文字小文字を保持するプログラムを作成します。 "ForcefoRcefOrcE" -> "FirstfiRstfIrsT" "FirstfiRstfIrsT" -> "ForcefoRcefOrcE" 文字列の残りは変更されないままである必要があるため、プログラムを2回実行すると元の文字列が返されます。 "thirst of forces" -> "thirst of firsts" -> "thirst of forces" プログラムは、任意の初期文字列で動作するはずです。したがって、ヒントとして、中間表現としてマジックキャラクターを使用することは避けた方がよいでしょう。3パス置換("force" -> "zzzzz", "first" -> "force", "zzzzz" -> "first")を試みると、を含む文字列では失敗するから"zzzzz"です。 プログラミング言語によるストリングの定義で許可されているすべての文字をサポートする必要があります(ほとんどの場合、Unicodeです)。例、非印刷文字(\ u + 4桁)にJSONスタイルの表現を使用する: "\u0000\u0001\u0002\u0003the Force of the firsT" | V "\u0000\u0001\u0002\u0003the First of the forcE"
19 code-golf  string 

11
Seventy Seven Sevens
数nと上限のlリストを指定すると、長さが7桁以下で構成される2つ以上の数を乗算することで作成できる数nが未満になりlます。A161145はこの課題に近いですが、7、77、777、7777、77777などは含まれません。 例 n=anything, l<49 結果として: [] n=1, l=49 結果として: 7*7=49 f(1,49)=[49] n=1, l=343 結果として: 7*7 =49 7*7*7 =343 f(1,343)=[49,343] n=2,l=6000 結果として: 7*7 =49 7*7*7 =343 7*7*7*7=2401 7*77 =539 7*7*77 =3773 77*77 =5929 f(2,6000)=[49,343,539,2401,3773,5929] n=3, l=604000 結果として: [49, 343, 539, 2401, 3773, 5439, 5929, 16807, 26411, 38073, 41503, 59829, 117649, 184877, …

6
矛盾するポリグロット
まあ、誰もがポリグロットを愛しています。標準形式の入力(ハードコーディングなし)で2つの整数が与えられます。あなたの仕事は、ある言語の最小値と他の言語の2つの数値の間の最大値を見つけて、次の操作を実行するポリグロットを書くことです。 最大値を見つけるコードは、それらの合計も計算する必要があります。 最小値を見つけるプログラムは、減算の結果も計算する必要があります(max - min) ここに「トリッキーな部分」があります:2つの数値が等しい場合、両方のプログラムは何も出力/返してはなりません(STDOUTおよびSTDERR/または他のreturnメソッドの両方 ) フォーマットの詳細については、出力仕様のセクションをご覧ください 入力 上記のように、両方の言語に共通の標準メソッドで入力として使用される2つの整数。 出力仕様 を見つけるプログラムのmax場合、形式は次のようになります。max_value, addition result を見つけるプログラムのmin場合、形式はmin_value, subtraction result (max - min) 結果は、(任意の明確な区切り文字で、印刷することができ、\n、,または任意の他、あなたが欲しい)、区切り文字で2つの期待値を含む文字列として、または数字(例:のリストとして関数から返さ[max_value,sum]) 例: Input || Max Language Output || Min Language Output 100, 40 || 100, 140 || 40, 60 63, 67 || 67, 130 || 63, 4 -45, -5 || …

30
偽りを半減させる
仕事 所与の非空の配列0と1、のランの長さを半減させます0。 入力 配列0と1。許容される形式: あなたの言語の実際の配列 0およびの改行区切り文字列1 連続した文字列0と1 その他の合理的な形式 たとえば、次の3つの入力はすべて受け入れられます。 [1, 0, 0, 1] "1\n0\n0\n1"(\n改行はU + 000Aです) "1001" のラン0は偶数の長さであると仮定できます。 出力 上記の受け入れ可能な形式の0との配列1。 テストケース input ↦ output [1,0,0,1,0,0,1] ↦ [1,0,1,0,1] [1,1,0,0,1,1,0,0,1] ↦ [1,1,0,1,1,0,1] [1,1,0,0,1,1,1,0,0,1,1] ↦ [1,1,0,1,1,1,0,1,1] [1,1,1] ↦ [1,1,1] [0,0,1] ↦ [0,1] [0,0] ↦ [0] [1,1,1,0,0,0,0,1,1,1,1,0,0,1,0,0,1,1,0,0,1,1,1,1,0,0,1,0,0] ↦ [1,1,1,0,0,1,1,1,1,0,1,0,1,1,0,1,1,1,1,0,1,0] 得点 これはcode-golfです。バイト単位の最短回答が優先されます。 標準の抜け穴が適用されます。

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