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

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

30
アナグラムクインのゴルフ
で、この質問、私は、その出力に基づいてアナグラムQUINEを推測することができ尋ねました。しかし、アナグラム・クインにゴルフをすることをまだ質問していないようです。したがって、あなたの仕事は、できる限り短いアナグラム馬を作ることです。 アナグラムクインとは何ですか? アナグラムクインは、元のソース以外のソースコードのアナグラムを出力する空でないプログラムです。 Python 2のアナグラムクインの例を次に示します。 print`'`print`*2'*2` この挑戦のためにあなた自身のソースを読むべきではありません。

12
交互のフィボナッチ数列
定義 交互電力フィボナッチ数列は次のように形成されます。 空のシーケンスから始めて、nを1に設定します。 f n(n 番目の非負のフィボナッチ数)を繰り返し計算します。 0は最初、1は2番目、3番目、2は4番目です。他のすべては、シーケンス内の前の2つの数値を合計することによって取得されるため、3 = 1 + 2は5番目、5 = 2 + 3は6番目などです nが奇数の場合、f nの符号を変更します。 追加2 N-1のコピーF N配列。 nをインクリメントし、手順2に戻ります。 これらは、APFシーケンスの最初の100の用語です。 0 1 1 -1 -1 -1 -1 2 2 2 2 2 2 2 2 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 …

11
カウント単位の正方形の円が通過する
整数の半径rが与えられ、原点を中心とする半径rの円が通る単位平方の数を返すプログラムまたは関数を記述します。円が、隣接する単位正方形を通過するものとしてカウントされないグリッド上のポイントを正確に通過する場合。 r = 5の例を示します。 Kival Ngaokrajangによるイラスト、OEISで発見 例: 0→0 1→4 4→28 5→28 49→388 50→380 325→2540 5524→44180 5525→44020

18
Googleの平均長
私はPythのURLリクエスト機能をいじっていましたが、グーグルがいつも少し違う長さのレスポンスを返すことに気づきました~10500。通常はキャラクターです。 したがって、このチャレンジでのあなたのタスクは、からのhtmlレスポンスの平均長を出力することですhttp://google.com。 スペック 入力nするリクエストは、作成するリクエストの数です。 各リクエストに対して、HTTP getリクエストを作成します。 ヘッダーではなく、応答本文(htmlテキスト)をカウントします。 応答の長さの算術平均を出力します。 urlのみにアクセスできますが、http://google.com他にはアクセスできません。 これはcode-golfなので、バイト単位の最短コードが勝ちです! 入力のサンプル出力10: 10560.1 (そのためにPythonを使用しurllibました) PS:グーグルがこれをする理由を誰か知っていますか?

18
化学101-周期表の概要
質問 Given the atomic number of an element[1-118]の範囲ではgroup and period、次の元素周期表で与えられる、その元素のを出力します。 ランタニドおよびアクチニドシリーズの要素(範囲[57-71]および[89-103])の場合、代わりLにランタニドおよびAアクチニドに戻る必要があります。 プログラムまたは関数を記述し、入力を受け取り、出力を提供する当社の標準的な方法のいずれかを使用できます。 任意のプログラミング言語を使用できますが、これらの抜け穴はデフォルトでは禁止されています。 [ソース] テストケース 可能な入力は118個しかないため、予想される入力と出力の完全なリストを以下に示します。 手作業で作成し、間違いがある場合はお知らせください! 1,1,1 2,18,1 3,1,2 4,2,2 5,13,​​2 6,14,2 7,15,2 8,16,2 9,17,2 10,18,2 11,1,3 12,2,3 13,13,3 14,14,3 15,15,3 16,16,3 17,17,3 18,18,3 19,1,4 20,2,4 21,3,4 22,4,4 23,5,4 24,6,4 25,7,4 26,8,4 27,9,4 28,10,4 29,11,4 30,12,4 31,13,4 32,14,4 33,15,4 …

10
リリーパッドジャンプ
この課題では、ユリのパッドで前後にジャンプするカエルをシミュレートする必要があります。池は無限に大きく、無数のスイレンの列があり、カエルは好きなだけスイレンを飛び越えることができます。 このカエルは前後にジャンプするのが好きです: 前方にジャンプした後、彼は常に後方にジャンプしますにます。 彼のジャンプを表す整数のリストが渡されます。彼のジャンプの結果を出力する必要があります。 たとえば、あなたが合格したと言う [2,3,6,8,2]: 私たちのカエルは、2つのスイレンを前方にジャンプすることから始まります。 _2 次に、3つのリリーパッドが戻ります。 3__2 次に、前方に6個のユリパッド: 3__2__6 8戻る: 8_3__2__6 最後に、2個のリリーパッドを前方に配置します(2が3を上書きする方法に注意してください)。 8_2__2__6 より明確にするために:入力は数値の配列でありS、S[K]その位置で出力する必要がありますS[K] - S[K-1] + S[K-2] - S[K-3]...。 特定の場所に複数の番号を印刷する場合は、インデックスが最も高い番号のみを印刷します。 あなたが使用することです _特定の場所が空の場合ます 数字に複数の数字がある場合、複数の場所を占めることはありません。(つまり、場所は複数の文字で構成できます) リストが空ではなく、すべての整数が0より大きいと仮定できます。 テストケース: 5 ____5 2,2 2_2 4,3,2,1 3124 5,3,2,1 _3125 2,3,6,8,2 8_2__2__6 10,3,12,4,1,12,16 ___12__3__10____41__1216 100,4,7,2,2 _______________________________________________________________________________________________4___1002_2 これはコードゴルフですので、できるだけ少ない文字で答えてください!
24 code-golf  string 

30
ダブを一緒に入手する
4chanでは、人気のゲームが入手できます。サイト上のすべての投稿には、連続した投稿IDが付与されます。あなたはそれらに影響を与えたり決定したりすることはできないので、人々は自分の投稿番号(少なくとも一部)、通常は最初の数桁を推測しようとします。ゲームの別のバージョンはダブと呼ばれ、目標は数字の最後に数字を繰り返すことです(つまり、1234555)。 あなたの仕事は、あなたがそれを受け入れたいなら、入力として投稿IDを取り(標準整数、2 ^ 32以下と仮定できます)、最後に何桁の繰り返しがあるかを返すプログラムを書くことです。 ルール 標準的な抜け穴は許可されません。 プログラムは、それを実行するために外部のカウントされていないコード/引数が必要ない限り、実際に機能するものであれば、関数、完全なプログラム、REPLコマンドでありえます。 入力は、STDIN、関数の引数、コマンドラインの引数、ファイルなど、あなたに合ったものから得ることができます。 テストケース Input: 14892093 Output: 1 Input: 12344444 Output: 5 Input: 112311 Output: 2 Input: 888888 Output: 6 Input: 135866667 //Post number I got on /pol/ few days ago, rip Output: 1

25
ログスケールは禁煙者向け
ログスケールが禁煙者用であることは誰もが知っています。したがって、ベースが指定されたログスケールで棒グラフを非終了にするプログラムまたは関数を作成する必要があります。 バーグラフ入力は、バーのリストである単一の文字列として取得されます。ここで、ログスケールバーグラフの各バーは、選択可能な印刷可能(または空白)区切り文字(0x09-0x0A + 0x20-0x7E)で区切られます。選択可能な印刷可能な非空白(0x21-0x7E)フィラー文字で構成されます。 プログラムまたは関数は、バーのリストである単一の文字列を出力します。各バーは、入力と同じ区切り文字で区切られ、入力と同じフィラー文字で構成されます。 例 「\ n」(1つの改行)の区切り文字と「#」のフィラー文字を選択します。プログラムまたは関数に渡される入力は次のとおりです。 base = 2 およびstring = #### ## ###### ### コードでは、バーの長さがであることがわかります[4,2,6,3]。2get [2^4,2^2,2^6,2^3]= を底とする各長さの対数を計算します[16,4,64,8]。次に、長さが線形スケールバー形式で出力されます。 ################ #### ################################################################ ######## 入出力 プログラムまたは関数は、適切な形式で入出力できます。 入力されたベースは、あなたがベースが完全に正規表現と一致する文字列の入力が保証されて256未満であると仮定することができる1以上の整数大きいことが保証され(f+s)+f+、ここで、fおよびsはそれぞれ自分の充填剤および区切り文字で置き換えられます。 文字列出力はregex (f+s)+f+と完全に一致する必要がfありsます。ここでおよびは、それぞれ同じフィラーとデリミタで置き換えられます。出力には、オプションで末尾の改行が含まれる場合があります。 出力と入力は、部分文字列で区切られるのではなく、文字列のリストにもなりますが、どのバーがどのバーであるかを理解できる必要があります。 テストケース (フィラーが#、デリミタがであると仮定します\n) base - input string - output string ----- 2 - #### ## ###### ### - ################ #### ################################################################ …

9
べき級数係数の計算
多項式の所定のp(x)積分係数を有するとの定数項p(0) = 1 or -1、及び非負整数N、戻りNの(時には「テイラー」という)電力seris番目の係数f(x) = 1/p(x)で開発されたx0 = 0、すなわち、次数の単項式の係数N。 与えられた条件は、べき級数が存在し、その係数が整数であることを保証します。 詳細 いつものように、多項式は、たとえば係数のリストなど、任意の便利な形式で受け入れることがp(x) = x^3-2x+5できます[1,0,-2,5]。 機能のPOWERSERIES fで開発が0で与えられます - N番目の係数(の係数x^N)は ここでは、のn次の導関数を示しますf 例 多項式のp(x) = 1-x結果は幾何級数であるf(x) = 1 + x + x^2 + ...ため、出力は1すべてになりNます。 p(x) = (1-x)^2 = x^2 - 2x + 1結果は幾何級数の導関数になるf(x) = 1 + 2x + 3x^2 + 4x^3 + ...ため、の出力はNですN+1。 …

2
インシデントトークナイザーを書く
バックグラウンド インシデントは、トークンのリストが事前に決定されておらず、入力から推測されるという点で、かなり珍しいプログラミング言語です。そのため、インシデントプログラムのトークン化は、特に効率的に行う場合は特に困難です。このタスクは、それを自分で行うことです。 タスク プログラムには入力として文字列が与えられます。インシデントがトークン化に使用するアルゴリズムは次のとおりです。 入力の部分文字列として発生するすべての文字列を正確に3つの方法で識別します(つまり、入力内にその文字列が正確に3回出現します)。 別のそのような文字列の部分文字列であり、これらのいずれかの文字列を破棄し(例えば、入力のためにababab、唯一の残りの文字列は次のようになりabません、aまたはbので、aとbの両方のサブストリングですab)。 入力内で重複する文字列を破棄します。(たとえば、のaaaa3つのコピーが含まれていますaaが、これらのコピーは2番目と3番目の文字で重複しているため、破棄されます。同様に、のabababa3つのコピーabと3つのコピーがbaありますが、2番目から6番目の文字はそれぞれ重なりabとba、両方そうabとba)は廃棄されるであろう。 この時点で残っている文字列は、プログラムで使用されるトークンです。元の入力をこれらのトークンのシーケンスにトークン化します(前のステップでの破棄のため、それを行う方法は1つしかありません)。トークンの一部ではない入力の文字はコメントとして扱われ、破棄されます。 プログラムは入力として文字列を受け取り、出力として文字列の対応するトークン化(それぞれが文字列として表されるトークンのリスト)を返す必要があります。さらに、これは少なくとも中程度の効率で実行する必要があります。具体的には、プログラムは2次時間( "O(n²)")以上で実行する必要があります。(ちなみに、2次よりも速くなることはほぼ確実に可能ですが、これは最高速のアルゴリズムではないため、複雑な範囲内に収まる最高のアルゴリズムを自由に使用してください。) 明確化 理論上、インシデントプログラムには256オクテットのいずれかを含めることができますが、このチャレンジの目的では、プログラムが印刷可能なASCII(スペースを含む)、および改行とタブから形成された入力のみを処理することは許容されます。(すべての既知のインシデントプログラムは、このサブセットに制限されています)。スペース/改行/タブは特別ではなく、トークンの途中に表示されることに注意してください。インシデントは256オクテットすべてを不透明として扱います。 「二次時間」の定義は、「入力のサイズが2倍になった場合、プログラムは定数に4倍を加えただけ遅くなります」、つまりt(x)がプログラムにかかる最大時間サイズxの入力を処理する場合、すべてのxに対してt(2 x)<4 t(x)+ kとなるような定数kが必要です。文字列の比較には、文字列の長さに比例した時間がかかることに注意してください。 あなたのプログラムは理論的には無制限のメモリを持ち、無制限の整数を使用するあなたの言語の(おそらく仮定の)バリアントで実行される場合、任意の長さの入力プログラムを処理できるはずです言語の整数またはメモリは実際には有限の大きさです)。(複雑さを計算する目的で)入力の長さ以下の整数を一定時間で比較できると仮定することができます(たとえば、入力を単一の整数、彼らは持っている桁数に比例して比較するのに時間がかかります)。 上記のアルゴリズムと同じ手順に従わない場合でも、同じ結果が得られる限り、複雑性の範囲内に収まる任意のアルゴリズムを使用できます。 このパズルは、実際に出力をフォーマットすることではなく、入力をトークン化することに関するものです。ご使用の言語でリストを出力する最も自然な方法があいまいな形式を含む場合(たとえば、文字列にリテラル改行が含まれる場合は改行で区切られ、文字列間に区切り文字がない場合)、出力があいまいになるという事実を心配しないでください(リストが実際に構築されている限り)。テストを支援するために、明確な出力を生成するサブミッションの2番目のバージョンを作成することもできますが、元のバージョンはスコアリングにカウントされるバージョンです。 テストケース 次の入力文字列の場合: aaabcbcbcdefdfefedghijghighjkllkklmmmmonono-nonppqpq-pqprsrsrstststuvuvu プログラムは次の出力リストを生成する必要があります。 a a a bc bc bc d e f d f e f e d gh gh gh k l l k k l pq pq pq …

16
マージ競合の実行
gitなどのツールを使用して2つのファイルをマージすると、競合が検出され、マージ結果に追加される可能性があります。 これら2つのファイルのマージ: 私のファイル: Common line of code 1 Common line of code 2 my lines Common line of code 3 Common line of code 4 それらのファイル: Common line of code 1 Common line of code 2 their lines Common line of code 3 Common line of code 4 結果として: Common …

7
バイナリフォレストを植える!
A014486に触発されました。 チャレンジ 基数10の整数入力が与えられた場合、入力に対応するバイナリフォレストの表現を作成します。表現には、ネストされた配列と文字列が含まれますが、これらに限定されません。 どうやって? 入力をバイナリに変換します。1sは枝を表し、0sは葉を表します。 これを理解しやすくするために834、例として(バイナリで1101000010)を使用しましょう。 最初の数字から始めます。最初の数字は1なので、枝を描きます: \ / 1 または配列として、 {{1}} 次の数字は1なので、さらに枝を描画します(左から右に進みます)。 \ / 1 \ / 1 または配列として、 {{1, {1}}} 次の数字は0なので、葉を配置します。 0 \ / 1 \ / 1 または配列として、 {{1, {1, 0}}} 次の桁は1なので、ブランチを配置します。 \ / 0 1 \ / 1 \ / 1 または配列として、 {{1, {1, 0, {1}}}} …

11
ターミナルで雨が降っています!
チャレンジの説明 ターミナルで雨のシミュレーションを表示する必要があります。 以下の例では、100個の雨滴をランダムに追加し(言語が提供するデフォルトのランダム関数を使用)座標を調整し、0.2秒待ってから、指定された時間が経過するまで再描画します。雨滴を表すために任意の文字を使用できます。 パラメーター 再描画間の待機時間(秒単位)。 雨が見える時間。これは、反復回数を表す単なる整数です。[したがって、雨が見える正味時間は、この整数に待機時間を掛けたものです] 雨が終わったときに表示されるメッセージ。(これは中央に配置する必要があります) 画面に表示される雨滴の数。 ルール 雨滴を表すために1バイトを使用する必要があり、猫や犬でも何でも構いません。 端末サイズに対応する必要はありません。つまり、さまざまな端末サイズのバグを処理する必要はありません。端末の幅と高さは独自に指定できます。 ゴルフの標準ルールが適用されます。 コードのサンプルと出力 これは、ncursesを使用してpython 2.7で記述された非ゴルフバージョンです。 import curses import random import time myscreen = curses.initscr() curses.curs_set(0) # no cursor please HEIGHT, WIDTH = myscreen.getmaxyx() RAIN = '/' # this is what my rain drop looks like TIME = 10 def make_it_rain(window, …

19
アスキーアート「フライトシミュレーター」
編集 元の投稿のタイプミスに続いて、プレーンを定義するために小文字のoを使用し、後で大文字を使用する混乱があったようです。残念ながら、このバグはサンドボックスで検出されませんでした。多くのメンバーが両方で答えを書いているので、タイプミスが私のせいだったので、飛行機の定義で大文字または小文字のoを許可します。これに新しいルールを追加しました。 バックグラウンド アスキーアートアニメーションが好きなので、ここにもう1つあります。これは実装するのが難しすぎるとは思わないので、うまくいけば短く興味深い答えが得られるでしょう。 仲間のコミュニティメンバー全員に 答えを改善する場合は、バイトカウントを次のように変更してください。 古いバイト数新しいバイト数 進捗状況を確認できます。ありがとう! チャレンジ これはアスキープレーンです --O-- これがアスキーの滑走路です ____| |____ 飛行機は滑走路の上の5つの改行から始まります。メートル系と帝国系の間の衝突を防ぎ、これを真に国際的な課題にするために、メートルやフィートについては言及しません。例: --O-- ____| |____ 以下に示すように、飛行機は滑走路の真ん中に正確に着陸する必要があります。 ____|--O--|____ 入力 平面の最初の水平位置は、左翼の先端を参照するために使用される整数入力によって定義されます。つまり、0〜10の間です。 出力 飛行機の飛行の各段階を表示する必要があります。以下の例(input = 10): --O-- ____| |____ --O-- ____| |____ --O-- ____| |____ --O-- ____| |____ --O-- ____| |____ ____|--O--|____ 物事をシンプルに保つために、私たちは遠近法則を無視しています。滑走路は、近づくと同じサイズのままです。 ルール 更新プレーンの中央は大文字または小文字oのどちらでもかまいませんが、どちらを選択してもコード全体で一貫している必要があります。ご使用の言語が上記の文字をサポートしていない場合は、ASCIIのみの代替文字を使用してください。 平面は、フレームごとに1行下降します。 平面は、1行下がるたびに1スペースだけ左または右に移動できます。下降ラインごとに移動する必要はありません。滑走路で終了する限り、右または左に移動するのはあなた次第です。あなたはパイロットです! エラー処理は不要です。入力は常に0〜10の有効な整数であると仮定できます。 出力は上記の文字のみで構成されている必要があり(言語でサポートされていない場合は編集された最初のルールを参照)、同じサイズである必要があります。上記の例のように、高さが進むにつれて減少する場合があります。 プログラムまたは機能は問題ありませんが、上記のような出力を生成する必要があります。 …

17
それは確率的行列ですか?
確率論的マトリックスは、マルコフ連鎖の文脈で使用される確率の行列です。 右確率的行列は、各行の合計に行列です1。 左確率的行列は、各列の合計の行列です1。 二重確率的行列は、各行及び各列の和に行列です1。 この課題では、整数を使用して確率をパーセントで表します。その場合、行または列は合計する必要が100あり1ます。 あなたの目標は、入力として整数の正方行列が与えられると、行列が右確率的、左確率的、二重確率的、またはそれらのいずれでもないことを示す4つの値の1つを出力するプログラムまたは関数を書くことです。 入力 入力には、言語に自然なマトリックスの適切な表現を使用できます。たとえば、リストのリスト、行が改行で区切られたコンマ区切り値の文字列など。 入力行列は常に正方であり、負でない整数のみを含みます。入力行列は常に少なくともになり1×1ます。 を使用して入力を渡すことができSTDINます、関数の引数として、または類似のもの。 出力 右確率的、左確率的、二重確率的、またはそれらのいずれにも対応しない4つの異なる出力を選択する必要があります。これらの出力は、渡される入力に関係なく一定でなければなりません。あなたのプログラムは同じケースに対して異なる出力を返さないかもしれません。例えば、負の数はそれらのどれにも対応しないと言っては無効です。 要するに、出力と4つの可能なケースとの間には1対1の対応が必要です。これらの4つの出力のいくつかの例は{1, 2, 3, 4}、{[1,0], [0,1], [1,1], [0,0]}またはでさえあり{right, left, doubly, none}ます。 プログラムが使用する4つの出力を答えてください。 行列が二重確率である場合、右または左の確率ではなく、二重確率に対応する出力を返す必要があります。 出力をSTDOUTに印刷し、関数から返すか、類似のものを返すことができます。 テストケース [100] => Doubly stochastic [42] => None of those [100 0 ] => Doubly stochastic [0 100] [4 8 15] [16 23 42] => …
24 code-golf  matrix 

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