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

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

11
Stackylogicを実行する
Stackylogicは、私がそのテイクアップ作られたロジックベースのプログラミング言語である0のと1、入力用のを単一出力0または1上に完了したことを。 Stackylogicプログラムは、3文字01?だけでなく<、1行の最後に1 文字だけを含むことができる行で構成されます。行は空ではないかもしれないとして行が<少なくとも一つ持っている必要があります0、1または?それ以前に。 これは(説明しますが)2ビットのNANDを計算するサンプルプログラムです。 1 ?< 11 ? 0 Stackylogicプログラムのすべての行はスタックと見なされ、下が左、上が右になります。暗黙的に、プログラムの最初の行の前と最後の行の後に空のスタック(空の行)があります。 <我々は呼んでよこれ、カーソルを Stackylogicプログラムが実行されたときに起動するマークスタック。Stackylogicプログラムの実行は次のように進行します。 カーソルが現在指しているスタックから一番上の文字をポップします。 キャラクターがの場合、?ユーザーに0またはのプロンプトを表示し、それがキャラクターであるかのよう1に振る舞います。 文字がの場合、0カーソルを1スタック上に(現在の行の上の行に)移動します。 文字がの場合、1カーソルを1スタック下に(現在の行の下の行に)移動します。 カーソルの移動先のスタックが空の場合、スタックからポップされた最後の値(常にa 0または1)を出力し、プログラムを終了します。 それ以外の場合、カーソルの移動先のスタックが空でない場合は、手順1に戻ってプロセスを繰り返します。 Stackylogicプログラムは常にスタックを使い果たすため、常に終了することに注意してください。 NANDの例 NANDプログラムでは、カーソルは次の位置から始まります?。 1 ?< 11 ? 0 私たちは、入力、ユーザーを仮定します1一度?カーソルがこのようなプログラムを見て作り、下に移動することを意味している、ポップされます。 1 11< ? 0 これ1で、カーソルスタックの最上部にプレーンが表示されます。適切にポップされ、カーソルが再び移動します。 1 1 ?< 0 今、ユーザ入力仮定0のための?カーソルが上に移動することを意味し、: 1 1< 0 再び、a 1がカーソルスタック上にあるため、カーソルがポップして下に移動します。 1 < 0 最後に、カーソルスタックは空なので、最後にポップされた値が1出力され、プログラムが終了します。 であるため、これはNANDゲートに対して正確1 NAND 0です1。もちろん、これは他の3つの2ビット入力でも確認できます。 …

23
16進数とアルファベット
このチャレンジでは、入力を受け取り、16進数に変換し、いくつかの変更を加えて、結果を出力します。 16進数で16文字しかないため、コードはできるだけ短くする必要があります。 例 例は空白行で区切られています。1行目は入力、2行目はステップ、3行目は出力を示しています 234589 234589 -> 3945D -> 39454 -> 9A1E -> 9115 -> 239B -> 2392 -> 958 958 435234 435234 -> 6A422 -> 61422 -> EFEE -> 5655 -> 1617 1617 153 153 -> 99 -> 99 -> 63 1617 手順 入力は常に正の整数になります 出力を生成するには、次の手順に従います。 入力を16進数に変換します アルファベットで自分のインデックスを持つ任意の文字を置き換えます(例a -> 1, …

18
すべてのIPv6アドレスを印刷する
これは、数年前に誰かが急流「ハッカーツール:すべてのIPアドレスの完全なリスト」をアップロードしたことを思い出します。これは、もちろん、生成された〜40億のIPv4アドレスのリストでしたが、何千もの「h4xx0rz」がそれをダウンロードしました。ママ、imahackerを見てください! これは当時でしたが、今日では誰もがIPv6に切り替えています。(右?) あなたの仕事は、すべてのIPv6アドレスを出力するプログラムを書くことです。 入力を一切受け取らず、IPv6アドレスを1行に1つずつ出力し、他の出力を出力しない完全なプログラムを作成する必要があります。プログラムは、無効なものも含めて、2 128の可能なアドレスすべてを印刷する必要があります。各住所は1回だけ印刷する必要があります。アドレスは任意の順序で印刷できます。 各アドレスは、コロンで区切られた4つの16進数の8つのグループで完全に印刷できます。たとえば、 2001:0db8:85a3:0000:0000:8a2e:0370:7334 あなたの裁量で、RFC 5952の標準的な略語のいずれかを使用できます。 グループ内の先頭のゼロは省略できますが、0それ以上短縮することはできません。 :: 1つまたは複数のすべてゼロのグループのシーケンスを短縮するために、アドレスごとに最大1回使用できます。 16進数では、小文字または大文字を使用できます。 あなたが達成した場合、RFC 5952から表現勧告を(小文字のみ、最短の表現と::、それは使用することができ、複数の場所がある場合はできるだけ早くとして使用)、あなたが得る-20%のボーナスを。 出力のサイズが原因で、プログラムがそこに座っている間に終了することはありません。プログラムは、ある時点で外部の手段によって中断される可能性があります(Ctrl+ C、電源を抜くなど)。プログラムは出力をストリームとして生成する必要があります。そのため、「合理的な」待機の後、いくつかの行が生成されます。基本的に、最後に印刷するためだけにメモリに巨大な文字列を作成することは許可されていません。「標準」PCでメモリ不足になるプログラムはすべて失格となります。(それでも、プログラムが十分な時間実行されない場合、すべてのIPv6アドレスを出力して終了する必要があります。) (この状態が、完了するまでプログラムを実行してから出力を表示するWebインタープリターにとって問題であり、ホストされたインタープリターがない場合は、問題の小さいバージョンでプログラムをテストし、慎重に調整しますフル2 128まで。) スコアは、プログラムのバイト単位の長さで、ボーナスを獲得した場合は0.8倍されます。それはコードゴルフですので、最低スコアが勝ちます。

1
線形時間の最長共通部分文字列
この課題は、次の問題を解決するコードを記述することです。 2つの文字列AとBを指定すると、コードはAの部分文字列の開始インデックスと終了インデックスを次のプロパティで出力する必要があります。 Aの部分文字列もBの部分文字列と一致する必要があります。 最初のプロパティを満たすAの部分文字列はもうないはずです。 例えば: A = xxxappleyyyyyyy B = zapplezzz appleインデックス付きの部分文字列4 8(1からのインデックス)は有効な出力になります。 機能性 入力は、ローカルディレクトリ内のファイルまたはローカルディレクトリ内のファイルにあると想定できます。これが選択です。ファイル形式は、新しい行で区切られた2つの文字列になります。答えは、単なる機能ではなく、完全なプログラムでなければなりません。 最終的には、http://hgdownload.cse.ucsc.edu/goldenPath/hg38/chromosomes/の文字列から取得した2つの部分文字列でコードをテストしたいと思います。 スコア これはひねりを加えたコードゴルフです。コードはO(n)時間内に実行する必要がnあります。これは入力の全長です。 言語とライブラリ 自由に利用できるコンパイラー/インタープリター/などを備えた任意の言語を使用できます。Linuxの場合。このタスクを解決するように設計されていない標準のオープンソースライブラリのみを使用してください。論争の場合、これはあなたの言語に標準で付属しているライブラリ、またはデフォルトのリポジトリからデフォルトのubuntuマシンにインストールできるライブラリとしてカウントします。 有用な情報 この問題を線形時間で解決するには、少なくとも2つの方法があります。1つは最初にサフィックスツリーを計算することで、2つ目は最初にサフィックス配列とLCP配列を計算することです。 ここに、線形時間接尾辞ツリー構築の完全な(おそらく多すぎる)詳細な説明があります(残念ながら、図の一部が台無しになっています)。https://stackoverflow.com/questions/9452701/ukkonens-suffix-tree-algorithm-in-plain-englishには、線形時間サフィックスツリーの構築に関する非常に良いSO回答もあります。ソースコードへのリンクも含まれています。別の詳細な説明がここにあります。今回はCで完全なソリューションを提供します。 http://www.cs.cmu.edu/~guyb/realworld/papersS04/KaSa03.pdfのセクション2は線形時間接尾辞配列構築アルゴリズムを示し、付録AにはC ++ソースコードがあります。この回答は、最長の共通部分文字列https://cs.stackexchange.com/questions/9555/computing-the-longest-common-substring-of-two-strings-using-suffix-arraysを計算する方法を示しています。関連するビデオ講義もあるhttps://courses.csail.mit.edu/6.851/spring12/scribe/lec16.pdfのセクション5 https://courses.csail.mit.edu/6.851/spring12/lectures/L16 .htmlは1:16:00から始まる同じアルゴリズムについても説明しています。

30
2つの正方形の合計を数える
負でないn数値を指定するとn、整数の2乗の合計として表現する方法の数を出力しますn == a^2 + b^2(OEIS A004018)。注ことaとb、正、負、またはゼロ、及びその順序事項することができます。最少バイトが勝ちます。 例えば、n=25与える12ため25のように表すことができます。 (5)^2 + (0)^2 (4)^2 + (3)^2 (3)^2 + (4)^2 (0)^2 + (5)^2 (-3)^2 + (4)^2 (-4)^2 + (3)^2 (-5)^2 + (0)^2 (-4)^2 + (-3)^2 (-3)^2 + (-4)^2 (0)^2 + (-5)^2 (3)^2 + (-4)^2 (4)^2 + (-3)^2 以下がの値n=25です。コードがで動作するように注意してくださいn=0。 0 1 1 4 2 4 …

19
ショットガン番号
散弾銃の数はかなり単純な定義はなく、いくつかの興味深い構造を持つ配列で。自然数から始めます。 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ... 次に、2で割り切れるインデックスですべての数値を取得し、それらをペアにグループ化し、各ペアの数値を交換します。 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ... ^ ^ ^ ^ ^ ^ ^ <---> <---> <-----> <---- 1, …

30
私を愛している、私を愛していない
私を愛している、私を愛していない このシンプルな子供向けゲームは古いですが、まだ人気があります。私たちは今21世紀に生きているので、デジタル化しましょう! 仕様 ランダムシードを生成できない言語を使用している場合を除き、プログラムは入力を受け付けません。その場合、シードを入力として取得できます。あなたの仕事は、ゲーム内のように、「Loves me ...」と「Loves me not ...」の合計3〜20行をランダムに出力するプログラムを作成することです(追加の1行。読書)。 ただし、いくつかの制限があります。各行の後に改行が必要です。最初の行は「Loves me ...」でなければなりません。最後の行(「Loves me」または「Loves me not」)は、それぞれ感嘆符または単一のドットで終わる必要があります。最後の行の後、「愛してる!」に応じて、新しい行にheart(<3)または壊れたハート(</3)を出力する必要があります。または「私を愛していない」。最後の文でした。 末尾の空白は許可されます。 出力例 出力: 私を愛して...私を 愛していない... 私を愛して... 私を愛していない... 私を愛して! <3 別の出力: 私を愛して...私を 愛していない... 私を愛して... 私を愛していない。 </ 3 これがcode-golfなので、最短のエントリーが勝ちです! また、私の最初の挑戦:)がんばって!

30
円形のパスを移動する単一ピクセル
これは、タスクが言語ごとに最短のコードを提供することであるグラフィカル出力の課題です。 仕事 コードは、単一の紫色のピクセル(16進数値#800080またはrgb(128、0、128))をプロットし、時計回りに円を描いて移動する必要があります。円を一周するのにちょうど60秒かかり、無期限に継続する必要があります。ピクセル以外は、画面またはウィンドウに何も表示されません。円の幅は、画面またはウィンドウの幅の0.75(適切に丸める)で、背景は白である必要があります。愚かな解決策を防ぐには、画面またはウィンドウの幅を少なくとも100ピクセルにする必要があります。 あなたのコードは完全なプログラムでなければなりません。 言語とライブラリ 任意の言語またはライブラリを使用できます。ただし、可能な場合はコードをテストできるようにしたいので、Ubuntuでコードを実行する方法について明確な指示を提供できれば非常にありがたいです。 上位20言語がありません。助けが必要です。 現在、次の上位20のプログラミング言語にはソリューションがまったくありません。 C、C ++、C#、Python、PHP、Visual Basic .NET、Perl、Delphi / Object Pascal、アセンブリ、Objective-C、Swift、Pascal、Matlab / Octave、PL / SQL、OpenEdge ABL、R カタログ この投稿の下部にあるスタックスニペットは、a)言語ごとの最短ソリューションのリストとして、b)全体的なリーダーボードとして、回答からカタログを生成します。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 ## Language Name, N bytes N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: ## Ruby, <s>104</s> <s>101</s> 96 bytes ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。 ## Perl, 43 + 2 (-p flag) = 45 bytes 言語名をリンクにして、スニペットに表示することもできます。 ## [><>](http://esolangs.org/wiki/Fish), 121 …

4
豚は飛べますか?
仕事 あなたの仕事は、いくつかの文を分析し、ブタが飛ぶことができるそれらの文から結論を出すことができるかどうかを決定する、選択した言語で関数またはプログラムを書くことです。 入力 入力は、STDINから読み取ることができる文字列で、関数の引数として取得するか、ファイルに保存することもできます。入力は、次のEBNFを使用して説明できます。 input = statement , {statement}; statement = (("Pigs are ", attribute) | ("Everything that is ", attribute, "is also ", attribute)), ". "; attribute = [not], ("able to fly" | singleAttribute); singleAttribute = letter, {letter}; letter = "a" | "b" | "c" | "d" | "e" …

18
この文字列をいくつまでカットできますか?
実際の行で前後に折り畳まれた文字列(「ロープ」のように、「文字の束」のようにではない)を考えてください。文字列の形状を、通過するポイントのリストで(順番に)記述できます。簡単にするために、これらのポイントはすべて整数であると仮定します。 例として[-1, 3, 1, -2, 5, 2, 3, 4]考えます(各エントリがフォールドを意味するわけではないことに注意してください): 垂直方向に沿って延びる文字列は、視覚化のみを目的としています。文字列がすべて実際の線上に平らになっていると想像してください。 ここで問題があります:この文字列は、1つのカット(上記の写真では垂直でなければなりません)でカットできるピースの最大数です。この場合、答えは6で、2との間にカットがあり3ます: あいまいさを避けるため、切り取りは非整数位置で実行する必要があります。 挑戦 文字列が折り返される整数位置のリストが与えられた場合、非整数位置での単一カットで文字列を切り取ることができるピースの最大数を決定します。 完全なプログラムまたは関数を作成できます。STDIN、コマンドライン引数、プロンプトまたは関数パラメーターを介して入力を受け取ることができます。出力をSTDOUTに書き込んだり、ダイアログボックスに表示したり、関数から返すことができます。 リストは便利なリスト形式または文字列形式であると想定できます。 リストには、少なくとも2から100までのエントリが含まれます。エントリは整数、範囲内の各あろう-2 31 ≤P I <2 31。2つの連続したエントリが同一ではないと想定できます。 コードは、合理的なデスクトップPCで10秒未満でそのような入力(以下のテストケースを含む)を処理する必要があります。 テストケース すべてのテストケースは、単に入力の後に出力が続きます。 [0, 1] 2 [2147483647, -2147483648] 2 [0, 1, -1] 3 [1, 0, -1] 2 [-1, 3, 1, -2, 5, 2, 3, 4] 6 [-1122432493, -1297520062, …

13
型なしラムダ計算のインタープリターを作成する
課題は、型付けされていないラムダ計算のインタプリタをできるだけ少ない文字で記述することです。型なしラムダ計算を次のように定義します。 構文 次の3種類の式があります。 ラムダ式は、フォームがあるいかなる法的な変数名となる可能性が法的表現を。ここはパラメータと呼ばれ、関数本体と呼ばれます。(λ x. e)xexe 簡単にするために、x現在スコープ内にあるのと同じ名前の変数があってはならないという制限を追加します。変数は、その名の間に表示されたときに範囲にあることが始まり(λと.し、対応するの範囲であることを停止します)。 関数適用の形式は(f a)where fおよびaareの正規表現です。ここfは関数とa呼ばれ、引数と呼ばれます。 変数は、フォームがある法的な変数名です。xx 意味論 関数は、関数本体内のパラメーターの各オカレンスを引数で置き換えることにより適用されます。より正式フォームの発現((λ x. e) a)、x変数名、eおよびa式に表現、評価する(又は減少)しているの各発生を交換した結果であるに有します。e'e'xea 正規形は、それ以上評価できない式です。 挑戦 あなたの使命は、それを受け入れることを選択した場合、自由変数を含まない型なしラムダ計算の入力を入力として受け取り、その出力として式の正規形(またはそれに一致する式)を生成するインタープリターを書くことです。式に正規形がないか、有効な式でない場合、動作は未定義です。 文字数が最小のソリューションが優先されます。 いくつかのメモ: 入力は、stdinまたはコマンドライン引数として指定されたファイル名から読み取ることができます(両方ではなく、どちらか一方のみを実装する必要があります)。出力は標準出力に送られます。 または、入力を文字列として受け取り、出力を文字列として返す関数を定義できます。 非ASCII文字に問題がある場合は、\λの代わりにバックスラッシュ()文字を使用できます。 バイトではなく文字数をカウントするため、ソースファイルがUnicodeとしてエンコードされている場合でも、λは1文字としてカウントされます。 有効な変数名は1つ以上の小文字、つまりaとzの間の文字で構成されます(英数字名、大文字、または非ラテン文字をサポートする必要はありません-もちろん、そうすることでソリューションが無効になることはありません)。 この課題に関する限り、オプションの括弧はありません。各ラムダ式と各関数アプリケーションは、ちょうど1組の括弧で囲まれます。変数名は括弧で囲まれません。 書き込みなどの糖衣構文(λ x y. e)のためには(λ x. (λ y. e))、サポートする必要はありません。 関数を評価するために100を超える再帰の深さが必要な場合、動作は未定義です。これは、すべての言語で最適化せずに実装するのに十分なほど低く、ほとんどの式を実行できるほど十分に大きい必要があります。 また、無入力の開始時と終了時または前にスペースすなわち、その間隔は例のようになりますと仮定しないかもしれないλか、.1つだけ空白の後.と関数とその引数の間と後λ。 サンプルの入力と出力 入力: ((λ x. x) (λ y. (λ z. z))) 出力: (λ y. …

30
PowerShellでのゴルフのヒント
Windows PowerShellでゴルフをするための一般的なヒントは何ですか?私は、PowerShellに少なくともある程度固有の一般的なゴルフ問題のコーディングに適用できるアイデアを探しています(たとえば、「コメントの削除」は答えではありません)。回答ごとに1つのヒントを投稿してください。 -marcog の質問からほぼ逐語的に取られた。

14
ASCIIトレインに乗るすべて
ASCIIトレインにすべて乗ろう! o O O ___ ___ ___ ___ ___ ___ ___ ___ ___ o | C | | O | | D | | E | | | | G | | O | | L | | F | TS__[O] |___| |___| |___| |___| |___| |___| |___| |___| |___| …

30
出力プログラミング言語名
チャレンジ: 選択したプログラミング言語では、プログラミング言語の名前を入力および出力しないでください。 結構ですよね? 制限事項: コードのプログラミング言語の名前に含まれる文字は使用できません。たとえば、バッチを使用する場合、コードで文字「B」「a」t「c」「h」を使用しないでください。これは大文字と小文字を区別することに注意してください。文字「b」は「B」とは異なるため、引き続き使用できます。 言語の名前の前後に「ジャンク出力」を持つことができます バージョン番号は、言語の名前の一部としてカウントされません。たとえば、Python 3の場合は、回答のコードで3番を使用できます プログラミング言語名の出力では、大文字と小文字は区別されません。 可能なすべての文字の組み合わせを強引に強制し、言語名を取得することを希望することは禁止されています。 出力例:(私のプログラミング言語はLanguageと呼ばれます)(有効な場合は✔、そうでない場合は✖) Language ✔ Body language is a type of non-verbal communication in which physical behavior, as opposed to words, is used to express or convey information. Such behavior includes facial expressions, body posture, gestures, eye movement, touch and the use …

16
新たに発見された数字:bleen!
「数学でのノーベル賞は、新しい数字を発見したカリフォルニアの教授に授与されました。数字は、6〜7の間にあると主張する不鮮明です。」 -ジョージ・カーリン このチャレンジでは、指定された入力範囲内のすべての整数を含めて印刷します。入力順序に従って番号を昇順または降順で出力します。すなわち、入力のために[n1, n2]、印刷上昇した場合n1 < n2、下降場合n1 > n2。 ためには、bleen今では入力として使用することができる整数です。また、該当する場合6と7該当する場合、出力に含める必要があります。また-bleen、-7と-6の間に存在することに注意してください。 入力 [n1, n2]選択したプログラミング言語の入力を介した、範囲[-10、10]の2つの整数。 (入力も含まれていてもよいbleenと-bleen!) 出力 6から7までの新しく発見されたものを含む、n1で始まりで終わるすべての整数を出力します。出力は、言語がサポートする何らかの形式の文字で区切られた数値の範囲です。出力の1つの末尾のスペースは問題ありません。n2bleen 例 Input: 1 10 Output: 1 2 3 4 5 6 bleen 7 8 9 10 Input: -9 -4 Output: -9 -8 -7 -bleen -6 -5 -4 Input: -8 bleen Output: -8 -7 -bleen -6 …
44 code-golf  number 

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