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

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

18
最小限のNetHack
NetHackは、プレイヤーがダンジョンの最下層からイェンダーの魔除けを取得しなければならないローグライクゲームです。一般にtelnetを介してプレイされるゲーム全体は、ASCIIグラフィックで表されます。ゲームは非常に挑戦的であり、成功するためには多くのゲームの仕組みの知識が必要です。 この課題のために、ダンジョン全体が単一のレベルであり、5×16文字のみであると仮定します。さらに、これは「安全な」ダンジョンであるか、プロトタイプのみを実装していると想定します。モンスター、空腹に関する懸念などはありません。実際、キャラクターとアミュレットとゲームの位置のみを追跡する必要があります。プレイヤーがアミュレットと同じ場所に到着すると効果的に終了します。 チャレンジ要件 5×16のダンジョン(シングルレベル)があります。 プレイヤーに開始場所(オプションでランダム)を与え、アミュレットにダンジョン内の別のランダム(プログラムが実行されるたびに異なる)開始広場を与えます。つまり、魔除けはプレイヤーと同じマスから始めることはできません。 プレーヤーを一度に1マスずつ移動する4つの入力キー(4つの基本方向)を受け入れます。他の入力の読み取り/処理が許可されます( 'enter'などを押す必要があるreadline()関数)。 ダンジョンの境界外への移動は許可されていません。たとえば、プレイヤーがダンジョンの右端にいる場合、右を押しても何も実行されません。 初期生成後および各移動後に、ゲームの状態を印刷します。これはコードゴルフであり、印刷はかなり面白くないので、状態の変化がないと仮定して、印刷関数と関数呼び出しの文字数を無視します。空のセルはピリオド(.)、アミュレットは二重引用符(")、文字はアットマーク()として表示する必要があります@。 プレイヤーがアミュレットを「発見」するとゲームは終了します(同じ広場に到着します) 勝ち これは、ゴルフの挑戦であり、今日から1週間の要件を満たす最短のコードが勝者と宣言されます。 例 基本的な要件とサンプル出力を示すC#(ungolfed)のソリューションの例を次に示します。 using System; namespace nh { class Program { static Random random = new Random(); // player x/y, amulet x/y static int px, py, ax, ay; static void Main(string[] args) { px = random.Next(0, 16); py = …
64 code-golf 

30
文字列のgoogolコピーを出力します
入力を要求せず、空でない文字列のgoogolコピーを印刷し、それ以上、それ以上、そして停止するプログラムを見ることに興味があります。グーゴルは 10 ^ 100、すなわちとして定義され、1は小数で百0の続きます。 出力例: 111111111111111111111111111111111111111111111111111111111111111111111111... または Hello world Hello world Hello world Hello world Hello world Hello world ... 文字列は、完全に空白または特別な記号で構成することもできます。固定文字列の同一のコピーに対する唯一の例外は、言語が何らかの方法で出力を装飾する場合で、それは防止できませんが、各行に行番号を追加するなど、ラッパースクリプトで簡単に元に戻すことができます。このような場合のラッパースクリプトを提供する必要はありません。 コンピューターが時間切れになることはないと想定できますが、それ以外の点では、プログラムには適切なリソースが必要です。また、選択したプログラミング言語が課す制限を尊重する必要があります。たとえば、整数型に許可されている最大値を超えることはできず、4 GBを超えるメモリは必要ありません。 言い換えれば、プログラムは原則としてコンピューター上で実行することでテスト可能でなければなりません。しかし、この数の範囲により、出力する文字列のコピー数が正確に10 ^ 100であり、その後プログラムが停止することを証明することが期待されます。停止は、エラーのために終了または停止することも、終了することもできますが、その場合、エラーは、プログラムの出力から簡単に分離できない出力を生成してはなりません。 これはcode-golfであるため、バイト数が最も少ないソリューションが優先されます。 ソリューション例(C、ungolfed、3768バイト) #include <stdio.h> int main() { int a00, a01, a02, a03, ..., a99; for(a00 = 0; a00 < 10; a00++) for(a01 = 0; …
63 code-golf 

19
世界を救う自動化
あなたはデズモンド・ヒュームです。過去3年間、あなたとあなたのパートナーであるケルビンは、世界を救うために108分ごとに非常に特定のシーケンスを入力する必要があるコンピューターの奴隷でした。 4 8 15 16 23 42 あなたのパートナーは40日前に亡くなりました(ケルビンの頭と大きな岩を巻き込んだ不幸な事故のため)、そしてあなたは誰とも話すことができません。番号を入力する人はいません。単調さを破る人はいません。最初はそれほど悪くはありませんでしたが、もう沈黙を処理することはできません。「Make Your Own Kind Of Music」をもう一度聴く必要がある場合は、悲鳴を上げるでしょう。 あなたは外に出る必要があると決めます。脱出する。あなたは、いかだを作り、島から出航することにします。しかし、あなたは悪いニュースに気付く:あなたはここで立ち往生している。あなたは世界を救い続ける必要があります。 しかし、あなたは良いニュースに気づきます:あなたはプログラマです!世界の節約を自動化できます!興奮して、コンピューターに走り込み、信頼できるpythonスキルを使用して、数字を入力するための簡単なスクリプトを作成します。 import time while True: print "4 8 15 16 23 42" time.sleep(60 * 107) すばやく、シンプルで、信頼性が高く、短く、簡単です。優れたpythonスクリプトに必要なすべてのもの。しかし、それをテストしようとすると、エラーが発生します。 Bad command or file name. ええ、奇妙です。まあ、C ++を試してみましょう。 #include <iostream> #include <unistd.h> int main() { while (true) { std::cout << "4 …

30
単語が同形かどうかを確認する
2つの単語が同じ文字の繰り返しパターンを持っている場合、2つの単語は同形です。たとえば、両方ESTATEとDUELEDパターンを持っていますabcdca ESTATE DUELED abcdca 文字1と6は同じであるため、文字3と5は同じであり、それ以上はありません。これは、単語が置換暗号によって関連付けられていることも意味しますE <-> D, S <-> U, T <-> E, A <-> L。ここでは一致しています。 2つの単語を取り、それらが同形かどうかをチェックするコードを記述します。最少バイトが勝ちます。 入力:大文字の2つの空でない文字列A..Z。必要に応じて、これらを2つの文字列のコレクションまたはセパレータ付きの単一の文字列として使用できます。 出力:一貫Truthy値同形体、と一貫しているペアのFalsey値そうでない場合。異なる長さの文字列は、同形ではない有効な入力です。 テストケース: 正しい: ESTATE DUELED DUELED ESTATE XXX YYY CBAABC DEFFED RAMBUNCTIOUSLY THERMODYNAMICS DISCRIMINATIVE SIMPLIFICATION 偽: SEE SAW ANTS PANTS BANANA SERENE BANANA SENSES AB CC XXY XYY ABCBACCBA ABCBACCAB ABAB CD …

12
逆インデント
逆にインデントすると、コードがより速く実行できるため、コンパイラは「ブランチ」の最上部からツリー設計パターンのようにコードを処理できると聞きました。これは、重力によりコードのコンパイルにかかる時間が短縮され、データ構造の効率が向上するためです。Javaスクリプトの例を次に示します。 function fib(n) { var a = 1, b = 1; while (--n > 0) { var tmp = a; a = b; b += tmp; if (a === Infinity) { return "Error!"; } } return a; } しかし、何らかの理由で、メモ帳にはこれを自動的に行う設定がないため、それを行うプログラムが必要です。 説明 提出には、入力としてコードスニペットを使用し、インデントを反転し、結果のコードを出力する必要があります。 これは、次の手順で実行されます。 コードを行に分割します。各行はゼロ個以上のスペースで始まります(タブはありません)。 コード内のすべての一意のインデントレベルを見つけます。たとえば、上記の例では、これは 0 4 8 12 このインデントレベルのリストの順序を逆にし、逆のリストを元のリストにマッピングします。これは言葉で説明するのは難しいですが、例では、次のようになります 0 …

30
拘留中の行の書き込み
前書き 悪いニュースの人-あなたは拘留されました。あなたの英語の先生はこのサイトを理解していないので、「あなたのデジタルドッキーで数学をやめるのを止めてください、これは英語のクラスです!」 彼女は、黒板に25回、お気に入りのことわざを書くように命じました。これにより、黒板に合計100行が表示されます。 The eighteen-hundreds were a time for rum. The nineteen-hundreds were a time for fun. The two-thousands are a time to run a civilized classroom. 幸運なことに、あなたは熱心な読者です(もちろん、エキスパートのコードゴルファーは言うまでもありません)!あなたはおそらくあなたを楽にさせるかもしれないトリックについて読んでいます。 (Foxtrot by Bill Amend) 残念ながらジェイソンにとってはうまくいきませんでした。しかし、あなたはより良いアイデアを持っています!あなたの英語の先生はあなたが数学をしていると思っているので、あなたがあなたのプログラムからすべての数字を省くならば、それはちょうどうまくいくかもしれません!また、あなたは怠け者の生徒であり、ボードに多くの文章を書きたくないので、プログラムをできるだけ短くしておく必要があります。 次の規則に準拠するプログラムを作成します。 プログラムは、上記の4行を25回印刷する必要があります。行はその順序で出力され、繰り返されなければなりません。合計100行の出力(最後の末尾の改行または先頭の先頭の改行でも構いません)。 文字は使用できません0123456789。あなたの先生は数学に戸惑い、あなたを呼ぶでしょう! インポートをカウントせずに、インポートおよび外部ライブラリを使用できます。あなたの英語の先生はプログラミングについて知りません。ジェイソンは書かないことで多くの仕事を救うことができた#include <stdio.h>でしょうし、あなたは彼と同じ間違いをしたくありません! byteカウントでプログラムを採点します。最低スコアが勝ちます!

24
回転した回数を出力する長方形プログラムを作成する
タイトルはそれをすべて言います。あなたの目標は、回転および再実行して、行われた90°Counter-Clockwise(CCW)回転の数を出力できる、文字のw×h長方形を形成するプログラムを作成することです。 たとえば、3×2プログラムの場合 abc def 問題を解決し、最初は0を出力し、90°CCWの連続回転 cf fed da be cba eb ad fc それぞれ1、2、3を出力します。 コメントを使用すると、ほとんどの言語でこれが簡単なタスクになります。たとえば、Rubyでは、7×7の長方形で実行できます。 ###p### ### ### ###1### p 0#2 p ###3### ### ### ###p### 課題は、コメントなしでこれを行うことです。 得点 スコアはw * h(長方形の面積)です。改行は除外されます。言い換えれば、コードゴルフ、改行はカウントされません。 Rubyの例のスコアは49です(もちろん、コメントがあるため無効です)。 ノート コードは実際には長方形で、行末に欠落文字がない必要があります。 必要に応じて、0 1 2 3の代わりに他の有効な「mod 90°」値を出力できます。したがって、0の代わりに8、3の代わりに-1が適切です。 出力はコンソールまたはファイルに送られます。 標準の抜け穴が適用されます。 これが私の最初の質問であり、本当に何人かの人々の興味を引くことを願っています。楽しい!

20
ハッシュ衝突:「NO」は「YES」を意味します
このコードゴルフは、最近のDaily WTFの記事「You Ca n't Can the True!」に触発されました!、次のように記述された文字列比較を備えています。 String yes = "YES"; if ((delay.hashCode()) == yes.hashCode()) JavaのString.hashCodeメソッドがたまたまJavaのメソッドが次のように実装された場合、Steveのチームに生じたトラブルを想像してください"YES".hashCode() == "NO".hashCode()。したがって、ここで提案する課題は次のとおりです。 (私はそれを呼び出すよ、できるだけ少ない文字数で、ハッシュ関数を書く hように、文字列パラメータと整数戻り値で) h("YES")に等しいですh("NO")。 もちろん、これはdef h(s): return 0、すべての文字列に対してハッシュ衝突を発生させるのような関数で行うのは簡単です。この課題をさらに面白くするには、次の追加規則を順守する必要があります。 3つ以下の大文字のASCII文字()で構成される他の 18 277の可能な文字列のうち、ハッシュの衝突が発生して^[A-Z]{0,3}$はなりません。 明確化(Heiko Oberdiekが指摘):入力文字列には以外の文字が含まれている場合がA-Zあり、コードは任意の文字列をハッシュできる必要があります。(ただし、入力がいることを仮定してもよいです文字列ではなくNULLポインタまたは他のいくつかのデータ型のオブジェクト。)しかし、戻り値が一致しない文字列を何のためにあるのかは重要ではありません^[A-Z]{0,3}$限り、整数です。 さらに、この関数の意図をわかりにくくするには: コードには、文字または文字列リテラル内に文字「Y」、「E」、「S」、「N」、または「O」(大文字または小文字)を含めないでください。 もちろん、この制限は、言語のキーワードには適用されませんのでelse、returnなど細かいです。

12
テキストにタイプミスを挿入する
私はいくつかのテキストを書きましたが、あまりにもプロフェッショナルに見えます。書いたときに本当に疲れたように見せたいです。誤字を挿入する必要があります。 あなたの挑戦は、テキストの任意の単一行を取り、タイプミスを追加することです。これは、各キャラクターについて、タイプミスの可能性が10%あることを意味します。 「typofied」の定義では、次のいずれかを(ランダムに)選択する必要があります。 キャラクターを複製します。 キャラクターを削除します。 文字をキーボードスペース1つ分シフトします。「キーボード」は次のように定義されます。 qwertyuiop asdfghjkl zxcvbnm 文字シフトの場合、スペースを1つ上、下、左、または右に移動する必要があります。これはランダムに選択する必要があります。シフトオプションは、アルファベット文字にのみ適用されます。大文字と小文字を区別する必要があります。m!のようなエッジケースには注意してください! 「ランダム」の定義は、結果が予測可能であってはならないことです(以前の結果を見て)。たとえば、10文字ごとにタイプミスすることはできません。さらに、ランダム性は均等に分布している必要があります。たとえば、30%の複製、30%の削除、40%のシフトはできません。それぞれに1/3のチャンスが必要です(アルファベット以外の文字の場合はそれぞれに1/2)。 入力例: This is some correct text. It is too correct. Please un-correctify it. 出力例: This iissome xorreect tex.. It is too coteect. Please jn-corretify it. これはcode-golfなので、バイト単位の最短コードが優先されます。
63 code-golf 

30
2つの入力と1つの出力を備えた16個の論理ゲートすべてをゴルフしましょう!
たとえば、ゲートA and Bは2つの入力と1つの出力を持つ論理ゲートです。 以下の理由により、正確に16個あります。 各論理ゲートは2つの入力を受け取ります。これらの入力は、真実または偽であり、4つの可能な入力を提供します 4つの可能な入力のうち、それぞれが真実と偽の出力を持つことができます したがって、2 ^ 4の可能性のある論理ゲートがあり、16です。 あなたの仕事は、それらすべてを個別に実装する16のプログラム/関数を書くことです。 機能/プログラムは独立している必要があります。 これらは、true / falsey値を出力する限り有効です。つまり、およびで生成されたA or Bとしてlambda a,b:a+bも、Pythonでとして実装できます。2A=TrueB=True スコアは、各機能/プログラムに使用される合計バイト数です。 論理ゲートのリスト 0,0,0,0(false) 0,0,0,1(and) 0,0,1,0(A and not B) 0,0,1,1(A) 0,1,0,0(not A and B) 0,1,0,1(B) 0,1,1,0(xor) 0,1,1,1(or) 1,0,0,0(nor) 1,0,0,1(xnor) 1,0,1,0(not B) 1,0,1,1(B implies A) 1,1,0,0(not A) 1,1,0,1(A implies B) 1,1,1,0(nand) 1,1,1,1(true) 最初の数字がの出力でA=false, B=falseあり、2番目がの出力でA=false, B=trueあり、3番目がの出力でA=true, …

30
1からnまでのすべての整数の合計
私は、これがまだ行われていないことに正直驚いています。既存のスレッドを見つけることができる場合は、必ずこれを重複としてマークするか、私に知らせてください。 入力 入力は、1以上の正の整数の形式です。 出力 1と数値入力の間のすべての整数の合計を出力する必要があります。 例 In: 5 1+2+3+4+5 = 15 Out: 15 OEIS A000217 —三角形の数:a(n)= binomial(n + 1,2)= n(n + 1)/ 2 = 0 + 1 + 2 + ... + n。 リーダーボード 以下のコードスニペットを実行して、この質問の回答のリーダーボードを表示します。(これを提案してくれたProgrammer5000とsteenbergh、および作成してくれたMartin Enderに感謝します。) コードスニペットを表示 var QUESTION_ID=133109,OVERRIDE_USER=69148;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:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var …
63 code-golf  math  number 

9
この山の明るさは?🔥
山は、最初の点の座標有する線分の集合として定義され、そして最後の点の座標を有します、。すべての中間ポイントには、y座標(座標)が厳密に0より大きい値があります。x座標(横座標)の昇順でソートされた山上のポイントが与えられます。2つのポイントが同じx座標を持つことができ、山の垂直セグメントを生成できることに注意してください。同じx座標を持つ2つのポイントが指定されている場合、それらは指定された順序で接続する必要があります。さらに、山の水平セグメントが存在する場合があります。これらの水平セグメントは、何があっても点灯しません。すべての座標は非負の整数です。(0,a)a > 0(b,0)b > 0 質問:太陽が山の右側にある無限の垂直な光の平面であると仮定すると、照らされる山の全長はいくらですか?この数値を丸める必要はありませんが、丸める場合は、小数点以下4桁以上を含めてください。写真を含めました。 ここで、太字の線は点灯しているセグメントを表しています。入力では、PはQの前に表示されることに注意してください(PQは垂直線分です)。したがって、前の点はQではなくPに接続されます。 リストのリスト、単一のリスト、文字列など、合理的な形式で入力を取得できます。 テストケース: (0,3000) (500, 3500) (2500, 1000) (5000,5000) (9000,2000) (9000,3500) (10200,0) Output: 6200.0000 この画像に示すように、ここには2つのライトアップセグメントがあります 。最初のセグメントの長さは5000/2 = 2500で、2番目のセグメントの長さは3700です。 これはcode-golfであるため、バイト単位の最短回答が優先されます。
62 code-golf  math 

30
Nで満たされたN次元N ^ N配列
In: 十分なメモリと正の整数N Out: Nで埋められたN次元のN ^ N配列、ここでN ^ NはN行N列N列のN項を意味します... 例: 1:[1]長さ1の1D配列(リスト)で、単一の1を含む 2:[[2,2],[2,2]]2行2列の2D配列(テーブル)で、2で埋められます 3:[[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]]]これは、3つのレイヤー、3行、3列で構成され、3で満たされた3D配列(立方体)です 4: [[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]]] 5と6:答えの1つをご覧ください。

30
C#でのコードゴルフのヒント
C#でゴルフをするための一般的なヒントは何ですか?私は、少なくともC#に固有のゴルフ問題全般のコーディングに適用できるアイデアを探しています(たとえば、「コメントの削除」は答えではありません)。回答ごとに1つのヒントを投稿してください。 -marcogのアイデアから借りた;)
62 code-golf  tips  c# 

30
Rubyでのゴルフのヒント
Rubyでゴルフをするための一般的なヒントは何ですか? 私は、Rubyに特有のゴルフ問題全般のコーディングに適用できるアイデアを探しています。(たとえば、「コメントの削除」は答えになりません。) 回答ごとに1つのヒントを投稿してください。
62 code-golf  tips  ruby 

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