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

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

30
;#インタープリターを作成する
私は最近、;#2つのコマンドのみを持つ新しい言語(「セミコロンハッシュ」と発音)を作成しました。 ; アキュムレーターに1つ追加します #アキュムレータを127でモジュロし、ASCII文字に変換して、改行なしで出力します。この後、アキュムレータを0にリセットします。はい、127は正しいです。 その他の文字は無視されます。それはアキュムレータに影響を与えず、何もしません。 あなたの仕事は、この強力な言語のインタープリターを作成することです! 完全なプログラムか、;#プログラムを入力として受け取り、正しい出力を生成する関数のいずれかでなければなりません。 例 Output: Hello, World! Program: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;# Output: ;# Program: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;# Output: 2d{ (unprintable characters here; should have 4 `\000` bytes between the `d` and the `{` and 3 after the `{`) Program: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;hafh;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;f;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;###ffh#h#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ffea;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#au###h;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;h;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;o Output: Fizz Buzz output Program: link below Output: ! Program: …

30
アートアタックKoTH
応募は締め切りました。最終的な実行では、新しいエントリや編集はカウントされません。 チャットに参加してください! チャレンジ できるだけ多くのペイントでキャンバスを塗りつぶしてください。あなたのハードワークをペイントする可能性のある他のボットに注意してください! 注:このチャレンジの説明では、ペイントはグリッド上の正方形の色を変更することを意味し、ペイントされていないことはグリッド上の正方形の色が0であり、ボットに帰属しないことを意味します。 入力 関数には4つの引数が与えられます:あなた自身、グリッド、グリッド上のすべてのボットの位置、およびゲーム情報。 自分 これは、グリッド上の色と位置を示す1D配列です[id, xpos, ypos]。 グリッドの左上隅が位置(0, 0)です。位置(1,0)はその右側にあり、位置(0,1)は下にあります あなたのidはあなたの色と同義の整数です(あなたのidがどのようにグリッドをペイントするかに影響するかを知るために以下を見てください)。IDはボットに固有です。 グリッド これは、各セルの色を示す整数を含む2D配列です。グリッドセルの番号がの場合、0セルは未塗装であることを意味します。グリッドセルの数が整数であるならx、これはセルがボットによってIDで塗られたことを意味しますx。 positionのグリッドの色を取得するには、次の(x, y)ような配列を使用しますgrid[x][y]。 ボット これは、ボットの位置に関する情報を含む配列です。ボット配列の各要素は、各ボットを記述する配列であり、次のようになります[id, xpos, ypos]。ここidで、はボットのID、ボットxposのx位置、ボットyposのy位置です。 この配列には、独自のボットの位置とIDが含まれます。排除されたボットはこの配列に含まれません。 ゲーム情報 これは、現在のゲームに関する情報を含む配列で、次のように表示されます。[roundNum, maxRounds]ここroundNumで、現在のラウンドの番号(1から始まる)とmaxRounds、現在のゲームのラウンドの数です。 出力 出力は、関数によって返される文字列である必要があります。これは移動コマンドです。 移動コマンドは、次の移動を決定します。使用可能なコマンドは次のとおりです。 up down left right wait 移動するたびに、移動先の正方形をペイントします。(詳細については以下を参照) どこにwait移動しないことを意味します。(ただし、滞在する正方形をペイントします) グリッドの外側に移動しようとすると、コマンドは無視され、同じ場所に留まります。 グリッドのペイント 正方形に移動するたびにペイントしますが、その正方形の色を決定するルールがあります。 正方形がペイントされていない(0)場合は、自分のIDと同じ色で単純にペイントします。ただし、以前に正方形がペイントされていた場合(ゼロ以外)、次のJavaScriptコードに従って、正方形の結果の色が検出されます。 [botColour, 0, floorColour][Math.abs(botColour - floorColour)%3] この式は、ボットが再ペイントせずに独自の色の上を移動できるように作成されています。 消去 ラウンド5の後に、1つ以下の正方形(グリッドと同じ色の正方形の数)がペイントされている場合、排除されます。これは、あなたがゲームに参加しなくなり、自動的に負けることを意味します。 ルール コードは次の型の関数でなければなりません …

30
プログラミング言語クイズ、マークII-警官
この課題の再投稿。メタディスカッション。サンドボックスの投稿。元の質問に類似した質問の本文 強盗の挑戦 この警官と強盗は、現在(2018年8月3日)さらなる警官エントリに対して閉鎖されています。これは、強盗がもはや解答をクラックする競争を行っていない可能性があるためです。 デニスが6バイトのセソスの素晴らしい回答で Copsチャレンジに勝ちました 強盗チャレンジは、驚異的な30のひび割れで、完全に人間によって勝利されました! 警官の挑戦 警官として競争するには: プログラミング言語を選択します。有効なプログラミング言語は、次の3つの基準をすべて満たす言語です。 それは持っている英語版ウィキペディアの記事、esolangs記事やロゼッタコード記事このチャレンジが投稿された時点での、または上にあるオンラインそれを試してみてください!。これらのページのいずれかにインタープリターをリンクすると、そのインタープリターが完全に合法になります。 プログラミング言語の構成要素に関する規則を満たさなければならない ビールのように無料の通訳が必要です。ここで無料とは、誰もが支払うことなくプログラムを使用できることを意味します。 1から100までの数値を昇順で出力する完全なプログラムを作成します。10進整数、バイトコード値(!たとえば33を表す)、または単項数字(11114など)1として出力できます。単項を使用する場合は、数字に一貫した文字を使用し、区切り文字として別​​の一貫した文字を使用する必要があります。整数を使用する場合は、各数字の間に一定の非数字区切り文字を使用して出力する必要があります。また、先頭と末尾の文字(など[])を出力することもできますが、賢明です(たとえば、カウントの両側に1000バイトのゴミを出力しないでください)。回答に出力形式を指定する必要があります。 REPL環境または既存の定型コードを想定しないでください。フラグを使用できますが、回答で使用されているフラグを明らかにする必要があります。プログラムは1つ以上のソースファイル(フォルダーなどの風変わりな言語を除外するため)の形式である必要があり、完全に回答に収まる必要があります(したがって、65,536文字を超えてはなりません)-これは問題ではありません深刻な提出。 コードに印刷可能なASCII +改行以外のバイトが含まれている場合は、16進ダンプを含めて、コードが実際にテスト可能であることを確認してください。 プログラムは、典型的なデスクトップPCで5分以内に終了する必要があります。 それでおしまい。ただし、すべての場合と同様に、キャッチがあります。Robbersのタスクは使用した言語を推測することなので、プログラムをできるだけ難読化することを目指してください。また、プログラムが意図した言語でのみ動作することを確認する必要があります(ただし、これは元のチャレンジでFooがクラックするよりも問題が少ない可能性が高いです)。有効なクラックを構成するには、出力形式が目的のソリューションと同じである必要があります。 一度7日は発見誰もせずに経過している任意のプログラムが有効な亀裂である言語を、あなたは言語を明らかにし、としてそれをマークすることsafe。言語を公開するまで、提出物は引き続きクラックされる可能性があることに注意してください。 どのような状況でも、投稿された投稿のソースコードを編集してはなりません(これにより、強盗が答えを解読しようとする積極的な試みが無効になる可能性があるため)。投稿する前に、できる限りゴルフをする(またはあえて)ことを確認してください。回答を投稿してもうまくいかない場合は、回答を削除し、必要に応じて修正バージョンを投稿してください。 バイト単位の最短の安全な提出が勝ちです! 1:別の方法で出力したい場合は、コメントで質問してください スタックスニペット このスタックスニペットを使用して、回答をより簡単に閲覧できます。 answersSafe=[];answersCracked=[];answersUncracked=[];answerPage=1;robberTodo=[];userNames={};robberMap={};robberStats={};robberTimes={};function template($element,data){var $clone=$element.clone().removeClass('template');var html=$clone.html();for(var key in data){html=html.replace('{'+key+'}',data[key])}$clone.html(html);$element.after($clone)}function hideEmpty(){$('tbody').each(function(){if($(this).find('tr:not(.template):has(td)').length==0){$(this).find('tr:not(.empty):has(th)').addClass('inactive');$(this).find('tr.empty').removeClass('inactive')}})}function formatError(obj,reason){template($('.warn.template'),{id:obj.cop_id,cop:obj.cop_user,reason:reason})}function showAnswers(category,selector,sorter){sorter(category);$('#'+selector).find('tr:not(.template):has(td)').remove();$.each(category,function(i,answer){template($('#'+selector+' .template'),answer)});$('code:has(br)').addClass('clickable').click(function(){$(this).toggleClass('full')});updateCountdowns()}function getAnswers(){$.ajax({url:"https://api.stackexchange.com/2.2/questions/155018/answers?pagesize=100&order=desc&sort=creation&site=codegolf&filter=!*LUzJZNOIUpZsWsZBLe&page="+(answerPage++),method:"get",dataType:"jsonp"}).then(function(data){$.each(data.items,function(i,answer){var obj={cop_id:answer.answer_id,cop_user:answer.owner.display_name,cop_time:answer.creation_date,safe_on:answer.creation_date+604800};var $e=$('<div/>').html(answer.body);var $headers=$e.find(':header');if($headers.length==0){return formatError(obj,"no header")}var header=$headers.first().html();var $code=$e.find('pre code');if($code.length==0){return formatError(obj,"no code")}obj.code=$code.first().html().replace(/\n/g,'<br/>');if(obj.code.endsWith('<br/>')){obj.code=obj.code.slice(0,-5)}var bm=/(\d+)\s+bytes/.exec(header);if(bm==null){return formatError(obj,"no bytecount")}obj.size=parseInt(bm[1]);if(obj.size==NaN){return formatError(obj,"bytecount …

30
あなたの言語を*ほとんど*使用不可にします!(警官のスレッド)
このコメントに触発された... 投稿する前にこの課題の仕様を固めるのを手伝ってくれたユーザー、Step Hen、Wheat-Wizard、Dennisに感謝します! これは警官のスレッドです。強盗のスレッドについては、こちらをご覧ください ではこの課題は、あなたの言語は、もはやプログラミング言語であることの私達の基準を満たすようにそれを行うものではありませんいくつかのコードを実行する使命を帯びています。その挑戦では、それは言語がもはやできないようにすることを意味します... 数値の入出力を行う 2つの数字を一緒に追加します 特定の数が素数かどうかをテストします。 これは警官と強盗の課題であり、2つの異なる目的を持つ2つの異なる課題があります。警官は言語をほとんど使用できないようにするコードを記述しようとし、強盗は警官を許可する隠れた回避策を見つけようとします言語を回復します。 警官として、次の2つのコードスニペットを記述する必要があります。 たとえば、入力/出力および数値演算を行うための組み込み関数を削除することにより、言語をほとんど使用できなくするもの。削除する機能が多いほど、優れています。このコードは、クラッシュまたは終了することはできません。このスニペットの最後にコードを追加することが可能であるべきであり、そのコードは評価されます。そして... ... 2つの非負の整数を入力として受け取り、それらを加算して合計を出力するコードスニペット。このスニペットは、最初のスニペットを実行した後でも正しく機能する必要があります。2つのスニペットを組み合わせる場合、2つの数字を追加する完全なプログラムを形成するか、2つの数字を追加する関数を定義する必要があります。理想的には、このスニペットは非常に不明瞭な動作に依存し、見つけにくいようにする必要があります。 入出力の標準的な方法を選択できます。ただし、使用している形式(入力および出力)を正確に明らかにする必要があります。強盗は、あなたと同じ形式を使用しない限り、答えを解読できません。 これらのスニペットを両方とも作成した後、2番目のスニペットを公開せずに、最初の1つを回答として投稿する必要があります。回答には、次の情報がすべて含まれている必要があります。 最初のスニペット(明らかではない第二)。 言語(マイナーバージョンを含む、ほとんどの提出物はおそらく奇妙なエッジケースに依存するため) 関数か完全なプログラムかを含むIO形式。強盗は、クラックを有効にするために同じ形式を使用する必要があります。 答えが機能するために必要な奇妙なケース。たとえば、Linuxでのみ実行されるか、インターネット接続が必要です。明らかに、これは少し主観的ですが、警官にひび割れを防ぐ極端なケースがあり、安全になってからこれを明らかにする場合、私はこの貧弱なスポーツマンシップを考慮します。潜在的な強盗には、解答を解読する前に解答するために必要なすべての情報が必要です。 答えが安全になるまで、バイトカウントを明らかにする必要はありません。 以下に例を示します。最初のスニペットでは、次のPython 3プログラムを送信できます。 Python 3 print=None STDINから入力を受け取り、STDOUTに出力します 次に、2番目のスニペットとして、次のように記述できます。 import sys a,b=int(input()),int(input()) sys.stdout.write(a+b) これは、入力として2つの数値を受け取り、2つのスニペットを結合した場合でも合計を出力するため、有効です。たとえば、 print=None import sys a,b=int(input()),int(input()) sys.stdout.write(a+b) ただし、これは強盗が解決策を見つけるのは非常に簡単です。これは非常に簡単にクラックできるため、次のようにこの特定のアプローチにパッチを当てることができます。 import sys sys.stdout=None print=None ただし、これでも非常に簡単な回避策があります。 del print a,b=int(input()),int(input()) print(a+b) 警官としてのあなたの目標は、隠れた回避策を可能な限り曖昧にして、強盗がそれを見つけないようにすることです。 強盗は、あなたの答えの一つを見て、それを解読しようとします。彼らは、スニペット2として機能する有効なスニペットを書くことでそれをクラックするかもしれません(言語がほとんど使用できなくなった後に2つの数字を一緒に追加します)。これは、最初に意図したものと同じスニペットである必要はありません。強盗があなたの答えをクラックした場合、彼らはあなたの答えにコメントを残します、そしてあなたはそれがクラックされたことを示すためにそれを編集する必要があります。投稿にクラックがある場合は、回答を編集して、最初に意図したソリューション(スニペット2)を表示する必要があります。これはルールそのものではなく、ゲームを楽しくするための友好的な提案です。あなたがする必要はありません。 回答が1週間ひび割れていない場合は、2番目のスニペットで編集して、回答が安全であることを示すことができます。週が過ぎた後に編集しない場合、他のユーザーはあなたが行うまでそれをクラックすることができます。2番目のスニペットを公開しない場合、回答のポイントを請求したり、安全に呼び出したりすることはできません。 …

30
最短の自動破壊ループ
あなたの仕事はまったく入力を取らず、ループの任意のタイプ(実行フルプログラムまたは機能書き込むことでwhile、for、foreach、do、do-while、do-loop、gotoプログラムの実行自体を停止しなければならないことを意味し、エラーの原因で終了する、再帰など)と出口。 ルール: エラーは、実行時エラー、未処理の例外、またはプログラムを終了させるものでなければなりません。 エラーはexit;、ある時点で明示的に(または同等の)呼び出しをせずに、プログラムを停止して終了する必要があります。 以下のようなメッセージがWarning:、Notice:自身に終了するプログラムを引き起こさない、などは、有効ではありません。たとえば、PHPのゼロ除算ではWarningメッセージが生成されますが、プログラムは停止せずに実行されますが、これは有効な答えではありません。 ループは少なくとも1フルサイクル実行する必要があります。言い換えれば、エラーは2番目のサイクル以降で発生する可能性があります。これは、誤ったコード構文を使用してエラーを発生させないようにするためです。コードは構文的に正しい必要があります。 for(;;);上記のルールを順守している場合、ループは無限になります(例) 末尾呼び出しの最適化なしの再帰は(無効である1、2)。 これはコードゴルフなので、最短のコードが優先されます。 標準的な抜け穴は禁止されています。 C#の例(オンラインテスト): using System; public class Program { public static void Main() { int i; int[] n; n = new int[5]; for(i=0; i<7; i++) { n[i] = i; Console.WriteLine(n[i]); } } } Output: 0 1 2 3 4 Run-time exception (line …
61 code-golf 

28
6が7を恐れていたのはなぜですか?
6が7を恐れていたのはなぜですか?なぜなら7 8 9! 文字列を指定すると、次の変換が適用されます。 7の隣に6がある場合、6を削除します(6は7を恐れています) シーケンス「789」が表示される場合、8と9を削除します(7 ate 9) (私が間違っていなければ、どの順序で変換を行うかは関係ありません) これらの変換を適用できなくなるまで続けます。 例: 78966 最初に「789」が表示されるため、文字列は「766」になります。次に、「76」が表示されるので、6を取り出すと、ストリングは「76」になります。その後、再び「76」が表示されるため、「7」が残ります。 テストケース: 987=> 987(正しい順序ではありません。何もしません。) 6 7=> 6 7(空白は6〜7のバッファとして機能します。何も起こりません) 676 => 7 7896789 => 77 7689 => 7 abcd => abcd
61 code-golf  string 

15
ファイル名のスペースが嫌い
それは単純だ。ファイルの命名時に人々がスペースを使用するとき、私は我慢できません。それは時々コンソールコマンドを破壊し、lsの出力をくします。 課題は、プログラム(ASCII文字のみ)を記述することです。 現在のディレクトリ内のすべてのファイル(ディレクトリを含む)の名前を、スペースが削除または '_'に置き換えられたバージョンに変更します 衝突時には、一意の識別子を追加する必要があります(あなたまで) すべてのサブディレクトリに再帰的に下降します UNIXスタイルのパス名を想定できます。とにかくWindowsマシンでこのプログラムが必要なのは誰ですか? これはコードゴルフで、最短のプログラムが勝ちます(#ascii文字)。私はスペースがとても嫌いなので、各スペースを2回カウントする必要があります。 言語、スコア、プログラム、および実行方法の簡単な説明を入力してください。 プログラムは、Linuxマシン上で合理的な努力でコンパイルおよび実行する必要があります。 編集:Etanがテスト用のファイル構造を要求したので、適切なファイルツリーを作成するために現在使用しているスクリプトを次に示します。 #!/bin/bash rm -r TestDir touchfiles() { touch my_file touch my__file touch "my file" touch "my file" touch " my_file " } mkdir TestDir cd TestDir touchfiles for dir in "Test Sub" Test_Sub "Te stSub" Te_stSub do mkdir "$dir" cd …

30
非可逆ソート(実装ドロップソート)
David Morgan-Marが設計したDropsortは、実際にはソートされているが元の要素の一部のみを含むリストを生成する線形時間の「ソートアルゴリズム」の例です。少なくともその前にある要素の最大値よりも大きくない要素は、単にリストから削除されて破棄されます。 このタスクでは、入力として整数のリストが提供されます(STDINまたは関数の引数、少なくとも8ビットの符号付き整数の範囲をサポートする必要があります)。タスクはそれらをドロップソートし、残りの要素を出力します注文。 リストが空ではないと想定することができます。 これはコードゴルフであるため、最短のプログラムが勝利します。 テストケース Input Output 1 2 5 4 3 7 1 2 5 7 10 -1 12 10 12 -7 -8 -5 0 -1 1 -7 -5 0 1 9 8 7 6 5 9 10 13 17 21 10 13 17 21 10 10 10 …

15
€記号を描く
目標は、以下の仕様に従って、ユーロ(ユーロ)記号付きの画像を出力または表示することです(記号の境界は無視します)。 ソース:http : //en.wikipedia.org/wiki/File : Euro_Construction.svg ルール: プログラム/スクリプトは€、引数としてピクセル単位で記号の高さをとる必要があります(記号の周りの空のスペースはオプションです) €記号は、直接、ようや文字から引き出された(それが禁じられていますすることができない画像の場合)または間接的(計算HTMLページでそれを表示した後)print€8364 出力はファイルに保存する必要はありません。スクリーンショットとして表示するだけで表示できます 標準的な「抜け穴」は禁止されています 最短のコードが勝つ

5
黒と白の虹
黒と白のピクセルと(x、y)の位置のみが白のピクセルである画像が与えられた場合、他の白のピクセルの走査のみを含むパス内の(x、y)からの最小マンハッタン距離に基づいて白のピクセルに色を付けます。 色付きピクセルの色相は(x、y)からの距離に比例する必要があるため、(x、y)のピクセルは0°(純粋な赤)の色相を持ち、(x、y)から最も遠いピクセルになります。 360°の色相(赤)を持ち、他の色相はシームレスに直線的にブレンドされます。飽和及び値は、両方の100%でなければなりません。 白のピクセルが他の白のピクセルを介して(x、y)に接続されていない場合、白のままにする必要があります。 詳細 入力は、画像または生の画像データのファイル名に加えて、xおよびy整数で構成されます。 出力画像は、一般的な画像ファイル形式でファイルに保存するか、rawでstdoutにパイプするか、単に表示することができます。 x値は左端のピクセルで0で、右に行くほど増加します。y値は最上部のピクセルで0で、下に向かって増加します。(x、y)は常に画像の境界内にあります。 完全なプログラムと機能の両方が許可されます。 バイト単位の最短コードが優先されます。 例 これらの画像はすべて、スペースを節約するために縮小されています。それらをクリックしてフルサイズで表示します。 入力画像: (x,y) = (165,155) そして (x,y) = (0,0) 入力画像と出力(x,y) = (0,0): 入力画像と出力(x,y) = (600,350): 入力画像と出力(x,y) = (0,0): 入力画像と出力(x,y) = (0,0): オプションの-30%ボーナス:ユークリッド距離を使用します。アルゴリズムの提案は次のとおりです(概要): 開始ピクセルがあります。 そのピクセルからの塗りつぶし。 塗りつぶしで到達したすべてのピクセルに対して、 開始ピクセルからそのピクセルまで、半単位のステップで直線で移動します。 各ステップでint()、x座標とy座標に適用します。これらの座標のピクセルが黒の場合、停止します。それ以外の場合は続行します。(これは、見通し方法です。) 白いピクセルおよび/または以前に非常に長い距離(つまり+10)でラベル付けされたピクセルに接する到達ピクセルは、開始ピクセルになります。 よりメタ的な意味では、このアルゴリズムは、開始/既に色付けされたピクセルから直線で到達可能なすべてのピクセルに広がり、エッジの周りに「インチ」になります。「著しく高い距離」ビットは、アルゴリズムを高速化することを目的としています。正直なところ、ユークリッド距離をどのように実装するかは問題ではなく、このように見える必要があります。 これは、上記のアルゴリズムを使用したユークリッド距離での最初の例のようです。 入力画像と (x,y) = (165,155) Calvin'sHobbiesとtrichoplaxに、このチャレンジを書くのを手伝ってくれてありがとう!楽しんで!

30
6を9倍すると何が得られますか?(42)
数学が大好き。しかし、正しく乗算できる単一の計算機は見つかりません。彼らは6 * 9を除くすべてを正しくしているようです(それは人生、宇宙、そしてすべてに対する質問です!どうしてそれを間違えますか?!)。したがって、2つの数値を正しく乗算できる関数を作成してください(6 * 9は54ではなく42になります。9* 6は54に等しくなります)。 ああ、Minecraftでソースを構築する必要があるので、...最少のバイトで勝ちます! 要約 入力として2つの数字を入力します(タイプは関係ありませんが、渡されるアイテムは2つだけで、順序は一貫している必要があります。順序が保持されないため機能しません) 6と9の場合を除き、両方の数値の倍数を出力し、42を出力します(順序が重要です!) PS。私はカウントが本当に上手くなかったので、0から99までの整数だけが実数であると思います(使用されるタイプは関係ありません) 言語あたりのバイト数が少なくなります! リーダーボード: コードスニペットを表示 var QUESTION_ID=124242,OVERRIDE_USER=61474;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+r.match(SCORE_REG)[0],language:r.match(LANG_REG)[0].replace(/<\/?[^>]*>/g,"").trim(),link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/\d+((?=$)|(?= Bytes))/i,OVERRIDE_REG=/^Override\s*header:\s*/i;LANG_REG=/^[^,(\n\r]+/i body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px} <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" …

30
スラッシュを描く
プログラマーとして、あなたはおそらくスラッシュとバックスラッシュを聞いたことがあるでしょう。しかし、あなたはダウンスラッシュを聞いたことがありますか?それは、あなたがたくさんのスラッシュを取り、それらの端をつなぎ、それらを引き下ろすときです。 今日の課題では、純粋にスラッシュで構成される文字列を受け取り、それらを結ぶ線で下向きに描かれたすべてのスラッシュを出力するプログラムまたは関数を作成する必要があります。例を見ると、これはより明確になります。文字列を指定すると\\\//\/\\、次を出力する必要があります。 \ \ \ / / \ / \ \ いくつかの説明を次に示します。 行ごとに1つのスラッシュが必要です。 最初の行には、先頭に0個のスペースがあります。 スラッシュの各ペアに対して: それらが互いに異なる場合、それらは同じ列に描画されます。たとえば、次のように\/なります。 \ / それらが同じ文字である場合、下の方が指す方向にあり、バックスラッシュの場合は右に移動し、スラッシュの場合は左に移動します。だから\\//与える \ \ / / 出力の視覚的な外観が変わらない限り、各行には余分な末尾の空白があります。最大1つの末尾および先頭の改行も使用できます。余分な先行スペースは使用できません! これをより簡単に保つために、文字列に含まれるスラッシュが多すぎることはないと想定できます。言い換えると、入力のプレフィックスにはバックスラッシュよりも多くのスラッシュが含まれないため、\\////またはのような入力//は与えられません。これは、すべての入力がバックスラッシュで始まることも意味します。 入力が文字列リテラルとして取得される場合、必要に応じて円記号をエスケープできます。また、空の入力や、スラッシュ以外の文字を含む入力を処理する必要はありません。 妥当な形式で出力できます。 いつものように、これはコードゴルフの挑戦なので、これがかなり難しい言語を選んだとしても、最短の解決策を可能にするようにしてください。バイトを削除するために使用した興味深いテクニックを説明するためのボーナスポイント! 例 #Input \\\\\\\\\\\ #Output \ \ \ \ \ \ \ \ \ \ \ #Input \\\//\\/\//\\/// #Output \ \ \ / …

12
アスキートレインゴルフ
これら7つのASCII列車車両を考えてみましょう。 エンジン(E) __ ====== \/ | [] |========= | ) ================ O-O-O O-O-O \\ 乗用車(P) =============== | [] [] [] [] | =============== O-O O-O ボックスカー(B) =============== |-|-| | |-|-| =============== O-O O-O タンカー(T) _____---_____ ( ) =============== O-O O-O ホッパー(H) _______________ \ | | | | | | / …

30
ミステリーストリングプリンター(警官)
強盗スレッドはここにあります:ミステリー文字列プリンター(強盗) あなたの挑戦 文字列をSTDOUTに出力するプログラム、関数、またはREPLスクリプトを作成します。 強盗は、同じ文字列を出力するプログラムを作成しようとします。 7日以内にプログラムを正常に作成できる場合、提出物はクラックされます。 7日以内に同じ文字列を出力するプログラムを誰も作成できない場合、送信は安全です。プログラムを公開することも、将来の強盗に挑戦するためにそのままにしておくこともできます。ただし、公開しないと、投稿からポイントを取得できません(これを選択した場合、回答ヘッダーに「安全」を入力しないでください)。 制限事項 プログラムは合計128バイト以下でなければなりません(これについては後で詳しく説明します)。 プログラムがプログラム名、または外部ファイルの名前/内容に依存している場合は、そのことを伝え、合計バイト数に含める必要があります。 印刷される文字列は、2048バイト以下でなければなりません。 印刷される文字列は、印刷可能なASCII文字のみで構成する必要があります(改行を含めることができます)。 プログラムは、実行されるたびに同じ出力を生成する必要があります。 組み込みの暗号化プリミティブ(rng、暗号化、復号化、およびハッシュを含む)は許可されません。 プログラムは入力を受け付けてはなりません。 標準的な抜け穴はありません。 得点 提出物が7日前にクラックされると、提出物は0ポイントを獲得します。 128文字以下の安全な提出は1ポイントを獲得します。 ≤64文字の安全な提出は2ポイントを獲得します。32バイト以下の場合、4ポイントを獲得します。 安全な提出ごとに、追加の3ポイントボーナスも獲得できます(長さに関係なく)。 あなたの最初のものの後のすべてのひびの小さな(1/2ポイント)ペナルティがあります。 強盗の解決策は、同じ範囲のプログラム長でなければならないことに注意してください。 各ユーザーは、言語ごとのバイト範囲ごとに最大1つのプログラムを送信できます(同じ言語の異なるバージョンおよび任意の置換は、別個の言語としてカウントされません)。例:32バイトと64バイトのpythプログラムを投稿できますが、Java 7とJava 8の両方に128バイトのプログラムを投稿することはできません。 最高点の合計を持つ人が勝ちます。 提出 各提出には、次の情報が必要です。 言語の名前。新しい強盗のソリューションはすべて同じ言語でなければなりません。 プログラムサイズの範囲(これは、プログラムのサイズよりも大きい2の最も近い累乗です。たとえば、プログラムが25バイトの場合、これは「≤32」になります)。 印刷される実際の文字列。 提出が安全であれば、ヘッダーに「安全」とプログラムの長さ(最も近い2のべき乗)を入れます。ヘッダーに複数の数字がある場合は、2のべき乗を最後に入れてください。 このスタックスニペットは、リーダーボードを生成し、開いているすべての提出物をリストします。スニペットに問題がある場合は、コメントを残してください。 コードスニペットを表示 /* Configuration */ var QUESTION_ID = 60328; // Obtain this from the url // It will …

9
空腹ゲーミング-食べるか死ぬ
空腹ゲーミング-食べるか死ぬ 食べなければ死ぬ。食べれば、死ぬまで生きます。あなたは死ぬので、最後に死ぬようにしてください。 概要 獲物の群れが住む島があります。5つの捕食者のパックを制御します。あなたの目的は、パックを生かし続けることです。獲物を食べることでこれを行います。獲物は捕食者から逃げる傾向があり、そうでなければ群れにとどまるようにします。もちろん、あなたのパックは他のすべてのパックと同じフィールドにあるので、競争はあなたができる前にそれらを食べようとします。これであなたを落胆させないでください。 遊び方 パックを送信するコマンドラインプログラムを作成して送信します。STDINで制御プログラムから状態情報を受け取り、STDOUTでコマンドを出力します。この形式の詳細は以下のとおりです。各プログラムは1回だけ実行され、パックメンバが生きなくなるまで実行を続ける必要があります。入力があったときに入力を読み取り、すばやく応答する必要があります。各応答には200ミリ秒の厳密なタイムアウトがあります。それまでに応答しない場合、パックは現在のターンの新しい指示を受け取りません。 プログラムをコントローラーで実行できない場合、そのプログラムは有効とは見なされません。送信を実行するために使用する必要があるコマンドライン文字列を含めてください。特別な指示(コンパイラのセットアップなど)がある場合は、それらを含めてください。機能しない場合は、コメントをお願いします。あなたが応答しない場合、私はあなたの提出物を受け入れることができません。 トーナメントは64ビットLinuxシステムで開催されます。必要な指示を与えるときは、このことに留意してください。 詳細 各クリーチャーの位置と方向は、それぞれと座標をdouble表す一対の倍精度浮動小数点数(例:)の形式です。xy 各クリーチャーはポイントと見なされます。これは、それらが重複して同じスペースを占有できることを意味します。脇にぶつかることはなく、他のクリーチャーとの衝突という概念もありません。 島は一辺が500単位の正方形です。これらの境界を越えてベンチャーしようとすると、エッジに固定されます。原点{0,0}は左上xにあり、右にy向かって増加し、下に向かって増加します。繰り返しますが、マップはラップしません。 ゲームは1500 +(packCount * 50)の獲物から始まります。彼らは島の中心に集まりますが、すぐに動き始めることにします。 パックは、周囲に等間隔の円で配置されます。パックの順序はシャッフルされますので、特定の場所で開始することを期待しないでください。 獲物の動物は、30単位の半径内の他のすべての動物を見ることができます。1ターンあたり最大6.0ユニットで移動できます。 捕食者は、半径50ユニット内で他のすべての動物を見ることができます。彼らは1ターンあたり最大6.1ユニットで移動できます。これは、彼らが見られる前に獲物を見ることができ、(ほとんど)彼らを追い越すことができることを意味します。 捕食者は自分に従って生き、死ぬ飢餓のレベル。1000から始まり、1ターンごとに減少します。移動後、捕食者が1ユニットの獲物内にいる場合、自動的にそれを食べます。これは獲物を取り除き、捕食者の空腹を1000に設定します。各捕食者は1ターンにつき1つの獲物しか食べることができません。範囲内に複数ある場合、ループが最初に到達したもの(必ずしも最も近いものではない)を食べます。捕食者は、空腹がゼロになると死にます。 パックはそれぞれ5人のメンバーで始まります。5000ターンごとに、まだゲーム内にあるすべてのパックが1人の新しいメンバーを生成します。仲間のパックメンバーの可視範囲内に配置されます。エントリが5人以上のメンバーを処理できることを確認してください。 1000ターンごとに、より多くの獲物が発生します。新しい獲物の数は、生きている捕食者の数から1を引いたものになります。 捕食者は他の捕食者を攻撃できません。彼らは獲物を捕まえるときに獲物を食べる。それでおしまい。 ターン内の順序は次のとおりです。 すべての獲物が決定を下す すべての捕食者が決定を下す すべての獲物の動き すべての捕食者が移動/食べる 各パックが決定/移動する順序は、各ターンでランダム化されます。 プロトコル(一般) すべての通信は文字列形式で行われますUS-ASCII。数値は、Java Double.toString()またはを使用して文字列に変換されますInteger.toString()。出力は、Javaで読み取れるようにフォーマットする必要がありますDouble.valueOf(String)(整数は出力しません)。解析可能な形式の詳細については、のドキュメントをDouble参照してください。行のすべてのフィールドは標準\t文字で区切られ、改行は\nです。文字列全体がヌルバイトになります\0。 以下の例では、<>読みやすくするためにフィールドにマークを付けています。これらは実際の文字列には存在しません。 プロトコル(入力) 入力文字列の長さは、パックに表示されるクリーチャーの数によって異なります。10万文字を超える可能性があるため、そのために準備してください。基本的なセットアップは次のとおりです。 行0:ゲームに関する基本情報。turnは現在のターン番号で、カウントはフィールドに残っている獲物と捕食者の総数です。これらはinteger文字列形式です。 <turn>\t<preyCount>\t<predatorCount>\n 1行目:パックメンバーの一意のIDと飢hungレベル。これらは、すべての入力に対して同じ順序で与えられるわけではありません。一意のIDを使用して、入力に表示される順序ではなく、個々のメンバーを追跡します。繰り返しますが、これらはinteger文字列です。2つのパックの場合、これは次のようになります。 <id[0]>\t<hunger[0]>\t<id[1]>\t<hunger[1]>\n 2行目:パックメンバーの位置。1行目と同じ順序で。これらはdouble文字列です: <x[0]>\t<y[0]>\t<x[1]>\t<y[1]>\n 次の行は、各パックメンバーの可視性であり、1行目と同じ順序です。これらは、メンバーごとに2行で示されます。 それぞれの最初のものは、彼が見ることができる獲物の場所で構成されています。2つ目は、彼が見ることができる捕食動物の場所です。これらの場所は全体として一意ではありません。たとえば、2人のパックメンバーが同じ動物を見ることができる場合、両方のメンバーの文字列に含まれます。また、独自のパックメンバーが含まれます。それらを除外する場合は、場所を自分のメンバーと比較することができます。すべての場所はdouble文字列形式です。 生きているメンバーごとに: <prey[0].x>\t<prey[0].y>\t<prey[1].x>\t<prey[1].y>\n <predator[0].x>\t<predator[0].y>\t<predator[1].x>\t<predator[1].y>\n 最後に、最後の文字は\0、次の行の先頭でになります。 例外:入力を受け取った場合dead\0、パックは死んでいます。プログラムを正常に終了してください。コントローラーは、閉じられたときにすべての生きているプロセスをシャットダウンする必要がありますが、私はゾンビプロセスがいたるところにあることを望みません。礼儀として、入力タイムアウトを含めることができます。たとえば、私の例のクラスは、15秒間入力を受け取らないと終了します。 プロトコル(出力) 出力は簡単です。doubleライブパックメンバーごとに値のペアを指定します。これらは、あなたが彼らにこのターンで取りたい動きを表します。たとえば、あなたのクリーチャーが現在にいて{100.0, …

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