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

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

4
Portmantoutを生成します!
バックグラウンド 3年前、この男のトムマーフィーは、ポートマントーの考えを言語のすべての単語に拡張し、これをポートマントー(portmanteau plus tout [ すべてのフランス語])と呼びました。英語を108,709個の単語のリストとして定義すると、彼は次の2つのプロパティを持つ611,820個の文字のシーケンスを見つけることができました。 すべての英語の単語は文字列に含まれています。 文字列に2つの隣接する文字を含む近隣は英語の単語です。 ここでは「(ビデオ解説と一緒に)このportmantoutを見つけることができるページへのリンクをね。 portmantout portmantoutの2つのプロパティのうち最初のプロパティは簡単に理解できます。2つ目は、説明が必要な場合があります。 基本的に、単語は重複する必要があります。「golfcode」は、「fc」を含む単語がないため、英語のポートマントには決して表示されません。ただし、portmantoutで「codegolf」が見つかる場合があります。「ego」はギャップを埋めます(他のすべての文字のペアは「code」または「golf」のいずれかです)。 あなたのタスク: 文字列のリストを受け取り、リストのportmantoutを返すプログラムまたは関数を作成します。 このPython 3コードはportmantoutを検証します。 テストケース すべてのリストは順不同です。あれは、 {"code", "ego", "golf"} -> "codegolf" {"more", "elm", "maniac"} -> "morelmaniac" or "morelmorelmaniac" or "morelmorelmorelmaniac" or... Would a morelmaniac be some sort of mycologist? {"ab", "bc", "cd", "de", "ef", "fg", "gh", "hi", "ij", …

30
プライムパワーからパワーを回復
多くの人がこれを持ちたいと思っているようですので、今ではこの挑戦の続編です! 定義:素数はp nの形式で表現できる自然数です。pは素数で、nは自然数です。 タスク:プライムパワーp n > 1の場合、パワーnを返します。 テストケース: input output 9 2 16 4 343 3 2687 1 59049 10 得点:これはcode-golfです。バイト単位の最短回答が優先されます。

7
バイナリツリーの回転
バランスの取れたバイナリ検索ツリーは、O(log n)ルックアップ(または同様の操作)を保証するために不可欠です。多数のキーがランダムに挿入および/または削除される動的環境では、ツリーがルックアップにとって恐ろしいリンクリストに縮退する場合があります。したがって、この効果に対抗するさまざまな種類の自己バランス型バイナリツリー(AVLツリーやスプレイツリーなど)があります。これらのツリーは、ツリーのバランスを再調整するさまざまな種類の回転に基づいています。 回転 この課題では、単一の右回転のみを見ていきます。そのような回転(左回転は対称)は次のようになります。 5 3 / \ / \ 3 6 => 1 5 / \ / \ 1 4 4 6 葉のいずれか1、4または6左または右のサブツリーがある場合、回転は単にそれらをそこに保持します。これがより大きなツリーのサブツリーである場合、ノードで単に「切断5」し、回転したツリー(現在のノード3)をそのノードに「再接続」します。 チャレンジ バイナリ検索ツリー1とキーを指定すると、上記のようにそのノードでツリーが右回転します。上記の例で提供されるキーはになります5。 ルールとI / O 選択したキーとテストケースのキーの間に全単射がある限り、任意のタイプのキーを使用できます。 [3,[]]あいまいさがなければ(たとえば、特に指定しない限りあいまいです)、選択した言語に自然な限り、バイナリツリーの表現を選択できます。 入力は常にバイナリ検索ツリーになるため、重複キーはありません あなたはキーがツリーに含まれていると仮定するかもしれません キーを含むノードには左の子があると仮定できます 提供されたキーの下に正しいサブツリーを想定することはできません あなたは、回転の前にツリーがアンバランスであると仮定することはできません 回転後にツリーのバランスが取れているとは思わないかもしれません デフォルトのI / O方式を使用できます あなたの提出は、ツリーを返す関数またはソリューションを印刷する完全なプログラムである可能性があります テストケース これらの例は、次のようなツリーを表します 葉の場合: [] キーxを持つツリーで、両方のサブツリーがリーフの場合:[x] キーxとサブツリーを持つツリーの場合left right:[x,left,right] 最初の例は、セクションRotationsで提供されるものです。何らかの理由でそれらをグラフィカルに表示する必要がある場合は、ここで2に進みます。 5 …

17
交互パターン
削除されたstackoverflowの質問で、誰かが以下を投稿しました: 交番パターンを印刷するプログラムまたは機能を記述*し、#指定された整数に基づきますn。いくつかの例: 入力:n=1 出力: * 入力n=5 出力: *#### ###** ***## ###** *#### 入力:n=8 出力: *####### ######** ***##### ####**** ****#### #####*** **###### #######* かなりクールなコードゴルフの挑戦のように見えたので、ここにあります。 これらのパターンはどのように構築されますか? 最初の行はシングル*で始まり、後続のn-1量が続き#ます。 2行目は、2つが含まれている*と、n-2大手の量#。 3行目は3 *で始まり、その後に続くn-3量が続き#ます。 等 中間(n/2)に達したら、の量で再度カウントします*。これは上記の例で見ることができます。 入力が奇数の場合、行の逆のペア(最初と最後、2番目と最後から2番目など)はまったく同じであることに注意してください。このn=5例では、最初と最後の行は*####;です。最後の行の2番目と2番目の行は###**です。 ただし、偶数の入力番号の場合、行の逆のペアは逆になります。このn=8例では、最初と最後の行は*#######and #######*です。最後の行の2番目と2番目の行は######**and **######です。等 チャレンジルール: およびの代わりに、任意の2つの印刷可能な文字を使用できます。and を使用できます。および; および; 等。あなたが使用したものをあなたの回答に明記してください。*#AB37<> n正の整数(>= 1)であると仮定できます。 STDOUTに出力する代わりに、各行の文字列のリスト/配列または文字の2Dマトリックスを出力できます。 一般的なルール: これはcode-golfであるため、バイト単位の最短回答が優先されます。 コードゴルフ言語では、非コードゴルフ言語で回答を投稿しないようにしてください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。 回答には標準的な規則が適用されるため、STDIN / STDOUT、適切なパラメーターと戻り値型、完全なプログラムを備えた関数/メソッドを使用できます。あなたの電話。 デフォルトの抜け穴は禁止されています。 可能であれば、コードのテストへのリンクを追加してください。 …

12
エクササイズセットですか?
多くのエクササイズが体の半分にしか影響を与えないことは誰もが知っていることなので、片側に1回ずつ2回行う必要があります。そのようなエクササイズには、左側と右側の2つのカウンターパートがあります。ただし、両側のエクササイズが同じ順序である限り、2つのカウンターパートを連続して実行する必要はありません。エクササイズプログラムでサイドを切り替えることもできますが、一方の側でいくつかのエクササイズを開始し、もう一方の側でいくつかのエクササイズを開始するのは意味がありません。 チャレンジ 運動部は、その後半がネゲート最初の半分の整数のと同じ順序で構成された非ゼロの整数のリストであり、各半分の整数の符号は同じです。エクササイズパートの前半のサインはそのリーディングサイドです。 運動セットは一緒に連結同じリーディング側とのゼロ以上の運動部です。 入力としてゼロ以外の整数のリストを指定して、それが運動セットかどうかを判断します。整数は必ずしも一意ではありません。リストの長さは必ずしも均等ではありません。 ソリューションでは、標準の抜け穴を使用しない場合があります。出力には、2つの異なる一貫した値を使用できます。これはcode-golfであるため、最短のソリューションが優先されます。 例 [-5, -1, -7, -6, -5, 5, 1, 7, 6, 5]運動部の一例です。前半はで[-5, -1, -7, -6, -5]、後半はで、前半の[5, 1, 7, 6, 5]各整数は否定されます。さらに、前半の整数はすべて同じ符号です。このエクササイズパートのリーディングサイドは-1です。 [3, 6, 5, -3, -6, -5, 1, 6, 4, 3, -1, -6, -4, -3]エクササイズセットの例です。その個々のエクササイズ部分は[3, 6, 5, -3, -6, -5]and [1, 6, 4, 3, -1, -6, …

27
ユニークな南京錠PINリスト!
前書き プライベートチャットで、私の友人が最近有効なピンに次の2つの制限があるセキュリティシステムを偶然見つけました。 各数字は一意である必要があります(つまり、「1」は一度しか表示されません) 数字の順序は関係ありません( "1234" = "4321") この南京錠システムがどれほど悪いかを示すために、実際にすべての有効なPINを列挙しましょう! 入力 入力は、PINの長さを示す単一の正の整数で構成されます。 出力 出力は、指定された長さのすべての有効なPINを列挙する非負の整数または文字列*のリストで構成されます。 *より正確には、すべての組み合わせを印刷する場合に、人間がすべての組み合わせを試すために使用できるもの。これは、数字のセットのセットと数字のアレイの配列が適切であることを意味します。 誰が勝ちますか? これはコードゴルフなので、バイト単位の最短回答が勝ちです!標準ルールと抜け穴が適用されます。 コーナーケース 10より大きい整数が入力された場合の出力動作は未定義です。 ゼロのエントリには実際にゼロが含まれるため、各出力エントリ内の数字の順序は未定義です。つまり、「0123」から「123」を除去することはできませんが、「1230」、「1203」、「1023」はすべて有効です「0123」と同様です。 テストケース 1 [0,1,2,3,4,5,6,7,8,9] 2 [10,20,30,40,50,60,70,80,90,21,31,41,51,61,71,81,91,32,42,52,62,72,82,92,43,53,63,73,83,93,54,64,74,84,94,65,75,85,95,76,86,96,87,97,98] 3 [210,310,410,510,610,710,810,910,320,420,520,620,720,820,920,430,530,630,730,830,930,540,640,740,840,940,650,750,850,950,760,860,960,870,970,980,321,421,521,621,721,821,921,431,531,631,731,831,931,541,641,741,841,941,651,751,851,951,761,861,961,871,971,981,432,532,632,732,832,932,542,642,742,842,942,652,752,852,952,762,862,962,872,972,982,543,643,743,843,943,653,753,853,953,763,863,963,873,973,983,654,754,854,954,764,864,964,874,974,984,765,865,965,875,975,985,876,976,986,987] 4 [3210,4210,5210,6210,7210,8210,9210,4310,5310,6310,7310,8310,9310,5410,6410,7410,8410,9410,6510,7510,8510,9510,7610,8610,9610,8710,9710,9810,4320,5320,6320,7320,8320,9320,5420,6420,7420,8420,9420,6520,7520,8520,9520,7620,8620,9620,8720,9720,9820,5430,6430,7430,8430,9430,6530,7530,8530,9530,7630,8630,9630,8730,9730,9830,6540,7540,8540,9540,7640,8640,9640,8740,9740,9840,7650,8650,9650,8750,9750,9850,8760,9760,9860,9870,4321,5321,6321,7321,8321,9321,5421,6421,7421,8421,9421,6521,7521,8521,9521,7621,8621,9621,8721,9721,9821,5431,6431,7431,8431,9431,6531,7531,8531,9531,7631,8631,9631,8731,9731,9831,6541,7541,8541,9541,7641,8641,9641,8741,9741,9841,7651,8651,9651,8751,9751,9851,8761,9761,9861,9871,5432,6432,7432,8432,9432,6532,7532,8532,9532,7632,8632,9632,8732,9732,9832,6542,7542,8542,9542,7642,8642,9642,8742,9742,9842,7652,8652,9652,8752,9752,9852,8762,9762,9862,9872,6543,7543,8543,9543,7643,8643,9643,8743,9743,9843,7653,8653,9653,8753,9753,9853,8763,9763,9863,9873,7654,8654,9654,8754,9754,9854,8764,9764,9864,9874,8765,9765,9865,9875,9876]

8
勾配で地域を分類する
定義 K 番目の大きさの正方行列の環N、1つの≤K≤天井(N / 2)の要素によって形成されたリストであるk個目と(N-K + 1)番目の行と列が、無し最初と最後のk-1要素。 例: マトリックス: 1 2 3 4 5 6 7 8 9 1 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 リングで区切られた: + ------------------- + | 1 2 3 4 5 | | + ----------- + | …

26
サブ配列内の等しい数
数字の配列を指定length >=3し、length % 3 == 0 [1, 2, 3, 4, ...] 長さ3のサブ配列に分割します [[1, 2, 3], [4, 5, ...], [... そして、配列を返します [0] => すべての数値が等しいサブ配列内のケースの量 [1] =>サブ配列内のすべての数値が等しくない場合、2つの数値のみが等しいサブ配列内のケースの量 例とテストケース: 入力:[2, 4, 2, 5, 5, 5, 4, 2, 1, 3, 3, 1]出力[1, 2] それの訳は [[2, 4, 2], [5, 5, 5], [4, 2, 1], [3, …

10
旅客機の座席を割り当てる
先週のAPLレッスンに触発されました。 大文字の2D座席マップと1Dの顧客リストを指定して、座席マップと顧客リストを返しますが、次のように変更します(占有座席と座席のある顧客を示すため)。 入力乗客リスト内の一意の文字ごとに、座席マップ内のその文字の多く(または十分でない場合はすべて)を小文字にして、左から右、上から下に移動します。 座席表の一意の文字ごとに、乗客リストのその文字の多く(または十分でない場合はすべて)を小文字にして、左から右に移動します。 入力シートマップは、集合{からスペースと大文字が含まれF、B、P、E}、とすることができます。 改行によって行に分割されます 文字列のリスト 大文字の行列 他の同等の形式で 入力された顧客リストは、集合{から大文字が含まれF、B、P、E}であってもよいです。 文字列 文字のリスト 他の同等の形式で 返される座席マップは、0個以上の文字が小文字に折り畳まれていることを除いて、入力されたものと同一でなければなりません。 返される顧客リストは、ゼロ以上の文字が小文字に折り畳まれていることを除いて、入力リストと同一である必要があります 先頭と末尾の空白は許可されます 例(ユナイテッドの航空機の短縮版) ERJ145 座席表入力: P E E PP E EE E EE E EE E EE P PP E EE E EE E EE 乗客リストの入力: FFEEEEEEEEEEEEEEEE 座席マップの出力: P e e PP e ee e ee …

12
フィボナッチパターンを見つける
おそらく、最初の2つの項が(または時々)フィボナッチ数列に精通しており、その後のすべての項は前の2つの項の合計です。次のように始まります。0, 11, 1 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... 時々、シーケンスには、興味深いと思う特定のパターンを持つ数字が含まれています。隣接する数字のペアの違いは、他のペアと同じです。たとえば、で始まるシーケンスで0, 1は、18番目の項は987です。9-8=1および8-7=1。少し満足しています。 チャレンジ 2つの初期値F(0)とが与えられるとF(1)、F(n) = F(n-1) + F(n-2)それによって生成されたシーケンス内のすべての数値を出力し、次の基準を満たします。 隣接する数字のペアの違いは、他のペアと同じです 少なくとも3桁の長さです(このパターンでは1桁と2桁の数字は関係ありません) 入力 10 ** 10(100億)未満の2つの非負整数 出力 10 ** 10未満で、チャレンジセクションの条件を満たすすべての整数 10 ** 10を超える数字を出力することは可能ですが、必須ではありません 繰り返される数字がパターン(例777)を満たす場合、基準を満たす無限の数字がある可能性がありますが、プログラムは永久に出力する必要はありません そのような整数が存在しない場合は、数値でない限り何でも出力します(何も、null、空の配列、エラーメッセージ、悲しい顔など) パターンに一致する数字がシーケンス内に複数回出現する場合、1回または発生した回数だけ出力できます。 入力が基準を満たす場合、出力に含める必要があります ルール 入力および出力は、任意の標準形式にすることができます 標準的な抜け穴は禁止されています これはコードゴルフなので、バイト単位の最短コードが勝ちます 例/テストケース Input , Output [1,10] …

8
Code 39バーコードエンコーダー
文字列をCode 39形式のバーコードにエンコードする関数またはプログラムを記述します。各文字は、4つのギャップで区切られた5つのバーとしてエンコードされます。2つのバーと1つのギャップは広く、他のバーは狭い(10 * 4コード)、または3つのギャップは広く、バーは1つもない(4コード)。これにより、44個の異なるコードが得られます。そのうちの1つは、エンコードされた文字列の開始と終了を示すために使用される予約済みのコードです。 チャレンジ 入力は、セットの文字のみを含む文字列です 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. +/$% 出力は、バーコード文字列としてエンコードされた文字列です。狭いギャップと文字間のギャップは単一のスペースであり、広いギャップは3つのスペースです。狭いバーは、ユニコード文字「フルブロック」、█のUTF-8バイトシーケンスです。つまり0xE2 0x96 0x88、広いバーは、このような3つのバイトシーケンス/文字(███)です。コードの完全なリストは次のとおりです。 Spaces 0100 0010 0001 1000 1011 1101 1110 0111 Bars 00000 + / $ % 10001 1 A K U 01001 2 B L V 11000 3 C M W 00101 4 D N X 10100 5 E O …
16 code-golf 

9
中間ストリング配列の反射
まず、文字の2次元配列で文字の反射を再定義することから始めましょう。 明確な小文字のアルファベット文字を持つ正方形の2次元配列の文字が与えられた場合、行列の文字の反射を、正方形の中心を通して文字を直接横切る文字と交換するように定義します。 このように、手紙の反射cで abcde fghij klmno pqrst uvwxy 構成になります abwde fghij klmno pqrst uvcxy ためcとw切り替えられています。 さらにいくつかの例(上記と同じ元の構成): キャラクターeを反映すると形成されます abcdu fghij klmno pqrst evwxy キャラクターmを反映すると abcde fghij klmno pqrst uvwxy キャラクターbを反映すると形成されます axcde fghij klmno pqrst uvwby チャレンジ 個別の小文字を持つ2次元配列の文字が与えられた場合、指定された文字列の各文字を調べて、行列に「反映」します。 明確化:文字列の文字はfrom a-z、文字は一意であり、配列は少なくとも1x1から最大5x5です(明らかに、英語のアルファベットには26文字しかないため)。文字列の文字は2次元配列。文字列は最大100文字です。 入力 文字列s、整数N、そしてNxN文字の配列。 例 入力: ac 2 ab cd 出力: dc ba *理由:最初に、を反映aしますd。次に、反映cしてbいるためにはc、入力文字列内の二文字です。 …
16 code-golf  string 

1
次数kの多項式にk + 2点が入らないような順列
説明 (インデックスと一緒に)ポイントのセットが次数の多項式に該当しない場合、整数の順列を最小補間{1, 2, ..., n}可能と呼びます。あれは、k+2k 水平線上に2点はありません(0次多項式) 3つの点が直線上にない(1次多項式) 放物線上に4つの点はありません(2次多項式) など。 チャレンジ OEISシーケンスA301802(n)を計算するプログラムを作成します。これは、{1, 2, ..., n}forの最小補間順列の数をn可能な限り大きくします。 得点 入力を増やしながら、コンピューター(2.3 GHz Intel Core i5、8 GB RAM)でコードの時間を計ります。スコアは、正しい値を出力するのに1分もかからない最大の入力になります。 例 たとえば、置換[1, 2, 4, 3]は次の理由で最小限に補間できます。 the terms together with their indices [(1, 1), (2, 2), (3, 4), (4, 3)] have the property that (0) No two points have …

16
黙示録の21の髪型
黙示録の21の髪型 1から21(または0から20)の間の数字のリストが与えられた場合、次の面の「つなぎ合わされた」描画を出力します(情報のつなぎのルールを参照)。 ___ ,,, ooo === +++ ### -*~*- (o o) (o o) (o o) (o o) (o o) (o o) (o o) ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo- *** ||| _/7 ))) ((( xxx @__ (o o) (o o) (o o) (o o) (o o) (o o) (o o) ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo- ((_ >X< '*` ^^^ …

2
これがStack Catsスタイルの有効なStack Catsプログラムかどうかを確認してください!
バックグラウンド Stack Catsは、Martin Enderによって作成された可逆の難解な言語です。Stack Catsの各コマンドは、それ自体の逆(のような対称文字として表される-_:T|)であるか、その逆のコマンド(のような鏡像として表される() {} [] <>)のいずれかです。Stack Catsには、プログラム全体がそれ自体の鏡像であるべきという強力な構文要件があります。これは、有効なStack Catsプログラムが自然な鏡像アンビグラムであることを意味することに注意してください。 Stack Catsのコマンドセット全体を次に示します。 自己対称: !*+-:=ITX^_| 対称ペア: () {} [] <> \/ その他の文字は無効です。上記の文字セットにない文字を持つ入力はfalseを出力する必要があります。 言語には追加の制約が()あり、{}ペアは常にバランスをとる必要がありますが、簡単にするために、この状態をチェックする必要はありません。 以下は、有効なStack Catsプログラムの例です(再び、バランスの取れたかっこをチェックしないことに注意してください)。 {[+]==[+]} [)>^<(] ({T)}|{(T}) <(*]{[:!-_:>}<[<)*(>]>{<:_-!:]}[*)> これらは次のとおりではありません。 b<+>d ())( ({[<++<]}) チャレンジ 指定された文字列が有効なStack Catsプログラムであるかどうかを判断するプログラムまたは関数を作成します。また、コードは自然な鏡像アンビグラムである必要があります。 コードはそれ自体の鏡像でなければなりません。 自然に表示されるコード全体がそれ自体の鏡像である限り、コードには1つ以上の改行を含めることができます。 表示が変更されないため、各行の末尾の空白を省略または追加できます。 タブ文字は表示にあいまいさがあるため、許可されていません。 注:コードは有効なStack Catsプログラムである必要はありません。Stack Catsで許可されていない特定の余分な文字が含まれている場合があります。(完全なリストについては以下を参照してください。) たとえば、次の2つのプログラムは対称的であり(したがって有効な送信)、3番目のプログラムはそうではありません。 ({bTd}) [<q|p>] ({bTd}) IXI ({bTd}) IXI 「ミラー対称性」に関しては、Stack …

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