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

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

5
コンピューターがさわやかなクッキーを味わうことはありません
github.com/JackToaster/Reassuring-Parable-Generatorに触発され、次にxkcd.com/1263に触発されました。考えられる単語は、そのリポジトリのreassuring.cfgから派生しています。 reassuring.cfgを見て(12回目のコミットを使用)、出力が一致する文法を確認することをお勧めします(出力は、文法に一致するすべての文字列のリストです)。 タスク:プログラムは、pastebin pastebin.com/2SNAJ1VHに含まれる正確なテキストの大文字小文字を区別するすべての7968行を出力する必要があります。pastebinのコピーがWayback Machineに保存されます 以下は、ペーストビンからの33の動機付けされた行のサンプルです。 Computers can't enjoy a salad. Computers can't enjoy a cake. Computers can't enjoy a ice cream cone. Computers can't enjoy a meal. Computers can't enjoy a drink. Computers can't enjoy a steak. Computers can't enjoy a chicken dinner. Computers can't enjoy a piece of …

1
正弦波ASCIIアートアニメーションテキスト
コンピューターがi3、i5、i7の代わりにx86と呼ばれたときのコンピューターの機能を示す古いデモを見逃しています。386で最初に見たものの1つは、現在25周年を迎えているFuture CrewのUnrealデモでした。午前0時43分にデモの最初の部分が開始され、正弦波のパスに沿ってスクロールテキストが表示されます。ASCIIアートでその効果を模倣してみましょう! チャレンジ このパスが与えられた場合: *** *** *** *** ** ** * * * * * * * * ** ** *** *** ****** そして、入力テキスト、このパスに続くテキストを次のように描画します。 Thi Golf! s i de Yay s Co ! P r d o n g a ra s mmi zle ng Puz スペースはパス内の文字としてカウントされ、テキストがサンプルよりも長い場合はパスが繰り返されることに注意してください。 アニメーション部分 テキストを描画したら、100 ms待機して(約10 …

15
繰り返される相互
あなたがする必要があるのは、入力として小数を取り、数が整数になるまで、小数部分の逆数を繰り返し取った結果を出力する関数/プログラムを作成することです。 より具体的には、プロセスは次のとおりです。 xを入力とします xが整数の場合、それを出力します。 そうでない場合:。2に戻ります。x←1frac(x)バツ←1frac(バツ)x \leftarrow \frac{1}{\mathrm{frac}(x)} frac(x)frac(バツ)\mathrm{frac}(x)はの小数成分であり、等しくなります。最大整数未満であるXのある床、。xバツxx−⌊x⌋バツ−⌊バツ⌋x - \left\lfloor x \right\rfloor⌊x⌋⌊バツ⌋\left\lfloor x \right\rfloorxバツx テストケース: 0 = 0 0.1 = 1/10 -> 10 0.2 = 1/5 -> 5 0.3 = 3/10 -> 10/3 -> 1/3 -> 3 0.4 = 2/5 -> 5/2 -> 1/2 -> 2 0.5 = 1/2 -> …

4
不飽和度
不飽和度 これは特に難しいコードのパズルではありませんが、それを解決する複数の方法を見てみたいと思います。 不飽和度は、原子間の二重化学結合の数、および/または化合物の環の数です。 XaYbZc(a、b、cは化合物中のX、Y、Zの原子数)の形式で化合物の分子式が与えられます-式は任意の長さで、任意の化学元素を含むことができます周期表では(ただし、C、H、N、F、Cl、Br以外の元素は、式に含まれていないため無視されます)。化合物には、少なくとも1つの炭素原子が含まれます。不飽和度を計算して表示する必要があります。 たとえば、化合物ベンゼン(下図)は、3つの二重結合(原子間の二重線で表示)と単一の環(ループで接続された原子の数)があるため、DoUは4です。 LibreTextsで定義されているとおり: DoU =(2C + 2 + N − X − H)/ 2 どこ: C は炭素原子の数です N は窒素原子の数です X あるハロゲン原子の数(F、Cl、Br、I) H は水素原子の数です テストケース: C6H6 --> 4 C9H2O1 --> 0 C9H9N1O4 --> 6 U1Pt1 --> Not a valid input, no carbon Na2O1 --> Not a valid input, …

19
HEX2をRGBAに変換する方法は?
アートの世界は色に満ちていますが、ネットワークの世界は、異なる色とそのレンダリングのアートの世界よりもさらに充実しています。そのため、ある形式のカラー形式を別の形式に変換する方法を知る必要があります。 課題は自明です: 与えられた16進コード(#00ff0080など)をRGBA(などrgba(0, 255, 0, 0.5))に変換するプログラム/関数を作成します。 ルール: HEXをRGBAに変換するための外部ライブラリ/ビルトインは許可されていません。ただし、jQueryとそのような構文置換は許容されます。 標準入出力ルールが適用されます。 アルファの形式は、(1 == 100%)またはもう1つ(100 == 100%)の間であり、これはあまり重要ではありません。 4つの変換された値(String、Array、List、選択)を返す限り、出力は柔軟です。 #最初から入力せずに入力することもできます。したがって、入力は#RRGGBBAAまたはとして取得できますRRGGBBAA。16進コード(を除く#)は常に8文字の長さであると想定できます。 アルファを含むすべての値を255で除算する必要があります。最小小数点精度(アルファの場合、小数点以下2桁になります)。 テストケース Input: 00ff0080 Output: 0, 255, 0, 0.5 得点 code-golf、最小バイト数のコードが勝ちます。

5
要因を共有する最小の未使用数
これは、工場の質問のかなりの実行です。シーケンスを定義し、インデックスを指定してエントリを出力するコードをゴルフします。 シーケンスの最初の項目は2です。 シーケンスのn番目の項目は、nと1以外の最小の正の整数で、リストにまだ現れていないn(1以外)と少なくとも1つの因子を共有します。 テストケース シーケンスの最初の25項目は次のとおりです。 1 2 2 4 3 6 4 8 5 10 6 3 7 14 8 12 9 15 10 5 11 22 12 9 13 26 14 7 15 18 16 20 17 34 18 16 19 38 20 24 21 27 22 11 23 …

3
リンドン単語分解
バックグラウンド A リンドン・ワードは、そのすべての他の回転より厳密に辞書的に小さい非空の文字列です。これらのサブワードが辞書式に増加しないように、Lyndonワードの連結として任意のストリングを一意に因数分解することができます。あなたの挑戦はこれをできるだけ簡潔にすることです。 詳細 印刷可能なASCII文字列のLyndonワード分解を順番に列挙する関数またはプログラムを実装し、結果の部分文字列を何らかの配列またはストリームとして出力する必要があります。文字はコードポイントで比較する必要があり、すべての標準入出力メソッドが許可されます。code-golfの場合と同様に、バイト単位の最短プログラムが優先されます。 テストケース '' [] 'C' ['C'] 'aaaaa' ['a', 'a', 'a', 'a', 'a'] 'K| ' ['K|', ' '] 'abaca' ['abac', 'a'] '9_-$' ['9_', '-', '$'] 'P&O(;' ['P', '&O(;'] 'xhya{Wd$' ['x', 'hy', 'a{', 'Wd', '$'] 'j`M?LO!!Y' ['j', '`', 'M', '?LO', '!!Y'] '!9!TZ' ['!9!TZ'] 'vMMe' ['v', 'MMe'] 'b5A9A9<5{0' ['b', …

9
ASCII等高線図を描く
マーチングスクエアアルゴリズムがすべてのセル(0ベースのラベル付きID)で識別する次の3x3ブロックを検討します。 0: ... ... ... 1: ... ... \.. 2: ... ... ../ 3: ... --- ... 4: ..\ ... ... 5: /.. ... ../ 6: .|. .|. .|. 7: /.. ... ... 8: /.. ... ... 9: .|. .|. .|. 10: ..\ ... \.. 11: ..\ ... ... 12: …

7
詳細なIP範囲ジェネレーター
タスクは単純で、2つのIPアドレスaとが与えられb、その範囲内のすべてのアドレスを出力します。 例 例#1: f(a = 192.168.0.1, b = 192.168.0.4) 192.168.0.1 192.168.0.2 192.168.0.3 192.168.0.4 例#2(TIOはこれを切り捨て、テスト時により小さい範囲を使用します): f (a = 123.0.200.0, b = 124.0.0.0) 123.0.200.0 123.0.200.1 ... # Omitted pattern 123.0.200.255 123.0.201.0 ... # Omitted pattern 123.0.201.255 ... # Omitted pattern 123.0.255.255 123.1.0.0 ... # Omitted pattern 123.255.255.255 124.0.0.0 入出力 a < b …

10
私は特別なNボナッチ数ですか?
もともとこの質問で@DJMcMayhemによって発明されたNボナッチ数列は、整数0と1で始まり、前のN数を追加して次の数を生成することによって生成された数列です。特別なN-ボナッチ数列は、0と1以外の数字のペアで始まるN-ボナッチ数列です。XとYという名前になります。Nが既に数列にある用語の数よりも大きい場合は、使用可能なすべてを追加します条項。 たとえば、通常のフィボナッチ数列のNは2(前の2つの項目を取ります)、XとYは0と1、または1と1になります。 あなたのタスク: 入力された整数(A)が次の3つの整数によって生成される特別なNボナッチシーケンスの一部であるかどうかをチェックするプログラムまたは関数を作成します(2番目の入力をN、3番目と4番目をXおよびYとして使用) 。N = 1の特殊なケースを処理するようにしてください。 入力: 4つの非負整数、A、N、X、およびY。 出力: AがN、X、およびY入力によって生成されたNボナッチ数列の一部であるかどうかを示す真偽値。 テストケース: Input: Output: 13,2,0,1->truthy 12,3,1,4->falsy 4,5,0,1-->truthy 8,1,8,9-->truthy 9,1,8,9-->truthy 12,5,0,1->falsy [0,1]>[0,1,1]>[0,1,1,2]>[0,1,1,2,4]>[0,1,1,2,4,8]>[0,1,1,2,4,8,16]>etc. 得点: これはcode-golfであるため、バイト単位の最低スコアが優先されます。

1
I <3条件
最終的に、コードには非常に長く退屈に見える条件がたくさんあります。 if flag == 1: while have != needed: if type == 7: これらは、はるかに愛らしい&lt;3条件付きの対応物に変換できます。 if abs(flag - 1) + 2 &lt;3: while 3 - abs(have - needed) &lt;3: if 2 + abs(type - 7) &lt;3: 仕事 あなたの仕事は、条件を取り、の観点からそれを作ることです&lt;3。重要な唯一の間隔は、&lt;との間に何もないことです3。 条件文は、いずれかの方法で区切ら二つの表現になります==、!=、&gt;、&lt;、&gt;=または&lt;=。 式には、加算、減算、単項否定(-something)のみが含まれます。各変数または数値の前+または-前に1つまたは前があります(最初または何もないまたは-前にあるものを除く)。 番号はになり[0-9]+、変数はになります[a-z]+。答えを使用する必要がある場合|x|(の絶対値x)、abs()関数を使用します。すべての変数が整数であり、入力内のすべての数値定数が&lt;1000であると仮定できます。 出力は、最も単純な形式である必要はありません。上記のような条件付きである必要があります。つまり、1つの条件付き記号で区切られた2つの式のみである必要がありますがabs、有効な式を囲んで関数を使用することもでき、有効性の観点からは変数のように機能します。 入力に変数の値の出力がない場合は、常にfalseであるが、に関しては条件を出力します&lt;3。 課題の一部は、その方法を見つけることですが、have != needed上記の手順は次のとおりです。 have != needed have - …

27
配列の要素間のすべての非順序ペア
仕事: 配列の要素間で可能なすべてのペアを含む配列を返します。 例 a=["a", "b", "c", "d"];帰りからb=[["a","b"],["a","c"],["a","d"],["b","c"],["b","d"],["c","d"]]。 可能な組み合わせがすべて含まれていて、明らか["b","d"]に同じである限り、ペアは任意の順序にできます["d","b"]。 入力 クラスの文字で構成される一意の文字列要素の配列[a-z]。 出力 入力配列の要素の可能なすべてのペアを含む2D配列。 テストケース input=["a","b","c"]; //output=[["a","b"],["a","c"],["b","c"]] input=["a","b","c","d","e"]; //output=[["a","b"],["a","c"],["a","d"],["a","e"],["b","c"],["b","d"],["b","e"],["c","d"],["c","e"],["d","e"]] 注:このチャレンジの重複は見つかりませんでした。ある場合は、質問をドロップするためのコメントで通知してください。

13
奇妙で野生の豆ゲーム
このゲームを既に知っている人もいるかもしれません。さまざまな色のジェリービーンズのコレクションを持っています。すべての色について、豆は異なる味を持つことができ、いくつかは良いものと悪いものがあり、それらを区別することはできません。あなたは与えられた色の豆を選び、あなたが良いものを選択するように祈らなければなりません。 そのため、(指定されたリストから)選択した色を受け取り、選択した味をランダムに返す最短のプログラムを作成します。味は組み込みのリストから選択する必要があります。入力および出力の可能なリストは次のとおりです。 Input Output choices [only one from the list] -------------------------------------------------- green lawn clippings, lime, mucus, pear yellow rotten eggs, buttered popcorn blue toothpaste, blue berry orange vomit, peach brown canned dog food, chocolate white stinky socks, tutti-frutti, baby diapers, coconut ルール: 入力は常に入力の選択肢からの色になると仮定できます。 大文字小文字と末尾のスペースおよび/または改行は関係ありません。 出力は一様にランダムである必要があります。連続したプログラムの実行では異なる結果が得られ、特定のテイストが得られる可能性はリスト内のすべてのテイストで同じである必要があります。 これはcode-golfなので、最短のプログラムが勝つかもしれません!

7
2つの数値に一意の階乗が含まれていますか?
2つの数値を階乗に分解します。共有している場合は、偽の値を返します。それ以外の場合は、真実の値を返します。(この最近の質問に触発された) 言い換えれば、各入力番号を可能な限り貪欲な方法で(正の整数の)階乗の合計として書き込みます。両方の表現に階乗が現れない場合は真実の値を、そうでなければ偽の値を返します。 例 20と49が与えられた場合: 20 = 3! + 3! + 3! + 2! 49 = 4! + 4! + 1! 両方の表現に階乗が現れないため、真理値を返します。 32と132が与えられた場合: 132 = 5! + 3! + 3! 32 = 4! + 3! + 2! 3!両方の表現に表示されるため、falsey値を返します。 I / O 入力と出力は、任意の標準的な手段で行うことができます。 入力は常に2つの非負整数になります。言語が必要とするもの以外のこれらの整数の上限はありません。 出力は、真偽値または偽値でなければなりません。すべての出力が正しく真実/偽である限り、これらの値は必ずしも異なる入力に対して一貫している必要はありません。 テストケース 1つの入力がの0場合、答えは常に真実です。他の真実のテストケース: {6, 3}, {4, 61}, {73, …

4
あいさつ文を削除する
チャレンジ こんにちは、入力として文字列を指定すると、文字列の先頭で見つかったあいさつを削除します。 50バイト未満で最も正しい置換を実行するプログラムが勝ちます。 あいさつ文 あいさつ文は、次のいずれかの単語として定義されます。 こんにちは ねえ こんにちは 親愛な あいさつ ハイ みんな ひい ハウディ ひや 干し草 へや ほら ひひ あいさつ 最初の文字は大文字にすることができます。 あいさつ文の後には常にカンマおよび/または単一のスペースがありますが、これらも削除する必要があります。コンマとスペースは任意の順序(,&lt;space&gt;または&lt;space&gt;,)にすることができ、両方を削除する必要があります。 あいさつ文とそれに続く単語は、コンマや単一のスペースでのみ区切られます。 次に、挨拶の後に続く単語の最初の文字を大文字にする必要があります。置換が行われていなくても、出力の最初の単語を大文字にする必要があります。 大文字は小文字のアルファベット文字(abcdefghijklmnopqrstuvwxyz)にのみ適用されます。他のキャラクターはそのままにしておく必要があります。 あいさつは常に文字列の先頭になります。開始時ではない挨拶文を置き換えるべきではありません。 常に挨拶があるとは限りません。 コードは50バイト未満でなければなりません。 例 Input &gt; Output Salutations, what's going on? &gt; What's going on? hello i have quetions how does juice an avocado &gt; …

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