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

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

30
文字列をチャンクで逆順にする
あなたの仕事は、数字と文字列を与えられた文字列をそのサイズのチャンクに分割し、それらを逆にするプログラムを書くことです。 ルール プログラムは、正の整数とn、s印刷可能なASCIIのみ(空白を含まない)で構成される長さ少なくとも1つの文字列を受け取ります。文字列nの長さがn残りの部分で割り切れない場合、文字列はlengthのチャンクに分割される必要があります。次に、チャンクの順序を逆にして、再びまとめます。 テストケース n s Output 2 abcdefgh ghefcdab 3 foobarbaz bazbarfoo 3 abcdefgh ghdefabc 2 a a 1 abcdefgh hgfedcba 2 aaaaaa aaaaaa 2 baaaab abaaba 50 abcdefgh abcdefgh 6 abcdefghi ghiabcdef これはcode-golfなので、できるだけ少ないバイトを目指してください。
34 code-golf  string 

6
パドバンスパイラルを生成する
前書き フィボナッチ数列と同様に、パドバン数列(OEIS A000931)は、数列の前の項を追加することによって生成される数の数列です。初期値は次のように定義されます。 P(0) = P(1) = P(2) = 1 0番目、1番目、および2番目の用語はすべて1です。繰り返しの関係は次のとおりです。 P(n) = P(n - 2) + P(n - 3) したがって、次のシーケンスが生成されます。 1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37, 49, 65, 86, 114, 151, 200, 265, 351, ... これらの数値を正三角形の辺の長さとして使用すると、フィボナッチスパイラルのように、それらをすべて一緒に配置すると素敵なスパイラルが得られます。 ウィキペディアの厚意による画像 仕事 あなたの仕事は、グラフィカルな出力と、どの用語に対応する入力によってこのスパイラルを再作成するプログラムを書くことです。 ルール …

14
n項の数を生成
2次数は、その素因数(多重度なし)がすべて平方根以下である正の整数です。4唯一の素因数は2であり、その平方根に等しいため、は二次数です。ただし、15は5平方根(~ 3.9)よりも大きい素因数であるため、二次数ではありません。すべての素数はそれ自体が素因数であるため、素数は二次数ではありません。最初のいくつかのセカンダリ番号は次のとおりです。 1, 4, 8, 9, 12, 16, 18, 24, 25, 27, 30, 32, 36, 40, 45, 48, 49, 50, 54, 56 三次数も同様に定義されますが、すべての素因数がその立方根以下でなければなりません。最初のいくつかの3次番号は次のとおりです。 1, 8, 16, 27, 32, 36, 48, 54, 64, 72, 81, 96, 108, 125, 128, 135, 144, 150, 160, 162 一般に、n進数は、その素因数がすべてそのn番目のルート以下であるものです。したがって、正の整数ある進数IFFその素因数のそれぞれ満たす。したがって、一次数はすべて正の整数(すべての素因数はそれ以下)であり、四次数はすべての素因数が4番目のルート以下である、などです。バツバツxPのP N ≤ Xnppppn≤ Xpn≤バツp^n ≤ x …


12
レモンライム文字列
空でない単一行の文字列を取り込むプログラムまたは関数を作成します。スペースを除いて印刷可能なASCIIのみが含まれていると想定できます。 文字列のプレフィックスから作られたレモンやライムに似たASCIIアート菱形の形状を印刷または返します。 入力文字列の長さがn文字であるとします。そして、このような形状で構成されて2N - 1つの縫い合わさASCIIアートの列、各なる2N - 1行。1から数えて、k番目の列はf(k)= min(k、2n-k)文字幅で、入力の最初のf(k)文字のf(k)コピーを含み、縦方向に中央揃えで、単一の空白を持ちます。コピーを分離する行。 たとえば、入力がのLemon場合、出力は次のようになります。 Lemon Lemo Lemo Lem Lemon Lem Le Lemo Lemo Le L Lem Lemon Lem L Le Lemo Lemo Le Lem Lemon Lem Lemo Lemo Lemon 入力がlime出力の場合: lime lim lim li lime li l lim lim l li lime li lim lim …

30
2のべき乗の進化
これは「Hello World!」の進化の再投稿であり、元はユーザーHelka Hombaによって書かれました。 ここでのメタコンセンサスのため、重複して閉じられるべきではありません。 オリジナルは2年以上前に尋ねられ、6か月以上前に最後にアクティブでした。Helka Hombaからここに投稿する許可を得ています オリジナル以来、多くの言語が発明され、多くの人々がこのサイトに参加し、オリジナルに答える機会がなかったので、この再投稿は受け入れられると思います。 課題は、プログラムの数である2^nstdoutに出力するプログラムを作成することnです。キャッチは、あなたのプログラムはあなたの前に提出された回答のプログラムから10以下のレーベンシュタイン距離を持っている必要があるということです。 これの仕組み 以下では、C#を使用して2 ^(n = 1)=を出力する最初の回答を送信し2ます。 次に回答する人は、新しい回答の言語で実行されたときに2^n(n回答番号で)印刷されるように、最大​​10個の単一文字の挿入、削除、または置換でコードを変更する必要があります。たとえば、25番目の回答(Pythにあるとしましょう)は、2 ^ 25または33554432を出力します。 これは、最後の回答のプログラムを10文字だけ変更することで実行できる新しい言語がないため、全員が行き詰まるまで続きます。共同の目標は、これを維持できる時間を確認することです。そのため、不明瞭または不当なキャラクターの編集は行わないでください(ただし、これは必須ではありません)。 書式設定 投稿を次のようにフォーマットしてください: #Answer N - [language] [code] [notes, explanation, observations, whatever] Nは回答番号です(N = 1、2、3、...)。 どの正確な文字が変更されたかを伝える必要はありません。レーベンシュタイン距離が0〜10であることを確認してください。 何らかの言語で答えたり、結果のコードが混乱している場合は、必須ではありませんが、あなたが何をしたのか、なぜそれが機能するのかを説明してください。 ルール この課題について理解する重要なことは、一度に答えることができるのは1人だけであり、それぞれの答えはその前の答えに依存するということです。 同じNで2つの回答が存在することはありません。2人がNに対して同時に回答した場合、後で回答した(数秒の差があっても)回答を丁寧に削除する必要があります。 さらに... ユーザーは、2つの回答を連続して送信することはできません。(たとえば、回答1を送信したので、回答2はできませんが、3はできます。) 短期間で回答が多くなりすぎないようにしてください。 各回答は異なるプログラミング言語である必要があります。 Python 2/3など、言語のさまざまなメジャーバージョンを使用できます 伝統的に2つの異なる名前で呼び出される場合、言語は別個のものとしてカウントされます。(ここにはいくつかのあいまいさがありますが、コンテストを台無しにしないでください。) ASCIIに固執する必要はありません。好きな文字を使用できます。レーベンシュタイン距離はユニコード文字で測定されます。 出力は2^n他の文字のみであり、他の文字は含まれません。(>>>またはのような抑制できない出力と同様に、空白の先頭/末尾は問題ありませんans=) 言語にstdoutがない場合は、テキストをすばやく出力するために一般的に使用されているもの(たとえば、console.logまたはalertJavaScript)を使用します。 出力しなければならない2のべき乗が非常に大きくなると、無限の整数サイズではなく、無限のメモリを想定できます。整数オーバーフローには注意してください。 科学的表記法や、言語を表現する最も自然な数値表現方法を使用できます。(単項を除き、単項で出力しないでください) 回答が有効であることを確認してください。チェーンに5つの答えが分かれていることに気付きたくありません。無効な回答はすぐに修正するか、追加の回答がある前に削除する必要があります。 どうしても必要な場合を除き、回答を編集しないでください。 …

19
空のGoボードに石を置きます
関連項目:Goボードで移動する。 仕事 Goは、2人のプレイヤー(黒と白)が19×19のボード上のグリッド線の交点に石を置くボードゲームです。黒が最初に移動します—たとえば、D4で: この課題では、D4入力としてGoボード座標を取得し、指定されたポイントで最初の動きが再生されたボードのASCII表現を出力する必要があります。 列Iがないことに注意してください。これは、歴史的に、JとLとの混乱を減らすためです。 この出力は19行で構成され、各行には19文字が含まれています。石のあるポイントがマークされていOます。ボード上の空のポイントは次のように示されている.9つのを除き、スターポイント(でD4、D10、D16、K4、K10、K16、Q4、Q10、とQ16マークされています)、 *。 たとえばF5、入力として指定された場合、回答の出力は次のようになります。 ................... ................... ................... ...*.....*.....*... ................... ................... ................... ................... ................... ...*.....*.....*... ................... ................... ................... ................... .....O............. ...*.....*.....*... ................... ................... ................... そしてQ16、入力として与えられる、あなたの出力は以下でなければなりません: ................... ................... ................... ...*.....*.....O... ................... ................... ................... ................... ................... ...*.....*.....*... ................... ................... ................... ................... ................... ...*.....*.....*... ................... ................... ................... ルール 引数として座標を取得する関数、またはコマンドラインまたはから座標を読み取るプログラムを作成できますSTDIN。 小文字または大文字で入力を受け入れることもできますが、答えは両方を処理する必要はありません。 …

26
その言語を知っていますか?
仕事: あなたの課題は、以前の提出物とそれ自体を入力として、それらが書かれている言語を次の形式で出力することです。 最初のプログラムはRubyであるとします。1Rubyは1このチャレンジで使用されるst言語であるため、出力する必要があります。サンプルプログラムは次のとおりです。 a=gets puts 1 入力として与えられると、を返します1。 次のプログラムはPythonであるかもしれません。2Pythonは2チャレンジで使用されるnd言語であるため、出力する必要があります。サンプルプログラムは次のとおりです。 print(1 if input()[0]=="a"else 2) 最初の送信1を指定すると、を出力し、それ自体を指定するとを出力します2。 言語を繰り返すことは許可されていますが、以前の回答の言語で回答を送信することは許可されていません。 たとえば、3番目のプログラムがRubyである場合1、最初のプログラムとそれ自体(Rubyが1使用されるst言語であるため)を指定して出力し、2番目のプログラムを指定して出力する必要があります2。 ルール: n現在チャレンジに回答がある場合、少なくともfloor(n / 3)異なる言語が必要です。この規則に違反する提出物は失格となります。 2つの「隣接する回答」(answer nとanswer n+1)が同じ言語を使用することはできません。 言語の異なるバージョンは、異なる言語としてカウントされません(そのためPython 2 == Python 3)。 回答は以前の提出物を完全に入力として受け取らなければなりません。 最初の提出には入力が必要です。 複数の回答を連続して送信することはできません。 「回答の繰り返し」(前回の提出とまったく同じコードを持つ回答)は許可されていません。 回答は、その回答に割り当てられたバイト数を超えることはできません-詳細については、「割り当てられたバイト数」を参照してください。 割り当てられたバイト数: 各回答番号について、その回答にn割り当てられたバイト数は45 + 5nです。 回答のフォーマット: 答えを次のようにフォーマットします。 # {answer no.}, {language} {program} This prints: - `1` in answer(s) {all …

14
ASCIIムーンをASCIIバットで飛び回らせる
バックグラウンド これはハロウィーン関連の挑戦です。 私の最後の挑戦からお気づきかもしれませんが、私はアスキーアートアニメーションと呼ぶものがとても好きです。それは単にパターンを描くだけでなく、進行するパターンを描くことです。このアイデアは、数年前にハロウィーンのランダムなアスキーバットを画面上で飛ばすことで(かなり退屈な)プレゼンテーションを盛り上げるように頼まれた後に思いつきました。言うまでもなく、私は当然のことながら義務を負っていました(私はそれを支払われていました)が、ランダムなコウモリよりも生命に多くがあると考えさせられました。これに触発されて、私はこの挑戦を提案したいと思います。 チャレンジ 月の周りにコウモリを飛ばします。 コウモリは次のとおりです。 ^o^ ここに月があります: mmm mmmmmmm mmmmmmmmm mmmmmmm mmm コウモリの飛行のすべての段階を表示する必要があります(出力を参照)。 入力 なし 出力 ^o^ mmm mmmmmmm mmmmmmmmm mmmmmmm mmm mmm^o^ mmmmmmm mmmmmmmmm mmmmmmm mmm mmm mmmmmmm^o^ mmmmmmmmm mmmmmmm mmm mmm mmmmmmm mmmmmmmmm^o^ mmmmmmm mmm mmm mmmmmmm mmmmmmmmm mmmmmmm^o^ mmm mmm mmmmmmm mmmmmmmmm mmmmmmm mmm^o^ mmm mmmmmmm …

29
Crazy 8s Code Golf
intervalの間のすべての整数を印刷(a, b)し、シーケンスの8の倍数をランダム(均一に分布し、他の文字に依存しない)、非数値、非空白、印刷可能なASCII文字に置き換えるプログラムを作成します。 すべての場合で0 <a <bと仮定します。 数字に1桁以上ある場合は、置換する文字数が一致していることを確認してください! 例: (1, 16) -> 1 2 3 4 5 6 7 $ 9 10 11 12 13 14 15 n@ (115, 123) -> 115, 116, 117, 118, 119, :F<, 121, 122, 123 (1, 3) -> 1 2 3 非例: (1, 16) -> 1 2 …

28
解放してください!
コードゴルファーとして、私たちは(確かに)リリースすることに慣れていません。そのためには、いくつかのツールが必要になります。 もちろん、新しいリリースのマーケティングを支援するには、素敵で光沢のあるリリースバージョンが必要です。バージョン3.0.0を聞いても興奮しないのは誰ですか? 仕事 あなたの仕事はプログラム/ルーチン/ ...を書いてバージョン番号を増やすことです。 バージョン番号を増やし、「重要度の低い」もの(つまり、パッチバージョン)をリセットする必要があります。 2つの引数を取得します。文字列としての現在のバージョン(「1.0.3」など)と、どちらを更新するかを知るためのインデックス(0または1のインデックス)。 例、0インデックス付き: next-version("1.0.3", 0) # 2.0.0 next-version("1.2.3.4.5", 2) # 1.2.4.0.0 next-version("10.0", 0) # 11.0 next-version("3", 0) # 4 next-version("1", 7) # ERROR next-version("01", 0) # ERROR バージョンは文字列で、各部分は数字で、ドットで区切られています。先頭、末尾、または連続するドット(および数字/ドット以外)は存在できません。バージョン文字列のサイズに制限はありません。 ^[1-9]\d*(\.[1-9]\d*)*$ エラーの場合(最後の2つの例)は未定義の動作です。入力を間違えた場合に起こることは、この課題とは無関係です。 いつものように、標準的な抜け穴は禁止されています。文字列を印刷または返すことができます。

30
モジュロ和の合計
整数が与えられた場合n > 9、その整数の数字の間に可能な挿入ごとに、追加+を挿入して評価します。次に、それらの結果を法として元の数を取ります。これらの操作の合計を出力します。 以下の例n = 47852: 47852 % (4785+2) = 4769 47852 % (478+52) = 152 47852 % (47+852) = 205 47852 % (4+7852) = 716 ----- 5842 入力 任意の便利な形式の単一の正の整数、n > 9。 出力 上記の構築手法に従った単一の整数出力。 ルール あなたの言語のデフォルトのタイプより大きい入力を心配する必要はありません。 完全なプログラムまたは機能のいずれかが受け入れられます。関数の場合、出力する代わりに出力を返すことができます。 標準抜け穴は禁止されています。 これはコードゴルフなので、通常のゴルフルールがすべて適用され、最短のコード(バイト単位)が勝ちます。 例 47852 -> 5842 13 -> 1 111 -> 6 12345 …

7
小さな探検家
あなたは探検家であり、未知の世界をマッピングします。あなたの船は風に乗って運ばれます。どこに行くのか、誰が知っていますか? 毎日、あなたのスパイグラスには、北、南、東、西の地物が見えます。あなたは常に基本的な方向に対応する4つのそのような特徴を見ます。スパイグラスは、次のようなASCIIシンボルを報告します。 ~~.*、~~~~、~.^^、~#~# シンボルは順番に並んでいます(北、南、東、西)。 これらは次の記号です。~=海、.=海岸、^=山、*=木、#=無効(観測なし、これは世界の端を見るたびに発生するか、風景が霧で覆い隠されます)。あなたのスパイグラスは、あらゆる方向に正確に1つのユニットを見ます。 毎晩、あなたは星を見上げて、あなたがどこまで旅したかを確かめます。星を見ると、次のようなアスキー記号が表示されます。 n、s、e、w 北、南、東、西にそれぞれ対応します。毎晩、北、南、東、または西に常に1ユニットだけ移動します。エクスプローラーがシンボルの無限のストリームを受け取るように、あなたは: ~~.*n~~~~s~~.*s~.** あなたの仕事は、世界の2D地図を出力することです(地図の?未知の部分は北、上は東、右は東です): ?~~~?????? ?~~~?????? ?~~~.^^.?? ?~~.***.~~ ~~.*^^*.~~ ~~~..~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ 簡単にするために、マップの左下隅から開始すると仮定します。すべてのマップが8x8であると仮定します。 簡単な3x3の例を次に示します。マップは次のようになっていると仮定します。 ~.~ ~^~ ~.~ 次の入力で: ~#.#n~~^#s 次の出力が得られます。 ~?? ~^? ~.? その他の入力と出力の例: 入力 ~#~#n~~~#n~~~#n~~~#n~~~#n~~.#n~~.#n#~~#e#.~~e#.~~e#.~~e#.~~e#~~~e#~~~e#~#~s~~#~s~~#~s~~#~s~~#.s~~#~s~~#~s~##~w~#~~w.#~~w^#~~w.#~~ 出力 ~~~~~~~~ ~....~~~ ~.????~~ ~~????~~ ~~????.~ ~~????~~ ~~?.^.~~ ~~~~~~~~ 入力: ~#~#e~#~~e~#~~e.#~~e^#~~n.~..n~^~.n~.~~n.~~.n.~~*n~.~.n#.~~w#.~~w#.~~s~*..s..*.s*~.~s.~~~s 出力: ?~~~~~?? ?....~?? ?.**.~?? ?~..~~?? ?~~~~~?? ?~~..~?? …

21
算術デリバティブ
関数の導関数は、数学、工学、物理学、生物学、化学、および他の多くの科学の基礎でもあります。今日は、接線方向にのみ関連する何か、算術微分を計算します。 定義 算術導関数a(n)またはn'は、関数の導関数に似た多くのプロパティによってここで定義されます(A003415)。 a(0) = a(1) = 0、 a(p) = 1、p任意の素数、および a(mn) = m*a(n) + n*a(m)。 第3の規則は、機能の分化のための製品のルールに基づいている:機能のためf(x)とg(x)、(fg)' = f'g + fg'。だから、数字で、(ab)' = a'b + ab'。 また、この単純な関係を介して算術導関数を負の数に拡張できるためa(-n) = -a(n)、入力は負になる場合があります。 ルール 任意の整数を指定するとn、の算術導関数を返すプログラムまたは関数を記述しますn。 入力はになり、整数のサイズと数値が大きすぎて妥当な時間を考慮できないという問題を回避します。アルゴリズムは、この範囲外の数値の算術導関数を理論的に計算できるはずです。-230 < n < 230 シンボリック数学、素因数分解、微分の組み込みが許可されています。 例 > a(1) 0 > a(7) 1 > a(14) # a(7)*2 + a(2)*7 = …

30
ケースの複製と切り替え
目標は、文字列を入力として、各ラテン文字を複製し、大文字と小文字を切り替えます(つまり、大文字が小文字に、またはその逆になります)。 入力と出力の例: Input Output bad bBaAdD Nice NniIcCeE T e S t Tt eE Ss tT s E t sS Ee tT 1!1!1st! 1!1!1sStT! n00b nN00bB (e.g.) (eE.gG.) H3l|@! Hh3lL|@! 入力は、印刷可能なASCIIシンボルで構成されます。 非ラテン文字、数字、特殊文字を複製しないでください。
34 code-golf  string 

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