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

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

25
スタン・リーへのオマージュ
残念なことに、最高のコミック作家の一人が昨日の午後に亡くなりました。多くのハリウッドスター、ミュージシャン、俳優、および他の多くの人々がこの素晴らしい作家に敬意を表しているので、私たちも何かをしなければなりません。 チャレンジ アベンジャーズのロゴを印刷 注:スペース文字以外の#の代わりに他の文字を使用できます。一方、スペースにはスペース文字を使用する必要があります ASCIIアートで ###### ############### ##### ########## #### ####### #### ### #### ### ### ### #### ### ### ### #### ### ### ### #### ### ### ### #### ### ### ### #### ### ### ### ########### ### ### ########### ### ### #### ### ### ### ### ### ### …

30
スタックの実装
まだこれがないとは信じられません。これはプログラミングで最も重要なデータ構造の1つですが、コードゴルフで実装するのに十分なほどシンプルです。 チャレンジ あなたの仕事は、数字をプッシュしたりポップしたりできるスタックを実装することです。実装をテストし、I / Oをシンプルに保つために、次のセットアップを使用します。 入力は、負でない整数のリストになります 正の整数はすべてを示し、はすべて示し -最上部の要素を破棄します。push( n ) 0 pop()nnnpush( n)push(n)\texttt{push(}n\texttt{)}000ポップ()pop()\texttt{pop()} 出力は結果のスタックになります 例 たとえば、が与えられた場合:[ 12 、3 、0 、101 、11 、1 、0 、0 、14 、0 、28 ][12,3,0,101,11,1,0,0,14,0,28][12,3,0,101,11,1,0,0,14,0,28] 12301011110014028[ 12 ][ 3 、12 ][ 12 ][ 101 、12 ][ 11 、101 、12 ][ 1 、11 、101 、12 ][ 11 、101 …

30
2つの値をマージする
それぞれ0「不明」またはのいずれかを表す2つの値があります1,2,3。次のようにそれらを単一の値にマージします。 両方の値がゼロ以外で等しい場合、その値を出力します。 (3,3) -> 3 両方の値がゼロではないが等しくない場合、不明の場合は0を出力します。 (1,2) -> 0 一方の値がゼロで、もう一方がそうでない場合、ゼロ以外の値を出力します。 (2,0) -> 2, (0,1) -> 1 両方の値がゼロの場合、ゼロを出力します。 (0,0) -> 0 テストケース: 16の可能な入力ペアがあります。 | 0 1 2 3 --+-------- 0 | 0 1 2 3 1 | 1 1 0 0 2 | 2 0 2 0 3 | 3 0 …
44 code-golf 

30
nとn + 1の連結
前書き OEISシーケンスA127421は、10進拡張が2つの連続する増加する非負数の連結である数のシーケンスです。簡単に言えば、配列中のすべての数は一緒に入れることによって形成されているNとN + 1の値が整数、いくつかの非負のためにN。最初のいくつかの用語は次のとおりです。 1、12、23、34、45、56、67、78、89、910、1011、1112、1213、1314、1415、1516、1617、1718、1819、1920、2021、2122、2223、2324、2425、 2526、2627、2728、2829、2930、3031、3132、3233、3334、3435、3536、3637、3738、3839、3940、4041、4142、4243、4344、4445、4546、… チャレンジ 単一の正の整数nを指定すると、OEISシーケンスA127421の最初のnエントリを昇順で出力します。 入力および出力は、任意の受け入れ可能な形式にすることができます。文字列または数値は出力に適しています。 先行ゼロは許可されません。 完全なプログラムまたは機能のいずれかが許可されます。 この課題のために、nは正で100未満です。 デフォルトでは、標準の抜け穴は許可されていません。 この質問はコードゴルフなので、バイト数が最も少なくなります。 入力と出力の例を次に示します。 1 => 1 2 => 1, 12 3 => 1, 12, 23 10 => 1, 12, 23, 34, 45, 56, 67, 78, 89, 910 ご質問がありましたら、お気軽にお尋ねください。幸運を。 PSこれは私の最初の挑戦なので、うまくいけばこれはすべて理にかなっています。 編集:数値または文字列を許可する出力制限を削除しました。

16
「レイジーソート」を実装する
私は数字のリストをソートすることになっていますが、私はとても怠け者です。すべての数字が昇順になるまですべての数字を入れ替える方法を考えるのは本当に難しいので、新しいリストがソートされることを保証する独自のアルゴリズムを思いついた¹。仕組みは次のとおりです。 サイズNのリストの場合、N-1回の反復が必要です。各反復で、 N番目の数値がN + 1番目の数値よりも小さいかどうかを確認します。そうである場合、これらの2つの数値は既にソートされているため、この反復をスキップできます。 そうでない場合は、最初のN個の数字を順番にデクリメントして、これら2つの数字が順番どおりになるまで続ける必要があります。 具体例を見てみましょう。入力があったとしましょう 10 5 7 6 1 最初の反復で、10と5を比較します。10は5よりも大きいため、小さくなるまでデクリメントします。 4 5 7 6 1 5と7を比較します。5は7より小さいので、この反復では何もする必要はありません。次のステップに進み、7と6を比較します。7は6より大きいため、最初の3つの数値を6未満になるまでデクリメントして、次のようにします。 2 3 5 6 1 ここで、6と1を比較します。ここでも、6は1よりも大きいため、最初の4つの数値を1より小さくなるまでデクリメントし、次のようにします。 -4 -3 -1 0 1 これで完了です!これで、リストは完全にソートされた順序になりました。さらに、さらに改善するために、リストをN-1回反復するだけで済みました。したがって、このアルゴリズムはO(N-1)時間でリストを並べ替えます。 今日の課題は、このレイジーソートを実装することです。プログラムまたは関数には、任意の標準形式の整数の配列が与えられます。この遅延ソートを実行し、新しい「ソート済み」リストを返す必要があります。配列が空になったり、整数が含まれたりすることはありません。 ここではいくつかの例を示します。 Input: 10 5 7 6 1 Output: -4 -3 -1 0 1 Input: 3 2 1 Output: …

19
アルファベットを入力-できるだけ早く!
あなたの仕事は、英語のアルファベットの文字をどれだけ速く入力できるかを測定するプログラムを作成することです。 プログラムは、小文字のみ受け入れるものaにzアルファベット順にします。 各文字は、同じ行に入力されたとおりにエコーされます(改行または文字間のその他の区切り文字はありません)。 無効な文字を入力すると、プログラムはFail 新しい行に出力して終了します。 26文字すべてを入力すると、プログラムは新しい行に、最初の文字から最後の文字までにかかった時間をミリ秒単位で出力して終了します。 最初の文字を入力すると、タイマーが開始されますa。 出力例: b Fail abcdefgg Fail abcdefghijklmnopqrstuvwxyz 6440 これはcode-golfであるため、バイト単位の最短回答が優先されます。

22
プライムカエル🐸
「prime frog」は、3または19に到達するまで整数間をジャンプする奇妙な動物です... プログラムは、整数nを入力として受け入れ、以下のアルゴリズムの結果(3または19)を出力する必要があります。 与えられた整数に対してn >= 2: fカエルの位置にしましょう。最初に設定されますn if f = 3またはf = 19:カエルがジャンプを停止した場合-プログラムと出力を停止しますf。 if fが素数の場合:カエルはその位置にジャンプし2×f-1ます。手順2に戻ります。 場合f複合体である:聞かせdすることfの最大のプライム除数。カエルはその位置にジャンプしf-dます。手順2に戻ります。 例: 以下の例n = 5: 5 > 9 > 6 > 3 stop プログラムは出力するはず3です。 別の例n = 23: 23 > 45 > 40 > 35 > 28 > 21 > 14 > 7 > 13 > …

12
アウトラインを保持しながら単語をスクランブルする
これは、どの文字がどの文字と交換されるかについての規則のため、単語内の文字をランダム化する方法やケンブリッジ転置よりもはるかに高度です。ここでは単純な正規表現では十分ではありません。 テキストの最初と最後の文字に加えて全体のアウトラインが一定である限り、単語の内包物がスクランブルされている間にテキストを読むことができることはよく知られています。印刷可能なAscii + Newlineテキストが与えられたら、次の規則に従って各単語をスクランブルします。 スクランブルは(擬似)ランダムでなければなりません。 単語は、AからZまでのラテン文字のシーケンスです。 頭文字のみが大文字になります。 最初と最後の文字はそのままにしておく必要があります。 スクランブルをかける場合、次のグループのいずれかの文字のみが場所を交換できます。 acemnorsuvwxz bdfhkl gpqy it j (所定の場所に留まる) 例 彼らのoeiltnusをpsrrnveiegしながら、Srcmableがすり減った txetは、最初の文字と最後の文字に加えてovaerll ontliues raemin canstnotである限り、trodのインランドがsrcambledされている間でもまだ読めることがよく知られています。patnirlbe Acsii + Nwnliee txetを考えると、samrclbe ecahの単語anoccdirgはこれらのrelusに当てはまります。 Smncrbliagは(プセド)ロンダムでなければなりません。 Wrodはラテン語のchreratacs、thurogh Zのシーケンスです。 初期のlrtteesのみが更新されます。 fisrtとlsat lettresはuctoenhudにとどまらなければなりません。 sarnclbimgの場合、fwllnoiog guorpsの1つを含む文字のみがプラークを変更できます。 aneusvrowxmcz bhkfdl gqpy it j (plcaeに滞在) エムザプル

30
スクエアになるのはヒップ
チャレンジ つまり、平方数や他の形状の数を扱う多くの課題がある一方で、単純に尋ねる課題はないようです。 整数n(where n>=0)が入力として与えられるnと、完全な正方形の場合は真の値を返し、そうでない場合は偽の値を返します。 ルール 標準のI / Oルールで許可されている限り、合理的で便利な手段で入力を取得できます。 選択した言語がネイティブに処理できる以上の入力を処理する必要はなく、浮動小数点の不正確さを引き起こすこともありません。 出力は、2つの一貫した真実/偽の値(たとえば、trueまたはfalse、1または0)のいずれかでなければなりません。入力が完全な正方形の場合は真実、そうでない場合は偽です。 これはコードゴルフなので、バイト数が最も少なくなります。 テストケース Input: 0 Output: true Input: 1 Output: true Input: 64 Output: true Input: 88 Output: false Input: 2147483647 Output: false

30
ABがAB Aである場合B else
2つの整数AとBが与えられ、AB(AからB)がAB(AからB)にある場合はAを出力し、そうでない場合はBを出力します。 「A-B」は標準的な減算です。 「AからB」は、Aから始まりBで終わる整数の範囲で、AとBの両方が含まれます。次に例を示します。 1 to 4: 1, 2, 3, 4 -2 to 5: -2, -1, 0, 1, 2, 3, 4, 5 3 to -1: 3, 2, 1, 0, -1 7 to 7: 7 バイト単位の最短コードが優先されます。 テストケース A B Output 1 4 4 -2 5 5 3 -1 -1 7 7 7 …

30
宝くじにハック
最近、危険なギャンブルサイトでアカウントを作成しました。25ドルの手数料で、0〜50ドルのランダムな金額が返されます。5ドルを2回取得した後、サイトが詐欺であることを証明することにします。デフォルトのパスワードで外部ファイアウォールにアクセスした後、データベースサーバーにアクセスし、最小値と最大値の値がどこにあるかを見つけます。最大値として25個の「9」を接続することにしましたが、最大値は「uint64」型でなければならないというエラーメッセージが表示されます。ただし、一部の数字キーがリモートコンソールに正しく入力されていないように見えるようになりました。チャレンジは、Q + Aサイトでタイプアップされたかのように、あなたの前に現れます。 特定の言語をテストおよび実行するために便利にインストールされたプログラムのみを使用して、符号なし64ビット整数値の最大サイズを出力しますが、プログラミングツールを除くほとんどすべてがこのマシンで破損し、数字1を使用せずに残ります2,4,6,8-ソースコードまたはリテラルのいずれかで、コードの追加部分ごとにプログラムを実行するのに指数関数的に長い時間がかかるようであることに気付くので、抽選の前に金持ちになりたい! 挑戦 数値または単一の文字列として、符号なし64ビット整数の最大値18446744073709551615を出力するプログラムを作成します。 ソースコードに「1」、「2」、「4」、「6」、「8」の文字を含めることはできません 言語に符号なし64ビット整数または同等の言語がない場合、出力は文字列形式などになりますが、上記の数値でなければなりません。 これはコードゴルフなので、各言語で最短のコードが優先されます。

30
この単語は字句順ですか?
入力文字列Sを指定すると、Sのtruthyすべての文字が字句順の場合に返されます。ASCII値は昇順または降順のいずれかである必要があります。falsy他の場合に戻ります。 入力 入力は同じケースになります(すべて大文字またはすべて小文字)。あなたの提出物は両方を処理できるはずです。 入力は範囲内のASCII [A-Za-z]のみで構成されます 入力長は、言語がサポートする最大値まで、少なくとも1です。 入力は文字列です-文字のリストではなく、ASCIIコードポイントの配列ではありません。 出力 出力は、trueまたはfalse、または0/1、またはtrue / falseあなたの言語が提供できる他の明確なスタイル出力でなければなりません。 すべての偽のケースは、すべての偽のケースと同様に、同じ出力を持つ必要があります。いいえ、「Falseは0、trueは1、2、または3」。 追加のルール 標準的な抜け穴は禁止されています 回答は、スニペットまたはREPLエントリではなく、完全なプログラムまたは関数でなければなりません。 code-golf、バイト単位の最短回答が勝ちます。 テストケース 真実の "ABCDEF" "ZYX" "no" "tree" --> the multiple 'e's don't break the order "q" 偽物 "ABCDC" "yes" "deed" 無効 "Hello" --> invalid input - mixed case-, does not have to be handled "" …

25
配列のサーバーソート
チャレンジ 整数の空でない配列が与えられた場合、例えば: [5, 2, 7, 6, 4, 1, 3] 最初に、前のアイテムよりも大きいアイテムがない配列(つまり、非昇順配列)にそれを切断します。 [5, 2] [7, 6, 4, 1] [3] 次に、各配列を逆にします。 [2, 5] [1, 4, 6, 7] [3] 最後に、それらをすべて連結します。 [2, 5, 1, 4, 6, 7, 3] これは、プログラムの出力/関数が返すものでなければなりません。この手順を十分に繰り返すと、配列が完全にソートされます。 ルール 入力および出力は、任意の標準的な方法で提供され、適切な配列形式で行われます。 入力配列が空になることはありませんが、マイナスや重複が含まれる場合があります。 各整数の絶対値は常に2 31未満です。 テストケース うまくいけば、これらはすべてのエッジケースをカバーします: [1] -> [1] [1, 1] -> [1, 1] [1, …

30
配列をインクリメントする
正の整数の空でない配列が与えられた場合、次のように一度「インクリメント」します。 すべての配列要素が等しい場合、配列1の末尾にa を追加します。例えば: [1] -> [1, 1] [2] -> [2, 1] [1, 1] -> [1, 1, 1] [3, 3, 3, 3, 3] -> [3, 3, 3, 3, 3, 1] そうでない場合は、配列の最小値である配列の最初の要素をインクリメントします。例えば: [1, 2] -> [2, 2] [2, 1] -> [2, 2] [3, 1, 1] -> [3, 2, 1] -> [3, 2, …

30
整数を負の順序で出力し、毎回最大整数を増やします
主な任務 あなたの仕事は、1から始めて、与えられた入力に達するまで再び1を押し続けると増加する整数で降順で整数を印刷し、それから再び1を押すまで残りを印刷することです。入力の例6: 1 21 321 4321 54321 654321 Without newlines (valid output): 121321432154321654321 サイドノート:これはOEISのA004736です。また、最初の例(改行あり)は、ルールで指定されている無効な出力です。 入力 コードは、整数または数値の形式であらゆる種類の入力(グラフィカル、STDIN)を取ることができます。 出力 コードは、入力番号に達するまで上記のシーケンスを出力し、再び1に達するまで出力を終了する必要があります。出力は何でもかまいません。したがって、数値、文字列、整数、またはグラフィック出力です。単一の数字を出力する必要があります(文字列の場合、改行はありません)。出力は、必要な数の文字で入力および出力できます(例:)[]。 誤解があったので、出力を試すことができる正規表現パターンを次に示します。 ^(\D*(\d)+\D*)$ ルール 出力は、何も分割されず、改行も含めない完全な数でなければなりません。 アルゴリズムは、何らかの形で現れるNの最初のインスタンス(21inなど121321)をチェックするのではなく、実際の数としてNの最初のインスタンスをチェックする必要があります。 単一の末尾の改行が許可されます。 負の入力の処理は完全にあなたの選択であり、負の数はテストすべきケースではありません。 テストケース Input: 6 Output: 121321432154321654321 Input: 1 Output: 1 Input: 26 Output: 121321432154321654321765432187654321987654321109876543211110987654321121110987654321131211109876543211413121110987654321151413121110987654321161514131211109876543211716151413121110987654321181716151413121110987654321191817161514131211109876543212019181716151413121110987654321212019181716151413121110987654321222120191817161514131211109876543212322212019181716151413121110987654321242322212019181716151413121110987654321252423222120191817161514131211109876543212625242322212019181716151413121110987654321 Input: 0 Output: 0, Empty, or Error Input: 21 Output: 121321432154321654321765432187654321987654321109876543211110987654321121110987654321131211109876543211413121110987654321151413121110987654321161514131211109876543211716151413121110987654321181716151413121110987654321191817161514131211109876543212019181716151413121110987654321212019181716151413121110987654321 @Emignaに感謝します。私は彼のアルゴリズムを使用してこれらのテストケースを計算しました。 …

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