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

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

10
最短の一意に識別する部分文字列
文字列のリストが与えられたら、各文字列を、空でない部分文字列の1つで置き換えます。これは、リスト内の他の文字列の部分文字列ではなく、できるだけ短くします。 例 リストを考えると["hello","hallo","hola"]、"hello"ただで置き換える必要があり"e"、この部分文字列がに含まれていないとして、"hallo"そして"hola"、それはできるだけ短くしています。"hallo"いずれかで置き換えることができる"ha"か、"al"と"hola"のいずれかによって"ho"、"ol"または"la"。 ルール 文字列は空ではなく、同じ大文字と小文字のアルファベットのみを含むと想定できます。 このような部分文字列はリスト内の各文字列に存在すると仮定できます。つまり、リスト内の文字列は他の文字列の部分文字列にはなりません。 入力と出力は任意の合理的な形式にすることができます。 これはcode-golfなので、選択した言語でできるだけ少ないバイトを使用するようにしてください。 テストケース ほとんどの場合、可能な出力は1つだけです。 ["ppcg"] -> ["p"] (or ["c"] or ["g"]) ["hello","hallo","hola"] -> ["e","ha","ho"] ["abc","bca","bac"] -> ["ab","ca","ba"] ["abc","abd","dbc"] -> ["abc","bd","db"] ["lorem","ipsum","dolor","sit","amet"] -> ["re","p","d","si","a"] ["abc","acb","bac","bca","cab","cba"] -> ["abc","acb","bac","bca","cab","cba"] 関連:最短識別サブストリング -同様のアイデアですが、より複雑なルールと扱いにくい形式です。
23 code-golf  string  code-golf  string  code-golf  array-manipulation  code-golf  quine  code-golf  array-manipulation  integer  matrix  classification  code-golf  quine  code-golf  string  matrix  conversion  code-golf  string  number  code-golf  string  code-golf  number  sequence  integer  code-golf  decision-problem  matrix  code-golf  string  code-golf  math  code-golf  math  array-manipulation  combinatorics  code-golf  random  code-golf  code-golf  alphabet  code-golf  python  c  code-golf  base-conversion  code-golf  string  counting  code-challenge  code-generation  fastest-code  code-golf  kolmogorov-complexity  matrix  code-golf  string  code-golf  array-manipulation  decision-problem  random  sudoku  code-golf  chess  code-golf  card-games  encode  code-golf  decision-problem  code-golf  code-golf  math  array-manipulation  matrix 

10
最小数のコインを使用してチップを計算します
ほとんどのチップ電卓アプリは、単に食事の価格の一定の割合を取ります。たとえば、食事が23.45ドルの場合、15%のチップ= 3.52ドル、またはより寛大な20%のチップ= 4.69ドルを残すことができます。 クレジットカードユーザーにとって十分に便利です。しかし、現金のヒントを残したい場合はそうではありません。その場合、これらの奇妙なセント額が邪魔になります。それでは、現金ユーザーにとってより便利になるようにアイデアを修正しましょう。 あなたの割り当て 入力として受け取るプログラムまたは関数を可能な限り少ないバイトで書き込みます。 食事の価格 最小チップ率 最大チップ率 そして、必要な紙幣/紙幣と硬貨の数を最小化する範囲[価格* min_percentage / 100、価格* max_percentage / 100]内のチップ量を出力します。 米国の通貨単位を1¢、5¢、10¢、25¢、$ 1、$ 5、$ 10、$ 20、$ 50、および$ 100と仮定します。 例 Pythonでのゴルフ以外のサンプルプログラムを次に示します。 import math import sys # Do the math in cents so we can use integer arithmetic DENOMINATIONS = [10000, 5000, 2000, 1000, 500, 100, 25, …
23 code-golf 

26
波状の文字列を1行ずつ印刷する
チャレンジ 文字列sと整数nをパラメーターとして受け取るプログラムまたは関数を作成します。次のように変換すると、プログラムは文字列を出力(または返す)します。 左上から始めて右下に移動し、s高さの波として書き込みnます。次に、上から下へ、各行を文字列として(スペースなしで)結合します。 例 文字列「WATERMELON」と高さ3を指定します。 波は次のようになります。 W R O A E M L N T E 次に、行を上から下に結合します。 WRO AEMLN TE したがって、プログラムは文字列「WROAEMLNTE」を返す必要があります 同様に、高さ4の「WATERMELON」は次の波を生成するはずです。 W E A M L T R O E N その後、プログラムは文字列「WEAMLTROEN」を返す必要があります ルール 入力 入力は、合理的な形式で取得できます。文字列は、どのような場合でも好きなものにすることができます。あなたはそれを仮定するかもしれません0 < n <= s.length 出力 出力は、変換された文字列(STDOUTに返されるか出力されるか)と、後続の改行のみで構成される必要があります。 得点 これはcode-golfなので、バイト単位の最短回答が勝ちです!標準の抜け穴は許可されていません。 テストケース Input Output programmingpuzzles, 5 -> …
23 code-golf  string 

5
ジェイコブのASCIIラダーをアニメートする
子供の科学博物館でジェイコブのはしごを見たことがあるかもしれません。外観がよくわからない場合は、ウィキメディアコモンズにいくつかの画像とビデオの例があります。今日の課題は、電気機器のアニメーション化されたASCIIバージョンを作成することです。最終的には、次のようになります。 ラダー構造 以下は、高さ(H)が6のはしごの基本形状です。 6 \ / 5 \ / 4 \ / 3 \ / 2 \ / 1 \ / 0 ¯¯ 左側の数字は、この例の行番号を示しているだけであり、出力に含めるべきではありません。特定の行を番号(R)で参照します。行0が一番下¯¯です。行1からHはそれぞれ4つの部分で構成されています。 スペース(U + 0020)が(H - R)回繰り返された バックスラッシュ\(U + 005C) スペース(U + 0020)が(2 * R)回繰り返された スラッシュ/(U + 002F) 行0は、両方のスラッシュがマクロン¯(U + 00AF)に置き換えられることを除いて同一です。各行の末尾またはラダーの下の末尾の空白は問題ありません。先頭の空白はそうではありません。 アーク建設 はしごを作成したら、左側と右側の間に円弧を作成できます。1つの円弧は完全に行内にあり、先頭\と末尾の間のスペースを置き換えます/。したがって、行2のアークには4文字、行3には6というように続きます。各アークは、次のルールを使用して構成されます。 使用できる文字は_/¯\(U + 005F、U + 002F、U …

11
増え続けるグラフ
固定範囲内の数値の1次元シーケンスを考えます。つまり、 [1, 2, 4, 6, 8, 0, 2, 7, 3] in range [0, 10⟩ Ever-Increasing Graph * **は、このシーケンス内のすべてのポイントを左から右につないだ線であり、常に上向きになるか、水平になります。必要に応じて、線は上から下に折り返され、そこから上に向かって次のポイントに到達します。 この課題の目標は、シーケンスをすべて非減少の異なるサブシーケンスに分割することです。これにより、限られた垂直軸と一緒にプロットすると、増加するグラフが形成されます。これは、1つのサブシーケンスの終了点と次のサブシーケンスの開始点にポイントを追加することで行われます。これにより、上部の境界線を横切る線の角度が下部の境界線を横切る線と一致し、2つの交差点同じ水平座標を持ちます。上記の例では、次の出力が得られます。 [1, 2, 4, 6, 8, 10] [-2, 0, 2, 7, 13] [-3, 3] そして、対応するグラフは次のようになります。さらに、 見やすくするために軸を拡張します。 必要な出力は、Ever-Increeasing Graphの部分を形成するサブシーケンスのリストです。プロットの作成は必須ではありませんが、ボーナスポイントを獲得できます;)。出力では、何らかの方法でサブシーケンスを明確に分離する必要があります。 ノート 範囲の左(両端を含む)境界は常にゼロになり、右の境界は整数Nになります。 シーケンスには、範囲内にない値が含まれることはありません。 最初のサブシーケンスには、最初に追加のポイントがありません。 最後のサブシーケンスの最後に追加のポイントはありません。 サブシーケンスをプロットするために必要な開始インデックスを提供する必要はありません。 テストケース Input: [0, 2, 4, 6, 1, 3, …

13
プライムタイムトラベル
誰にも言わないでください、しかし、私は叔父のタイムトラベルマシンにニックを入れました!私の叔父は素数に取りつかれていますが、それは機械に表示されます。彼はそれをプログラムして、合計が素数になる日付までしか行かないようにしています。 1947-08-151947 + 8 + 15 = 1970であるため、移動できません。これは素数ではありません。1947 + 7 + 25 = 1979であるため、に進むことができ1947-07-25ます。これは素数です。ですから、インドの独立記念日を見に戻りたいのなら、数週間前に行って20日間待つ必要があるようです。 私が行きたい他の日付がいくつかありますが、同様に、目標日付の前の日付(または幸運なら、等しい)に移動する必要があります。しかし、私はイライラしているので、あまり待ちたくありません。そのため、使用できる日付のうち、目的の日付に最も近い日付を見つけたいと思います。 目標日を取得し、タイムマシンに入力する日付を与えるプログラムを作成できますか?部分が素数になる合計日付の前または最も近い日付ですか? (このチャレンジでは、 予後グレゴリオ暦を使用しています。これは、人々が古いユリウス暦を使用していた期間でも現在のグレゴリオ暦を使用することを意味します。) 入力 デート 理想的には、現在の時代(AD)の任意の日付。実際には、あなたの言語が自然に処理できるそのサブセット あなたが好きな単一の人間が読める形式で 出力 入力日付に最も近い日付。入力日付以下で、日付+月+年の合計が素数になります。 あなたが好きな単一の人間が読める形式で ⁺:日、月、年などの「人間が読める」すべてのスペルが、どのような順序でも テストケース 1947-08-15 => 1947-07-25 1957-10-04 => 1957-09-27 1776-07-04 => 1776-07-04 999-12-12 => 0999-12-10 2018-06-20 => 2018-06-15 1999-01-02 => 1998-12-29 1319-12-29 => 1319-07-01 (質問の手助けをしてくれた@ Shaggy、@ …
23 code-golf  primes  date 

19
新しいパスワードのアイデア:Word-walker
私は自分のパスワードを生成する新しい方法を考えました。おそらく長期的にはあまり賢くないかもしれませんが、それでも楽しいコードゴルフを作ることができます。 単語の文字列を取得すると、パスワードは次のように生成されます。 n番目の単語のn番目の文字を選択します もしnは言葉よりも大きい場合、逆方向に数え続けます 例: This is a fun task! T s a u ! Tは最初の文字 sは2番目の aは最初ですが、前後に進むと3番目の u も2番目ですが、逆方向にカウントするため4番目の '!'でもあります 「task!」の5番目のキャラクターです したがって、最終パスワードに含まれます。Tsau! ルール 入力は文字列になります 文字列をスペースで区切ります。他のすべての文字を含める必要があります 大文字は小文字のままで、大文字のままにする必要があります あなたは取るn個のステップの各単語に、どこのnの前に来ている単語の数プラス1であります 場合は、nは言葉よりも大きい場合、あなたが開始をヒットした場合、あなたが強化しているまで、あなたは再び前進し、単語を逆方向にステップしなければならないのn倍 最初と最後の文字は一度だけステップされるため、例として7番目の位置の「fun」は「funufun」になり、「funnuff」ではなくnで終了し、fで終了します 出力は文字列でなければなりません 例: Input Output Once Upon A Time OpAe There was a man Taaa Who made a task Waak That …
23 code-golf  string 

23
エンコード-シャッフル-デコード
チャレンジ あなたの仕事は整数をASCII文字の文字列としてエンコードし、その文字列がランダムにシャッフルされた後にそれを正常にデコードすることです。 EncoderおよびDecoderと呼ばれる2つのプログラム/関数を作成します。 エンコーダー 入力:範囲整数。nnn[ 0 、231− 1 ][0,231−1][0,2^{31}-1] 出力:文字列のアスキー文字(必ずしも印刷可能ではありません)。sss デコーダ 入力:文字列ランダムな順列。s′s′s'sss 出力:整数。nnn 得点 ましょである最大長ののすべての可能な値を横切る。エンコーダが非決定的に動作する場合(これは許可されています。以下を参照)、は発生する可能性ある最大長になります(おそらく)。AAAsssnnnAAAsss∞∞\infty してみましょうあることの長さエンコーダバイトでの長さデコーダバイトインチLELEL_ELDLDL_D スコアはです。A ⋅ (LE+ LD)A⋅(LE+LD)A\cdot(L_E+L_D) 最優秀得点の提出に対して勝利が授与されます。 制限時間 単一のテストケースのエンコーダーとデコーダーの両方の実行時間には、1分というやや任意の時間制限があります(つまり、単一の値)。nnn 目標は、特定のプロパティを持つすべてのシーケンスを列挙することにより、ブルートフォースエンコーディングを見つけるソリューションを回避することです。あなたのソリューションがそれよりも賢い何かをするなら、それはおそらく時間の制約に適合し、有効と見なされます。同様に、ランダムに選択された値に対してTIOで機能する場合、有効と見なされます。それ以外の場合は、マシンでテストしますが、ソリューションが純粋なブルートフォースの場合、ほぼ確実に失敗することに注意してください。nnn ルール エンコーダとデコーダはで記述する必要があり、同じ言語。 デコーダを出力しなければならない正しい整数あらゆる可能な順列のためのの文字列のによって返さエンコーダ。nnns′s′s'sss エンコーダとデコーダはされていないに許さ株式情報(グローバル変数やファイルによって、例えば)どのような方法インチ エンコーダーの出力は確定的である必要はありません(つまり、エンコーダーが複数回実行される場合、同じ入力は異なる出力文字列を生成する可能性があります)が、デコーダーは常に正しい整数推測する必要があります。nnnnnnn エンコーダおよびデコーダは取り、整数を返すことができるに任意の便利な方法(例えば、もしの入力がされることが結構です、または)。nnnn = 14n = 14n=14n=1414"14"[1,4] エンコーダ出力してもよいストリングのいずれかによって印刷の上にまたはによって返却文字列を、文字のリスト/配列または範囲内の整数のリスト/配列。そのノートデコーダは、入力としての順列受け取るで返されるエンコーダがストリング受け入れるべきであるので、において同じフォーマットとして。sss[ 0 、127 ] S 、S 'のstdout [ 0 、127 ][0,127][0,127]ssss′s′s'sss 標準的な抜け穴は禁止されています。 可能であれば、コードの仕組みと、主張するスコアが正しい理由を説明してください。 例 と仮定します。n = …

15
かなりローマ三位一体ではない
整数n≥0を指定する139ABCDE…と、数字と1文字の区切り文字を使用して、非位置ベース3表記で出力します。すべての数字は3の連続した累乗であり、セパレーターの左側の数字は無効になります(例: A931 | B →81-(1 + 3 + 9 + 27)→ 41)。数字は1回しか表示されません。 厳密に、数字の値は次のとおりです。 数字が1、3、または9の場合の値 数字が27の場合 A B..の直前の数字の3倍の値Z 出力はsum(の右側|の桁の値|)-sum(の左側の桁の値)== inputを満たす必要があります。 例 input output ---------------- 0 | 1 |1 7 3|91 730 |D1 9999 FEDC|GA9 別の非スペース文字をセパレータとして使用できます。また、セパレータを持たないこともできます。この場合、最大桁が正のシーケンスを開始します。2 32 -1(PMIGDCBA9|RQNLH3)を超えるものを処理する必要はありません。 完全なプログラムまたは機能を記述でき、通常のチャネルのいずれかで入出力を提供できます。 これはcode-golfなので、答えが短いほど良いです!

21
「スラッシュ」順のマトリックス
2つの正の数N >= 2を与えN <= 100、次の規則に従う行列を作成します。 最初の番号は位置から始まります [0,0] 2番目の番号は位置から始まります [0,1] 3番目の番号が最初の番号(位置[1,0])より下になります 次の数字は「スラッシュ」方向に移動します 使用される番号の範囲は[1, N1 * N2]です。したがって、数値は1から始まり、両方の入力の乗算結果になります。 入力 2つの数字N >= 2とN <= 100。最初の数は行の量、2番目の数は列の量です。 出力 マトリックス。(多次元配列または改行付き文字列として出力できます) 例: 与えられた数字の3 and 5出力: 1 2 4 7 10 3 5 8 11 13 6 9 12 14 15 与えられた数字 2 and 2 1 2 3 4 …
23 code-golf  matrix 

25
指定された順序で文字列をソートします
あなたの挑戦は文字列をソートすることですが、通常のアルファベット順(abc..xyz)でなく、指定されたアルファベットで文字列をソートします。 アルファベットAと文字列Sの 2つの入力を受け取るプログラムまたは関数を作成する必要があります。両方に小文字の英字のみが含まれ、両方に少なくとも1つの文字が含まれます。 あなたがで文字を移動させなければならないSに最初に表示される文字というように、Aは、第二表示され、その後いずれかの文字、最初に表示されたAなどの一部の文字があるかもしれませんSに表示されていないA、これらは最後に残されるべきと互いに相対的に移動しません。 テストケース: A S Result axd haxuizzxaxduxha aaaxxxxdhuizzuh a xyz xyz abc dcba abcd il nmiuplliu iillnmupu asdf qwerty qwerty 最少バイト数が勝ちます!
23 code-golf  string 

12
ドランクールズジャーニーホーム
ドランクールズジャーニーホーム この課題では、酔っぱらいが酒場から帰る途中でつまずくのをシミュレートするプログラムを作成します。 入力: 入力は、酔っぱらいが通ることができるパスを表す隣接行列(有向グラフを表す)になります。各場所で、酔っぱらいはランダムに1つのパスを選択します(各オプションはほぼ等しいチャンスを持ち、以前の選択とは無関係です)。 酔っぱらいは常にバー(隣接行列の最初の行)から始まると仮定します。 酔っぱらいが行き止まりになった場合、彼は帰宅したか、公的な酔いで逮捕されたと考えられ、プログラムは彼の道を返すはずです。 グラフには常に少なくとも1つの行き止まりが含まれると想定できます。 また、酔っぱらいは常にバーを出ることができ(最初の行はすべてゼロではありません)、酔っぱらいが特定の場所に留まる場合、その行はすべてゼロで表されると想定することもできます。 出力: 出力は、酔っぱらいが家に帰ろうとする試みでたどった経路になります。場所の値は、0または1つのインデックス付きのいずれかです。 例: Input [1,0,1,1] [0,0,0,0] [1,0,0,0] [1,1,1,1] Possible Outputs [0,2,0,3,2,0,0,3,1] [0,3,0,3,1] Input [0,1,1,1,0,1] [1,0,1,0,1,1] [0,0,0,0,0,0] [0,0,0,0,0,1] [1,0,0,0,0,0] [0,0,0,0,0,0] Possible outputs [0,1,5] [0,5] [0,1,4,0,2] [0,3,5] [0,3,0,1,4,0,5] Deterministic path: Input [0,0,1,0] [0,0,0,1] [0,1,0,0] [0,0,0,0] Output [0,2,1,3]

6
128年?仮想うるう年の改革
このビデオによると、太陽年は365日、5時間、48分、45秒、138ミリ秒です。現在のグレゴリオ暦では、うるう年の規則は次のとおりです。 if year is divisible by 400, LEAP YEAR else if year is divisible by 100, COMMON YEAR else if year is divisible by 4, LEAP YEAR else, COMMON YEAR 残念ながら、この方法は3216年ごとに1日ずれています。 カレンダーを変更する1つの可能な方法は、次の規則です。 if year is divisible by 128, COMMON YEAR else if year is divisible by 4, LEAP YEAR else, …

30
数を増やす
この課題は、このStackoverflowの質問に基づいています。 入力として正の数を使用して、各桁の合計に10のべき乗表現を乗算して出力します。 入力 整数、文字列、または数字/文字のリストとしての数字。 数値は厳密に正になります。 数値を文字列またはリストとして受け入れた場合、番号で始まることはありません0。 出力 関連する各基数10桁の合計を表す文字列で、それぞれにその基数10の累乗を掛けます。合計はと表されa + bます。+必要に応じて、標識の両側に最大1つのスペースを使用できます。オペランドは降順でリストされています。 0 有効なオペランドにすることはできません。 +記号(スペースで囲まれたかどうか)が先頭または末尾の一部でなくてもよいです。 例 Input Output 12 10 + 2 or 10+2 or 10 +2 or 10+ 2 9 9 123 100 + 20 + 3 10 10 101 100 + 1 無効な出力 2 1 + 1 10 10 + …
23 code-golf  number 

20
正方形の三角形
正の整数xは、2つの異なる正の整数yとzがある場合に正三角形の数であり、xより小さいため、すべての合計が x + y x + z y + z 完全な正方形です。 たとえば、30は正方形の三角形の番号です。 30 + 6 = 6 2 30 + 19 = 7 2 6 + 19 = 5 2 あなたの仕事は、入力として正の整数を取り、それが正三角形の数であるかどうかを決定するコードを書くことです。2つの異なる値の1つを出力する必要があります。1つは入力が正三角形の場合、もう1つはそうでない場合です。 これはコードゴルフであるため、回答はバイト単位でスコアリングされ、バイト数は少ない方が良いでしょう。 テストケース 以下は、1000未満のすべての正方形の三角形の番号です。 30,44,47,48,60,66,69,70,78,86,90,92,94,95,96,98,108,113,116,118,120,122,124,125,126,132,138,142,147,150,152,154,156,157,158,159,160,165,170,176,180,182,185,186,188,190,192,194,195,196,197,198,200,207,212,214,216,218,221,222,224,227,230,232,234,236,237,238,239,240,246,248,253,258,260,264,266,267,268,270,273,274,275,276,278,280,281,282,283,284,285,286,290,296,298,302,303,306,308,310,312,314,317,318,320,322,323,324,326,328,329,330,331,332,333,334,335,336,338,340,344,347,350,351,352,356,357,360,362,364,368,370,371,372,374,376,377,378,380,382,384,385,386,387,388,389,390,392,394,396,402,405,408,410,413,414,415,418,420,422,423,424,426,429,430,432,434,435,436,438,440,442,443,444,445,446,447,448,449,452,456,458,462,464,466,467,468,470,472,476,477,479,480,482,484,485,488,490,491,492,494,496,497,498,500,501,502,503,504,505,506,507,508,509,510,512,515,516,518,522,523,524,527,528,530,533,536,538,540,542,543,546,548,549,550,551,552,554,557,558,560,562,563,564,566,568,569,570,571,572,573,574,575,576,578,579,582,585,588,590,592,593,594,598,600,602,603,604,605,606,608,610,612,613,614,615,616,618,620,621,623,624,626,627,628,630,632,633,634,636,638,639,640,641,642,643,644,645,646,650,652,656,657,658,659,660,662,666,667,668,670,672,674,677,678,680,682,683,686,687,689,690,692,694,695,696,698,700,701,702,704,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,722,723,726,728,730,734,737,739,740,742,744,745,746,750,752,755,756,758,760,762,764,765,767,768,770,772,773,774,776,778,779,780,782,783,784,785,786,788,789,790,791,792,793,794,795,796,797,798,800,802,803,804,805,810,812,814,816,817,818,819,820,822,825,826,827,828,829,830,832,833,834,836,837,838,840,842,846,847,848,849,850,851,852,854,855,856,858,860,861,862,863,864,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,882,884,888,890,891,893,896,897,898,902,903,904,905,908,912,913,914,915,916,918,920,923,924,926,927,928,929,931,932,933,935,936,938,940,941,942,944,946,947,948,950,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,970,972,974,976,978,980,981,984,986,987,988,992,993,995,996,998 OEIS A242445

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