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

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

6
最小バイトコードインタープリター/ VM
リーダーボード-JITコンパイル済み(低いほど良い) es1024-81.2ポイント(動作中のコンパイラを含む!) キース・ランドール-116ポイント Ell-121ポイント リーダーボード-解釈済み(低いほど良い) マーティン・ブットナー-706654ポイント(約2時間)。 クリプティック-30379ポイント(97秒) あなたがそれを受け入れることを選択した場合、あなたの使命は、可能な限り最小のバイトコードインタープリター/ VMを書くことです。VM /インタープリターは、以下で指定されている言語で、小さなCISCアーキテクチャを使用します(操作のサイズは異なる場合があります)。完了したら、3つのCPUレジスタの値を印刷して、正しい出力が印刷されたことを証明する必要があります(3,126,900,366)。 コンパイラ 独自のテストを作成する場合は、コンパイラを以下に掲載します。回答とともにテストを投稿してください。 コードスニペットを表示 window.compile=function(){var e=$("#text").val().toLowerCase().match(/[^\r\n]+/g);var t=[];for(var n=0;n<e.length;n++)compileLine(e[n],t);var r="";for(var n=0;n<t.length;n++)if(typeof t[n]=="string")r+="\n";else r+="0x"+t[n].toString(16)+" ";$("#compiledArray").val(r)};window.compileLine=function(e,t){var n=e.split(" ");if(n[0]=="load"){t.push(0);t.push(getInt(n[1]));t.pushArr(getInt(n[2]))}if(n[0]=="rload"){t.push(1);t.push(getInt(n[1]));t.push(getInt(n[1]))}if(n[0]=="push"){t.push(2);t.push(getInt(n[1]))}if(n[0]=="pop"){t.push(3);t.push(getInt(n[1]))}if(n[0]=="add"){t.push(4);t.push(getInt(n[1]));t.push(getInt(n[2]))}if(n[0]=="sub"){t.push(5);t.push(getInt(n[1]));t.push(getInt(n[2]))}if(n[0]=="mul"){t.push(6);t.push(getInt(n[1]));t.push(getInt(n[2]))}if(n[0]=="div"){t.push(7);t.push(getInt(n[1]));t.push(getInt(n[2]))}if(n[0]=="jmp"){t.push(8);t.pushArr(getInt(n[1]))}if(n[0]=="cmp"){t.push(9);t.push(getInt(n[1]));t.push(getInt(n[2]))}if(n[0]=="branchlt"){t.push(10);t.pushArr(getInt(n[1]))}if(n[0]=="brancheq"){t.push(11);t.pushArr(getInt(n[1]))}if(n[0]=="branchgt"){t.push(12);t.pushArr(getInt(n[1]))}if(n[0]=="branchne"){t.push(13);t.pushArr(getInt(n[1]))}t.push("NEW LINE")};window.getInt=function(e){if(e.trim().startsWith("<--"))return"COMMENT";if(e=="r0")return 0;if(e=="r1")return 1;if(e=="r2")return 2;if(e.startsWith("0x"))return parseInt(e,16);if(isNaN(parseInt(e)))alert(e);return getIntBytes(parseInt(e))};if(typeof String.prototype.startsWith!="function"){String.prototype.startsWith=function(e){return this.slice(0,e.length)==e}}Array.prototype.pushArr=function(e){this.push.apply(this,e)};window.getIntBytes=function(e){var t=[];var n=4;do{t[--n]=e&255;e=e>>8}while(n);return t} <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <textarea id="text" cols="40" rows="10"></textarea> <br/> <button onclick="compile()">Compile</button> <br/> <textarea id="compiledArray" cols="40" rows="10" readonly></textarea> …

30
ジグソーコードパズル
これは答えに依存する課題です!回答の順序は重要であり、正確なタスクは最後に投稿された回答に依存します。回答を最も古い順に並べ替えることができます。 コードをつなぎましょう!1920個のランダム(印刷可能なASCII)文字があります。それらは、箱の中にある未分類のジグソーパズルのピースの大きなヒープと考えてください。 L-^=v^Ej2tW8OxNOIecSt4m}tji2O%YRJ;PJ!M|0*oO77$*Rs&2*<c"KI7e%FY^?I=];Y@`x)u)IBk%_a#<E6<yv5O*$kL): KNGq)2Wa%b)j."(6U|{[UY@`lrCSJ`u0RHX!1z7f,v}n=GvRgkrEZ=YT:4H44bz]iC<](:+FF?Ay'vX~h5QMF)0vaXk1sk@p Zj).{+l;PBKHABvEP%FnSw>u<_-4B^A>I8Kay&5]vXZJ{fCF]UVZ<!ZpOI$7\Y%`@:%H3wPsX-`/l]ZZ?Q/d`\M<T@'t]zip {[ovg:6EpCT&'+vU4Heb^;}0AV|?<}M0rAH/^DL"RkT~%$[VUlM]-&We4(P=66},hL~;a`:$'yty.W[g2OWcL~b:Ryj0*eN< ;&-n[F1F=oh0k[NI!xS"]pA@Y;K}'=ekG5yda8J$+`N;:FIx:l,f_LT@sV[]HF@2*vl?|q"GL1j&%e(CyYPqY%3W|@`z}]bp 4_'1Nx{"G2&j6$UWt_#%`sTt2xC}s1P8J<gV24_RWge/aMuyVOjz=zS!1i2s@`Q#@^~@W/k@.YLbKxS:g9?J^p;7ju?B\yC5 x,ZApKS5G4}kx_iM)f4/|su>=[{XSV#{,j5Qn3U.v5LF;HXs%DYm4'+efmU;\}f6j$SFCRC`Gsd37:'3$q=bs;lvsW0Yj^:- I[94@I|.IpR=}4KB4Z0G4>8PR29'L?n\gk,*4X[-%T`\FC)jj0jl_x<xL8E:G2-"3tT8&E}"sE+SH[7jR%@V)a{!m8K>.rAO 2[dq7GX9nrz8p4}^2mn@q|dF%<.Tl8)Dk?O.<UoE(a*k_=4+u!h$^bVd:$jS#EHFh@Z=y=ib^~/~lEJ^SQ3E_t#&^IOov7v8 ~j#I#OHgxg{DZDyCsq-(GVq}HbiG,JV?eJ~5wJ;bSt@;3LI!2(6gIT92>}`_dw;YF@ccTIEz\Gu@2(}J2I1"S{R(2niIYPp9 8A3iiP[*!SH2*SN8'`V?w4Ufx2H*Az%{}FlUdH31TJ5{:ge^N91^;9Gj`Uqf'$_|8P"kHR1w.(ASwmN)U-~q"[XcWbqPnns= d.ZoPJ}$Xc2lA>HN28`(d0y+UAr*sQ=?KE07=\FsVN(#?&hRabS%BVI#<`O$o#4x5ZFFLGDcA4t?&Eh~Z$oBWwNSNv`^;vO' 2&9egng~L#\QkfMG?S/n@%-VA[?f9K&3"V%P#Sv0!D<,GV:Z;3c&zFe^k&^0b7fAjvrbMc^Lq7k$h=YL<h7<0\NK>~Q=uUv) 4cI$.'b-RVS-=rom:=8QR=c>9am-^5F[XGv>E/>|]~\']3{r{kTc?ee1v=;I7]52#NE)~A;}!z>5?hi{5<9FtWH6{VO_Y-Jy Mw>{l8n#mD,kl'8cG^.7sy=QqU-3~SKGs5(.Ta]:-Vfr'NS$o*q:w6e$&7spk3{CFT'l_hGY0-0Xui*5i^0^fO@6?2IdCn_C lPKaJ6]0t!u>v8<d'Vby]8kEHh04p(YI)&7w82BrGB3PkI,s+%7ux5)gau`G!8F8hLa4[lfD55Xf3Hqy*-K,?;2'fxH3JWYE Z.[N`:[K:CY@TzKX4TMXsm{Xbd:B3)Gy[mlwnC$>)z`:k=C\0ho/v{57#+2,*%]>p~vI2^C:2DebJR>.ESw^wd2N<~]O9sOQ `_yvIw&Ryf%JgT@W(G1wfU3.4G3U}x1jKJzJY\S9n$2~P;F}*eT9UXcTNBTrTs>~0v_Oi.y8ofX6i5u$;'^"q][QhTb*gO[U n'R0"v1r+9fv;5G7Bg=D:c*a=1@[}7}dYOO{Mz2&@6`jnNq.QcBDM9Dd=R.*=MqZ93#'{AJJFqx<{qb':B!H8ig1L%T\Vuc" (h$i3`,scX'hqpbw"=nY`*Lu:h1wR{+-`\^3cQkIWfq)3?&p;~pvDW$o7\O|R6rB2{PX.s#G6A.s<OA_,TI_b*&lO@L3KrQv 私たちが困惑させている「フロア」は、当初はスペースの96x20グリッド(コードポイント0x20)にすぎません。各回答は、ピースの隣接するブロックを移動し、最大10個のパズルピース(キャラクター)を選択し、パズルに追加して新しいプログラムを作成します。そのプログラムは、回答の番号(1から始まる連続番号)を印刷する必要があります。 返事 この課題について理解する重要なことは、一度に答えることができる人は1人だけであり、それぞれの答えはその前のものに依存するということです。 同じ数Nの回答が2つあることはありません。2人がNに対して同時に答えた場合場合、後で答えた人は(たとえ数秒の差があっても)丁寧に答えを削除する必要があります。 これを少しスムーズに実行するには、回答を投稿する際に次の手順に従うようにしてください。 誰かが前の回答の正しさを独立して検証したことを確認してください(そして対応するコメントを残しました)。 前の「パズルフロア」と「ピースの箱」を取ります。パズルフロアで隣接するキャラクターのブロックをユニットとして自由に動かすことができます(キャラクターは、水平方向または垂直方向に沿ってタッチすると隣接しています)。隣接するブロックを再度分割することはできません。5x4グリッドの例: Last answer: Valid: Invalid: |a bc| |d g | |a bc| | bc | |a bc| | d e | |fa …

4
既存のフレームワークを使用して2048 AIをプログラムする
編集:最近、私の質問は2048ボットチャレンジの複製として提案されました。この質問はその質問とは異なり、回答をその質問とは異なる方法で考える必要があることを強調したいと思います。2048ボットチャレンジは、ユーザーにボットを作成するように要求し、ボットを1時間実行します。最高スコアはユーザーのスコアです。さらに、555バイトの制限がありました。私のチャレンジでは、コードの実行頻度ははるかに低く、3回だけです。スコアは、これらの3回の平均スコアを使用して、ゴルフコードの文字長で割ることによって計算されます。私の質問は、エントリが「スマート」であり、総当たりで最高のスコアを取得しようとしないことを奨励しています。 - 編集:getメソッドがgetTileに変更され、JSキーワードgetとの競合を回避しました。さらに、高得点セクションが追加されました。 最近、JavaScriptを使用して人気のあるゲーム2048を制御できるサイトを作成しました。私のサイトはここにリンクされています: http://thatcoolidea.com/2048 どうやって: Ace Editorはボードの上にあります。コードを配置します。コードは250ミリ秒ごとに1回、または1秒間に4回実行されます。これはサイクルと呼ばれます。 ボードを制御するには、次の方法を使用します。矢印キーは使用できません。 up(); //move up down(); //move down left(); //move left right(); //move right move(integer); //integer is a direction. 0:up,1:right,2:down,3:left getTile(y,x); //gets the value of the tile in position y,x on the board. See diagram 便宜上、次の変数が定義されています。 eother //boolean, alternates every cycle frozen //integer, …

7
耳、指、頭から犯罪者を見つける
指紋とDNA検査の発見に先立ち、英国の警察は人体計測システムを使用して、繰り返し犯人を特定しました。犯罪者の身体の特定の部分が測定され、記録に保存されました-身体のこれらの部分は、成人後にサイズが変化しないと仮定されました。このシステムは bertillonnageました。 次の図は、警察がこれらの記録にすばやくアクセスするために使用するファイリングシステムを示しています。 図1:番号付きの引き出し付きのファイリングシステム。 注:イメージが表示されない場合は、imgurミラーを試す か、自分でコンパイルします。 ファイリングキャビネットには、81個の番号付きの引き出しがあります。各引き出しにはカードが含まれており、各カードには犯罪者の身体の特定の部分の測定値が含まれています。 頭の長さ(H) 頭の幅(B) 右耳の幅(E) 人差し指の長さ(F) 各測定は、小、中、大のいずれかに分類されます。 例えば、引出し56は、以下の特性を有するカードを含んでいる:小H、大きなB、培地E、及び小F.これは文字を用いて表記することができS、MおよびL小、中、大の代わりに: SH,LB,ME,SF サイズ文字が最初に表示され、次に測定値が表示されます。さらに、感嘆符!を前に置いてネガティブにすることもできます。 !SH,LB,!ME,SF これは、次の特性を持つカードを示します:小Hではなく、大B、中Eではなく、小F。これらの特性(58、60、61、および63)を持つカードを含む4つの引き出しがあります。 あなたの仕事は、いくつかの特性を示す文字列が与えられると、それらの特性を持つカードを含むすべての引き出しを出力するプログラムを書くことです。特定の特性を持つカードを含むドロワーがない場合、output 0。 以下に入力と出力の例を示します。 入力:SH,LB,ME,SF 出力:56 入力:!SH,LB,!ME,SF 出力:58,60,61,63 入力:SB,!MF,!LF 出力:1,2,3,4,5,6,7,8,9 入力:MH,!MH 出力:0 これはコードゴルフなので、最短のエントリーが勝ちです。仕様が明確でない場合は、コメントで質問してください。
17 code-golf  math 

7
2種類の出力
チャレンジ 私はあなたに別のスパイ対スパイチャレンジピッチング難読化ツール対クラッカーを紹介します。ただし、この場合、保護されるデータムは入力ではなく出力です。 チャレンジのルールは簡単です。次の仕様でルーチンを作成します。 ルーチンは任意の言語で作成できますが、320バイトを超えることはできません。 ルーチンは、入力として3つの32ビット符号付き整数を受け入れなければなりません。3つの引数を受け入れる関数、単一の3要素配列を受け入れる関数、または標準入力から3つの整数を読み取る完全なプログラムの形式をとることができます。 ルーチンは、1つの符号付き32ビット整数を出力する必要があります。 可能なすべての入力に対して、ルーチンは2〜1000(両端を含む)の一意の値を出力する必要があります。ルーチンが出力できる一意の値の数は、そのキーと呼ばれます。 例として、Cプログラム int foo( int i1, int i2, int i3 ) { return 20 + (i1^i2^i3) %5; } それは(たぶん)のみ出力9つの値ことができるので、9のキーを有し16、17、18、19、20、21、22、23、および24。 追加の制限事項は次のとおりです。 ルーチンは完全に決定的で時不変でなければならず、同一の入力に対して同一の出力を返します。ルーチンは、疑似乱数ジェネレーターを呼び出さないでください。 ルーチンは、ファイル内のデータ、システム変数、または難解な言語機能などの「隠された変数」に依存しない場合があります。たとえば、コード自体で定数が明確に定義されていない限り、ルーチンは通常定数を参照しないでください。コンパイラーの癖、数学的に未定義の演算からの出力、算術エラーなどに依存するルーチンもお勧めできません。疑問がある場合は、お問い合わせください。 ユーザー(コーダー)は、ルーチンが生成できる一意の出力の数を正確に知っている必要があり、各出力を生成する少なくとも1つの入力シーケンスを提供できる必要があります。(潜在的に数百の一意の出力が存在する可能性があるため、このセットはキーが競合する場合にのみ要求されます。) この問題は、以前の暗号化に比べて従来の暗号化との類似点がはるかに少ないため、より多くのユーザーがアクセスできるようになると期待しています。 創造的であればあるほど良い。 スコアリング バイトカウントごとの最短の非クラック送信が勝者として宣言されます。 混乱がある場合は、お気軽に質問またはコメントしてください。 カウンターチャレンジ 独自のルーチンを送信した人を含むすべての読者は、送信を「クラック」することをお勧めします。キーが関連するコメントセクションに投稿されると、提出物がクラックされます。提出物が変更またはクラックされることなく72時間持続する場合、「安全」と見なされ、その後のクラックの成功はコンテストのために無視されます。 読者ごとに提出ごとに1回のクラッキング試行のみが許可されます。たとえば、ユーザーXに「あなたのキーは20」と送信したが間違っている場合、ユーザーXは私の推測を間違っているとして放棄し、その送信に対して追加の推測を送信できなくなります。 クラックされたサブミッションは競合から排除されます(「安全」でない場合)。編集しないでください。読者が新しいルーチンを提出したい場合は、別の回答で提出する必要があります。 クラッカーのスコアは、(準拠しているかどうかにかかわらず)提出された数です。同一のカウントを持つクラッカーの場合、ランク付けは、クラックされたすべての提出物の合計バイト数によって決定されます(高いほど良い)。 最高スコアのクラッカーが、勝者ルーチンの開発者とともに勝者として宣言されます。 自分の提出物をクラックしないでください。 幸運を祈ります。:) リーダーボード 最終更新:9月2日午前10時45分(EST) 不動の障壁(亀裂のない提出物): CJam、105 [デニス] 止められない力(クラッカー): デニス[ Java、269 …

4
場所にブレースが存在する場合にブレースをスペースで置き換えるプログラムを書く
あなたはプロジェクトマネージャーです。ある日、あなたのプログラマーの一つは非常識(行きませんあなたのせいに)とコードベース内のすべての式を取って、自分の無能(約わめき散らす、その場で終了する前に、それらにランダムブラケットを追加してもいないあなたのせい)。これは簡単な修正ですが、何らかの理由でリビジョン管理を使用していません(完全にあなたのせいではありません)。そして、何らかの理由で、他のプログラマーは誰も、不一致のブラケットを修正するためにすべての式を調べることを望みません(ところで、それはあなたのせいではありません)。最近のプログラマーは、自分で考えています。あなたは自分でそれをしなければなりません。ホラー!そのようなタスクはあなたの下にあるはずでした... 入力は単一の行になり、左角かっこ(( [ {)と右角かっこ()がいくつか含まれます) ] }。また、常にではありませんが、コメント(/* */)および文字列リテラル(" "または' ')およびさまざまな数字、文字、または記号を含む場合があります。 対応する反対(コメントまたは文字列リテラルの外側)を持たない少なくとも1つのブラケット(コメントまたは文字列リテラルの外側)があります。たとえば}、{事前のないエラー。別の例:後の(ものがないa )。プログラムは、ブラケットを一致させるために必要な最小数のブラケットをスペースに置き換えます。 例: (4 + (2 + 3))]==> (4 + (2 + 3)) (端における角括弧) ][][[]]==> [][[]](開始時角括弧) ("Hel(o!"))==> ("Hel(o!") (端における括弧) ( /* )]*/==> /* )]*/ (開始時括弧) {()]==> () (中括弧と角括弧) 入力は、最も便利な方法(STDIN、コマンドライン引数、ファイルからの読み取りなど)から取得できます。 同じ数の削除で不一致を解決する方法が複数ある場合は、どちらでもかまいません。 括弧内の不一致のみがあります。文字列リテラルとコメントは常に正しく形成されます。 タイトルはこのSOスレッドから来ています コメントに引用符、引用符に引用符、コメントにコメント、引用符にコメントが含まれることはありません。 これはコードゴルフであるため、最小バイト数が優先されます。仕様が明確でない場合は、コメントで質問してください。

10
シンボル対手紙
シンボル対手紙 ASCII文字は一度分割されており、再び!あなたのセットは、文字と記号です。 手紙 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz シンボル !"#$%&'()*+,-./0123456789:;<=>?@[\]^_`{|}~ タスクは、2つのプログラムを作成することです。 プログラムで文字を使用せずに、各文字を 1回だけ印刷します。 プログラムでシンボルを使用せずに、各シンボルを 1回だけ印刷します。 ルール プログラムまたは出力に空白が表示される場合があります。 ASCII以外の文字は使用できません。 出力は、ファイルの内容または名前として標準出力またはファイルに送られます。 入力なし。 出力には、いずれかのセットのASCII文字のみが含まれている必要があります。 プログラムは、1つの例外を除いて、異なる言語または同じ言語で作成できます。 空白の言語は、プログラムだけの1のために使用することができます。 標準の抜け穴が適用されます。 得点 # of characters in program 1 +# of characters in program 2 =Score 最低スコアが勝ちます! 注意: より多くの提出を促すために、プログラムの1つだけの解決策を含む回答を投稿できます。勝つことはできませんが、それでもクールなものを披露することができます。 前の質問でアイデアを刺激したカルビンの趣味に感謝します。

13
FizzBu​​zzコンパイラーを作成する
コンパイラーゴルフの世界へようこそ。あなたの仕事は、仕様でFizzBu​​zzのバリアントを再生する別のプログラムを生成するプログラムを書くことです。 コンパイラー FizzBu​​zzプログラムのバリアントを仕様に合わせて生成するコンパイラーを作成します。このバリアントの仕様は、整数/文字列のペアの配列の形式で表されます。 入力は、言語に都合のよい形式であればどのような形式でもかまいません。(私の例ではn:xxxxを使用していますが、これは単に説明のためです。) 各整数入力は、コンパイラーの呼び出しごとに1回のみ使用できます。 各ペアの整数は、少なくとも1つの値を持ちます。 各ペアの文字列は、ちょうど4つのASCII文字で構成されます。 出力は、以下の規則に準拠する単一の完全なプログラムでなければなりません。 テキスト形式のプログラムである限り、出力は任意の便利な形式にすることができます。(したがって、ラムダ式を返しません。) 上記の規則に準拠していない入力の動作は未定義です。 生成されたFizzBu​​zzプログラム コンパイラが生成するプログラムは、入力として単一の整数nを受け取ります。1からnまでの一連の数値を出力し、必要に応じて数値をFizzBu​​zz文字列に置き換えます。 生成されたプログラムは、コンパイラーと同じ言語である必要があります。 入力nは、言語に適した任意の形式にすることができます。 nには少なくとも1つの値があります。 コンパイラーへの整数入力の少なくとも1つの倍数である数値は、それらの整数を結合したすべてのストリングで置き換える必要があります。 FizzBu​​zz文字列に置き換えられない数値は、10進数のASCIIで出力する必要があります。 例えば; > GenFizzBuzz 3:Fizz 5:Buzz > a.out 5 1 2 Fizz 4 Buzz 得点 エントリーは、コンパイラーが生成するプログラムの長さをコンパイラーの長さに追加することによってスコアリングされます。以下の各パラメーターを使用してコンパイラーを何度も実行し、生成されたプログラムの長さとコンパイラーの長さを加算して、スコアを見つけます。 ただカウント。(入力なし-生成されたプログラムは、置換なしで1からnまでカウントされます。) ただのゴルフ。(1:ゴルフ-生成されたプログラムは「ゴルフ」をn回出力します。) クラシックFizzBu​​zz。(3:フィズ、5:バズ) (リストされているものだけでなく、有効な入力のコードを生成するためにコンパイラが必要なことに注意してください。)

10
単語方程式ソルバーを書く[複製]
この質問にはすでに回答があります: 「無料の空白」を活用する (10回答) 先月閉鎖された。 前書き 次の例を考えてみましょう。 CODE + GOLF —————— GREAT これは、各文字が10進数を表し、単語が自然数を表す方程式です(類似した文字は類似した数字を表し、異なる文字は異なる数字を表します)。タスクは、方程式が正しいように、各文字を数字の値と一致させることです。上記の方程式の1つの解決策は次のとおりです。 9265 + 1278 —————— 10543 あなたのタスク あなたの仕事は、上記のような方程式を解くことができるプログラムまたは関数を書くことです。 入力 入力は、次の形式の文字列です。 [A-Z]+\+[A-Z]+=[A-Z]+ 例: CODE+GOLF=GREAT AA+BB=CC スペースは省略され、大文字のAとZの間の文字のみが使用されます(特殊文字や小文字は使用されません)。 この文字列は、標準入力、ファイル、または関数パラメーターから読み取ることができます。 出力 出力形式には次の2つのオプションがあります。 数字が置換された元の方程式 文字とその値のリスト 複数のソリューションがある場合、それらのいずれか(ただし1つのみ)が返されます。解決策がない場合、プログラムは空の文字列またはnullを返す必要があります。出力は文字列として返すことができ、標準出力またはファイルに書き込むことができます。 例: 9265+1278=10543 A=1 B=2 C=3 (任意の区切り文字を使用できます) ルール 物事を簡単にするために、数字は0から始まりますが、無効な解決策として先頭に0を付けた数字を処理できます。 同様の文字は同様の数字を表し、異なる文字は異なる数字を表します 任意の言語と選択した言語の標準ライブラリを使用できます(外部ライブラリはありません) インターネット上のリソースに接続することはできません(とにかくどうして?) これはコードゴルフタスクで、最短のコードが勝ちます。連続する空白文字は単一の文字としてカウントされます。(したがって、空白で書かれたプログラムが自動的に勝ちます) 私は179文字を使用してややハック的なソリューションを持っています。不明な点がある場合は、コメント欄でお尋ねください。

15
分岐せずに最大3つの数字を見つける
今回の目標は、分岐またはループを使用せずに、最大3つの整数(2の補数の-(2 ^ 31)から2 ^ 31-1まで)を見つけることです。 あなたはしているだけで使用することを許可します 不平等/平等(==、>、>=、<、<=、!=)これらの数として2つのトークン。 算術演算(+、-、*、/) 論理演算子(!not、&&and、|| or) ビット演算子(~しない、&及び、|又は、^XOR、 、、<< 算術および論理左右シフト)>>>>> 定数。0トークン 変数の割り当て。0トークン 入力3つの変数としてa、bとc。最大数を出力します。 標準のアトミックコードゴルフ規則が適用されます。ご質問がある場合は、コメントに残してください。1つのトークンは、上記の特別なルールのいずれかです。

10
難解な言語のジャンパー用のインタープリターを書く
難解な言語ジャンパーを考えました。後でその理由がわかります。 これは、バイトをセルとして使用するランダムアクセスメモリで動作します。RAMのインデックスはゼロで、最初はゼロで埋められています。 負のインデックスを持つセルにアクセスしようとすると、エラーが表示され、プログラムが終了します。 最後よりも大きいインデックスで読み取りを試みると、ゼロが返されます。 最後よりも大きいインデックスで書き込みを試みる場合、RAMを1024の倍数に増やし、新しいセルをゼロで埋める必要があります(技術的には、RAMを1024の倍数に増やすことはできません。理由はパフォーマンスが向上したためです。 1024の倍数にはできません)。 プログラムには、最初はゼロであるRAM内のセルへのポインターもあります プログラムが実行を開始すると、入力文字列のプロンプトが表示されます(またはコマンドライン引数から入力を取得します)。入力文字列にヌル文字(ゼロバイト)を含めることはできません。次に、ゼロインデックスから始まる入力文字列がRAMに書き込まれます。 プログラムが終了すると、プログラム出力を含むボックスが表示されます-ゼロインデックスから最初のゼロバイトを除くRAMの内容が表示されます さて、最も興味深い部分は構文です。 プログラムは、コマンド(単項演算子-接頭辞)とその引数で構成されます。コマンドと引数は、スペースまたは改行で区切ることができますが、必須ではありません。ただし、引数内のスペースは無効です。たとえば、# 2 = 4有効ですが有効で# 2 = 4 4はありません。 プログラム間でコメントを付けることができます()。コメントはネストできません。たとえば、(abc(def)ghi)コメントは(abc(def)です。コメントはどこにでも配置できます。 #123 RAMポインターを123(任意の正の10進整数またはゼロ)に設定します。 >123 RAMポインターを123(任意の正の10進整数)ずつ増やします。 <123 RAMポインターを123(任意の正の10進整数)減らします。 =123 現在のセルに123(符号なし8ビット10進整数)を書き込みます。 +123 123(符号なし8ビット10進整数)を現在のセル(モジュロ256)に追加します。 -123 現在のセル(モジュロ256)から123(符号なし8ビット10進整数)を減算します。 :123-"goto"-コマンド番号123に移動します(最初は0です)。プログラムのフローはgotoでのみ制御できます-ジャンプする必要があるため、この言語をJumperと呼ぶことにしました。 引数が欠落している場合- ><+-コマンドの場合は1、コマンドの場合は0 と考えて#=:ください。 また、コマンド修飾子があります- ?(コマンドのプレフィックス)、現在のセルがゼロでない場合にのみ次のコマンドを実行し、そうでない場合はそのコマンドをスキップします。任意のコマンドに適用できます。 たとえば、?:17-は、現在のセルがゼロでない場合、コマンド17に進みます。 プログラムが無効であるか、実行時にエラーが発生した場合、メッセージ「エラー」を表示できます。これはCodeGolfであるため、このような短いメッセージは問題ありません。 あなたのタスク この言語の最短のインタプリタを作成します。 いくつかのテストプログラム (prints "Hello world!" regardless of input) =72>=101>=108>=108>=111>=32>=119>=111>=114>=108>=100>=33>= (appends …

6
巡回セールスマン
リストまたはベクターなど、3タプルの束などが与えられます。最初の2つの要素は文字列で、3番目の要素は数値です。文字列は都市であり、数字はそれらの間の距離です。タプル内の都市の順序は任意です(つまり、どちらが最初に来て、どちらが最初に来るかは関係ありません)。また、接続された引用のペアごとにタプルが1つだけあります。すべての都市が接続されているわけではありません。また、距離は常に正です(ではなく0)。これらの条件を確認する必要はありません。入力が正しい形式であると仮定することができます。あなたの仕事は、都市を周期的な順序で返すことです。そのため、ある都市から開始して、同じ都市に戻った場合、都市間の距離の合計は最小になります(正確かつ全体的に)解決策が存在すると仮定することができます。たとえば、与えられたとしましょう [("New York", "Detroit", 2.2), ("New York", "Dillsburg", 3.7), ("Hong Kong", "Dillsburg", 4), ("Hong Kong", "Detroit", 4), ("Dillsburg", "Detroit", 9000.1), ("New York", "Hong Kong", 9000.01)] 次のいずれかを出力できます(ただし、出力する必要があるのは1つだけです)。 ["Detroit","Hong Kong","Dillsburg","New York"] ["Hong Kong","Dillsburg","New York","Detroit"] ["Dillsburg","New York","Detroit","Hong Kong"] ["New York","Detroit","Hong Kong","Dillsburg"] ["Dillsburg","Hong Kong","Detroit","New York"] ["New York","Dillsburg","Hong Kong","Detroit"] ["Detroit","New York","Dillsburg","Hong Kong"] ["Hong Kong","Detroit","New York","Dillsburg"] …

9
インプレースの文字列内の単語の逆順
タスク に一致する可変文字列が与えられ[a-z]+( [a-z]+)*ます。 「hello there everyone」が「everyone there hello」になるように、同じ単語を含む文字列に逆順で変更する必要があります。 一定量以上の追加メモリを使用することは許可されていません(したがって、割り当てたばかりのバッファに文字列全体または単語全体をコピーすることはできません)。 時間の制約はありません。絶望的に非効率であることはあなたのスコアを傷つけません。 選択した言語で文字列の変更が許可されていない場合は、文字の配列を使用できます。 あなたのスコア スコアは、文字列要素に対して行った割り当ての数に基づいて純粋にカウントされます(小さいスコアが最適です)。文字列に書き込むライブラリ関数を使用すると、その書き込みもカウントされます。 入力sに必要な割り当ての数がn(s)であるとします。次に、スコアは、n(s)/ length(s)のすべての入力s(上記で指定された正規表現に一致)の最大値(理論的には、最高)です。これを正確に計算できない場合は、証明できる最低の上限を使用できます。 アルゴリズムが漸近的に少ない割り当てを使用することを証明できれば、同点を破ることができます(これは、同じスコアを持っている場合でも起こります。以下を参照)。これができない場合は、使用する追加メモリが少ないことを示すことで、同点を破ることができます。ただし、最初のタイブレーク条件が常に優先されます。 一部の入力では、すべての文字を変更する必要があるため、1未満のスコアを付けることはできません。 スコア2の単純なアルゴリズムを考えることができます(しかし、私はそれを入力していません)。 頂点と関係に関する注意 数のセットの最高値は、それらのどれよりも小さくない最小の数です。これはセットの最大値に非常に似ていますが、{2 / 3、3 / 4、4 / 5、5 / 6、...}のようないくつかの無限セットには単一の最大要素はありませんが、依然として上限があります。この場合1。 スコア2(たとえば)のアルゴリズムで一定数の割り当てのみを「保存」した場合、入力が大きくなると任意に2に近づくため、スコアは2のままになります。ただし、それに関してはタイブレークで勝ちます。

2
独占圧縮
プレイヤーのターンの開始時にモノポリーのゲームの現在の状態を表す文字列が与えられた場合、必要なすべてのデータを最小の出力に圧縮します。回答は、出力サイズとソースサイズによって判断されます。 注:地域ごとにさまざまなバリエーションがありますが、この投稿のプロパティ名などへの参照はすべてこの掲示板に基づいています。 入力: 入力は、単一の;分離された文字列として与えられます。この文字列は、標準入力、引数など、選択した言語で慣習的な方法でプログラムに与えられます。 書式なし入力は次のようになります。 numPlayers (1 to 8) whose turn (0 to numPlayers-1) for each player: bankrupt? (true/false) money (0 to 2^16-1) get-out-of-jail-free cards (0 to 2) position (0 to 39) jail turns (-1 to 2) for 28 properties: owner (-1 to numPlayers-1) mortgaged? (true/false) improvement level (0 to …

4
丘の上のイースターエッグハント
イースターエッグハント バニーが卵を見つける前にボットが卵を見つけます。ボットは幸せ。 概要 これは、イースターとイースターエッグハンティングの伝統に敬意を表して、王様の挑戦です! ボットは、対角線を含むあらゆる方向に2つのスペースのビジョンを持ち、周囲に5x5の正方形を作成して見ることができます。卵を探しており、最も卵を見つけた人が勝ちます! ボード ボードはo、イースターエッグである#s、壁である*s、他のプレイヤーであるs、および空のスペースであるsで構成されます。 辺の長さの正方形になります(number of entries) * 3。 壁に囲まれます。 壁の内側には、のランダムに配置された直線の壁の品揃えが#あり、2〜10のランダムな長さを持ちます。(number of entries) * 3それらがあります。 卵はランダムに配置されます。(number of entries) * 4それらが存在し、空白()の正方形でのみ生成されます。 ボード生成プロセスが適切に機能するには、少なくとも7つの全体が必要です。 以下に、テスト用のランダムボードを生成するJSFiddleを示します。以下に例を示し(number of entries) = 7ます。 ##################### # o ## # # o ## # #o ###### ## ###### # ## ## o # # ## ## …

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