タグ付けされた質問 「code-golf」

コードゴルフは、ソースコードの最小バイトで特定の問題を解決するための競争です。

19
Analog is Obtuse!
アナログ時計には2つの針があります*:時間と分。 これらの針は、時間が経つにつれて時計の顔を一周します。分針が1回転するごとに、時針が1/12回転します。時針を2回転させると、1日を表します。 これらの手は同じ中心点に固定され、その点を中心に回転するため、いつでも手の間の角度を計算できます。実際、任意の時点で2つの角度があります。大きいものと小さいもの(両方とも180になることがありますが、それは重要ではありません) *仮想時計には秒針がありません 仕事 24時間形式で時刻を指定すると、手の間の小さい角度を度単位で出力します。手が直接対向互いに(例えばにおける通りである場合6:00、18:00等)出力180は ルール 入力は次のように使用できます。-区切り文字で区切られた文字列:6:32、14.26 -2つの独立した値、文字列または整数:6, 32、14, 26 -2つの値、文字列または整数の配列:[6, 32]、[14, 26] あなたはまた、必要に応じて(あなたが文字列を取ると仮定して)あなたの答えは入力が2桁にパッドを入れられたことが必要であることを指定することができ、すなわち:06:32、06, 32、[06, 32] :あなたはまた、必要に応じて、すなわち、その後、時間分を取って、入力の順序を逆にします32:6、32, 6、[26, 14] Hourは0から23(包括的)までの整数値で、Minuteは0から59(包括的)までの整数値です 分針が顔に沿って6度刻みでスナップすると仮定できます(各分値に対して等間隔の位置1つ) 時針が顔に沿って0.5度刻みでスナップすると仮定できます(時間値ごとの各分値) 出力は、ラジアンではなく度で指定する必要があります。.0整数の末尾を含めることができます 得点 これはコードゴルフなので、各言語で最少のバイトが勝ちます! テストケース Input: 06:32 Output: 4 Input: 06:30 Output: 15 Input: 18:32 Output: 4 Input: 06:01 Output: 174.5 Input: 00:00 Output: 0 Input: 00:01 Output: …
23 code-golf  math  number  date 

14
あなたの「KVZ」を知っていますか?
概念 英語のアルファベットをどのようにスクランブルして、曲を壊さずにトゥインクルトゥインクルリトルスターに合わせて歌うことができますか? ルール スワッピング 次の各セットに含まれる文字は、曲を損なわずにデフォルトで自由に交換できると仮定してみましょう。 {A、J、K} {B、C、D、E、G、P、T、V、Z} {I、Y} {Q、U} {S、X、F} {M、N} したがって、H、L、O、R、およびWは所定の位置にロックされます 出力 プログラムは、順序が上記の条件を満たしている限り、任意の順序で完全な英語のアルファベットを含む単一のランダム文字列(または文字のリスト)を出力する必要があります。プログラムがどの文字列を出力するかを予測する方法はないはずです(シードを無視する場合)。つまり、ハードコーディングすることはできません。 あなたのプログラムは、9 !⋅ 3 !⋅ 3 !⋅ 2 !⋅ 2 !⋅ 2 != 1045094409!⋅3!⋅3!⋅2!⋅2!⋅2!=104509440 9! \cdot 3! \cdot 3! \cdot 2! \cdot 2! \cdot 2! = 104509440 それぞれを生成するいくつかの正の確率(必ずしも均一ではない)を持っている必要があります!⋅ 3 !⋅ 3 !⋅ 2 !⋅ 2 !⋅ 2 …

20
隣接していないアイテムの最大合計サブシーケンス
前書き: これら2つのSO質問(同じクラスからの疑いのない質問)に触発された:隣接要素なしの最大合計のサブ配列の要素javaおよび配列の非隣接要素の最大合計を印刷します。 チャレンジ: 整数のリストが与えられた場合、最高の合計を持つ非隣接要素で構成されるサブシーケンスを出力します。ここにいくつかの例があります: [1,2,3,-1,-3,2,5]は、0から始まるインデックスで[1,3,5](合計で9)になります[0,2,6]。 [4,5,4,3]いずれかをもたらすであろう[4,4](の和と80ベースのインデックスで)[0,2]又は[5,3](もの和と80ベースのインデックスで)[1,3]。 [5,5,10,100,10,5]は、0ベースのインデックスまたはのいずれかで[5,100,5](合計で110)になります。[0,3,5][1,3,5] 上記のこれらの例で最も重要なのは、要素を含むインデックスが少なくとも2つ離れていることです。この例を[5,5,10,100,10,5]さらに詳しく見ると、非隣接アイテムを含む次の潜在的なサブシーケンスがあります。インデックスがその下にあります。以下の合計で: [[5],[10],[100],[10],[5],[5],[100,5],[10,5],[10,10],[5,5],[5,10],[5,100],[5,5],[5,10],[5,100],[5,10],[5,100,5],[5,100,5],[5,10,5],[5,10,10]] // non-adjacent subsequences [[5],[ 4],[ 3],[ 2],[1],[0],[ 3,5],[ 2,5],[ 2, 4],[1,5],[1, 4],[1, 3],[0,5],[0, 4],[0, 3],[0, 2],[1, 3,5],[0, 3,5],[0, 2,5],[0, 2, 4]] // at these 0-based indices [ 5, 10, 100, 10, 5, 5, 105, 15, 20, 10, 15, 105, 10, 15, …

11
最小整数ディスク
この課題は、特定のポイントを含む最小のディスクを見つけることです。ただし、この課題では、ディスクの座標と半径は両方とも整数でなければならないという事実により、これはやや複雑になります。 入力は、整数座標xとを持つ点のリストになりyます。これは、タプルのリスト、リストのリスト、またはペアのコレクションを表す他の方法として使用できます。xそして、y両方とも(おそらく負の)整数になります。すべてのポイントは一意であることが保証されており、少なくとも1つのポイントがあります。 あなたの出力は、3つの数字の形でディスクになりX、YとR。X、YおよびRすべての整数であり、XおよびYディスクの中心を表し、Rその半径を表します。与えられたすべての点と中心の間の距離はに等しいかそれ以下Rでなければならず、Rこの条件を満たしているより小さいディスクが存在してはなりません。 特定の入力に対して複数の可能な解決策がある可能性がありますが、この場合、コードは少なくとも1つを出力する必要があります。 言語がサポートしている場合は、言語でサポートされているあらゆる種類のジオメトリビルトインを使用できます。入力/出力は、単なる数字ではなく、組み込みのポイント/ディスクオブジェクトを介して行われます。 テストケース Input (Possible) Output(s) (x,y) (X,Y,R) ------------------------- (0,0) (0,0,0) ------------------------- (0,1) (0,0,1) (1,0) (1,1,1) ------------------------- (1,4) (4,4,3) (3,2) (4,1) (4,5) (5,2) (7,4) ------------------------- (-1,0) (0,0,2) (2,0) (1,0,2) ------------------------- (-1,0) (1,0,2) (2,1) (0,1,2) ------------------------- (0,0) (1,0,1) (1,1) (0,1,1) 少ないバイトが勝ちます。

16
ケーキを焼きます
私の誕生日は1か月で、これはおいしいケーキのスライスです。 .-""-. .-" "-. |""--.. "-. | ""--.. "-. |""--.. ""--..\ | ""--.. | | ""--..| ""--.. | ""--.. | ""--..| 最小バイト数で、このケーキのスライスを作成してください。STDOUTに出力するか、関数の結果として返すことができます。 文字が適切に並んでいる限り、余分な空白は許容されます。 ルールとI / O 入力なし 便利な方法で出力できます。 完全なプログラムまたは機能のいずれかが受け入れられます。 標準的な抜け穴は禁止されています。 これはコードゴルフなので、通常のゴルフルールがすべて適用され、最短のコード(バイト単位)が勝ちます。

18
折りたたみ番号
10進数d kとして書かれた自然数nnn関数を定義しましょうdkdk−1…d1d0dkdk−1…d1d0d_k\; d_{k-1}\; \dotsc\; d_1\; d_0は次のとおりです。 等しい隣接する数字d iがある限りdidi−1didi−1d_i\;d_{i-1}、その合計によってそれらを置き換えるdi+di−1di+di−1d_i+d_{i-1}左から右へ。そのような数字があった場合は、同じ手順を繰り返します。 つまり、各反復で、隣接する等しい数字のすべてのペアを貪欲に取り、それらを同時に合計で置き換えます(重複する場合は左端のペアを使用します)。 例 例として99889988\texttt{9988}を見てみましょう。 等しい最初の隣接する数字は2つの99\texttt{9} したがって、それらを9 + 9=189 + 9=18\texttt{9 + 9} = \texttt{18}に置き換えると、1888が得られます。18881888\texttt{1888} 私たちはまだ最初の左右走査であり、まだ2つの88\texttt{8}があったので、これらを最初に置き換える必要があります 我々が得るように、18161816\texttt{1816} 何かが変わったので、別の繰り返しを行う必要があります しかし、そのような数字はないので、停止します したがって、そのシーケンスの9988th9988th9988^\text{th}数値は181618161816です。 チャレンジ 最初の200の用語は次のとおりです。 0,1,2,3,4,5,6,7,8,9,10,2,12,13,14,15,16,17,18,19,20,21,4,23,24,25,26,27,28,29,30,31,32,6,34,35,36,37,38,39,40,41,42,43,8,45,46,47,48,49,50,51,52,53,54,10,56,57,58,59,60,61,62,63,64,65,12,67,68,69,70,71,72,73,74,75,76,14,78,79,80,81,82,83,84,85,86,87,16,89,90,91,92,93,94,95,96,97,98,18,10,101,102,103,104,105,106,107,108,109,20,21,4,23,24,25,26,27,28,29,120,121,14,123,124,125,126,127,128,129,130,131,132,16,134,135,136,137,138,139,140,141,142,143,18,145,146,147,148,149,150,151,152,153,154,20,156,157,158,159,160,161,162,163,164,165,4,167,168,169,170,171,172,173,174,175,176,24,178,179,180,181,182,183,184,185,186,187,26,189,190,191,192,193,194,195,196,197,198,28 あなたの仕事は、そのシーケンスを生成することです nnn指定すると、そのシーケンスのnthnthn^\text{th}数値を返します。 nnn指定すると、そのシーケンスの最初のnnn数値を返します または、シーケンスを無期限に生成します。 000または111インデックス作成のいずれかを使用するように提出を選択できますが、どちらを指定してください。 テストケース 上記の用語を使用することもできますが、ここにいくつかの大きな用語を示します。 222 -> 42 1633 -> 4 4488 -> 816 15519 -> 2019 19988 -> …

15
セミパリンドロームパズル
回文とは、それ自体が逆の言葉です。 今ではパリンドロームのように見えるかもしれないがそうではない単語がいくつかあります。たとえば、単語 はパリンドロームsheeshで sheeshはありません。その逆はhseehsどちらが異なるかを考えshてみましょう。しかし、単一の文字と考えると、逆はになりsheeshます。この種の単語をセミパリンドロームと呼びます。 具体的には、単語をいくつかのチャンクに分割して、チャンクの順序が逆になったときに元の単語が形成される場合、単語はセミパリンドロームです。(sheeshこれらのチャンクはsh e e sh)単語の両方の半分からの文字を含むチャンクも必要ありません(そうでない場合、すべての単語はセミパリンドロームになります)。たとえば、元の単語の両側の文字を含むチャンク()があるrearため、セミパリンドロームではありません。奇数の長さの単語の中心文字は単語のどちら側にもないと考えます。したがって、奇数の長さの単語の場合、中心文字は常に独自のチャンクになければなりません。r ea rea あなたの仕事は、正の整数のリストを取得し、それらがセミパリンドロームかどうかを判断することです。コードは、入力がセミパリンドロームの場合とそうでない場合の2つの一貫した等しくない値を出力する必要があります。ただし、コードのバイトシーケンスはセミパリンドロームそのものでなければなりません。 回答はバイト単位でスコアリングされ、バイト数が少ないほど優れています。 テストケース [] -> True [1] -> True [2,1,2] -> True [3,4,2,2,3,4] -> True [3,5,1,3,5] -> True [1,2,3,1] -> False [1,2,3,3,4,1] -> False [11,44,1,1] -> False [1,3,2,4,1,2,3] -> False より多くのテストケースを生成するプログラム。 恐ろしいことは、これらが一般化されたスマランダチェ回文に似ていることを指摘した。したがって、さらに読みたい場合は、1つの場所から始めてください。

25
最大桁で並べ替え
チャレンジ: 整数のリストが与えられたら、それらの単一の最大桁で降順でソートします。次に、同じ最大桁の数字の順序は、2番目に大きい桁などでソートさ れます。数字の重複桁は無視されます。また、数字のすべての数字が同じ場合、リスト内の数字の順序は任意に設定できます。 例: Input: [123, 478, -904, 62778, 0, -73, 8491, 3120, 6458, -7738, 373] Possible outputs: [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0] [8491, -904, 62778, 478, -7738, 6458, -73, 373, 3120, 123, 0] どうして?番号がソートされた関連する数字は次のとおりです。 Output: [8491, -904, 62778, 478, -7738, 6458, 373, -73, …

15
多次元反転
非負整数のN次元の直交(非不規則)配列と、どの次元を反転させるかの指示が与えられると、配列を返しますが、それらの次元に沿って反転します。指示は、長さNのブールリスト、または0または1からインデックス付けされた最初のN次元のサブセットのリストとして指定できます。 入力形式を明記してください。コードの説明は大歓迎です。 ウォークスルーの例 2層3行4列3Dアレイが与えられます [[[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9,10,11,12]], [[13,14,15,16], [17,18,19,20], [21,22,23,24]]] そして [true,false,true](ブールリスト) [0,2](0インデックス付きリスト) [1,3](1インデックス付きリスト) 最初と最後の次元の順序を逆にする必要があります。つまり、各レイヤーの行ではなく、レイヤーと行の要素(列)です。最初に(これを行う実際の順序は重要ではありません)、レイヤーの順序を逆にします。 [[[13,14,15,16], [17,18,19,20], [21,22,23,24]], [[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9,10,11,12]]] 次に、各行の要素の順序を逆にします。 [[[16,15,14,13], [20,19,18,17], [24,23,22,21]], [[ 4, 3, 2, 1], [ 8, …

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 

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