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

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

29
ASCIIライトニングボルトを描く
前書き このStackOverflowの質問に一部触発されて、ASCIIライトニングボルトを描きましょう。 nSTDINまたはコマンドラインを介して正の整数を受け取り、以下のASCIIライトニングボルトを出力するプログラムを作成します。 入力 n描画する稲妻のジグザグ層の数を表す正の整数。 出力例 n = 1 __ \ \ \ \ \ \ \/ n = 2 __ \ \ \ \ __\ \ \ __\ \ \ \ \ \/ n = 3 __ \ \ \ \ __\ \ \ __\ \ \ __\ \ …

30
今日のランダムゴルフ#1:配列のシャッフル
シリーズについて ランダム性のテーマを中心に、小さなシリーズのコードゴルフチャレンジを実行します。これは基本的に9ホールの ゴルフコースですが、いくつかの質問にまたがっています。通常の質問であるかのように、個々の課題に個別に参加できます。 ただし、すべての課題にわたってリーダーボードを維持します。このシリーズは、数日ごとに投稿される9つのチャレンジ(今のところ)で実行されます。9つのチャレンジすべてに参加したすべてのユーザーは、シリーズ全体を獲得する資格があります。全体的なスコアは、各チャレンジでの最短提出の合計です(したがって、チャレンジに2回答えた場合、より良い答えだけがスコアにカウントされます)。この総合リーダーボードで28日間トップの座を保持している人がいる場合は、500 repの賞金を授与します。 このシリーズにはたくさんのアイデアが並んでいますが、将来の課題はまだはっきりしていません。何か提案があれば、関連するサンドボックスの投稿でお知らせください。 穴1:配列をシャッフルする 最初のタスクは非常に単純です。整数の空でない配列を指定して、ランダムにシャッフルします。ただし、いくつかのルールがあります。 すべての可能な順列は同じ確率で返される必要があります(シャッフルは均一な分布を持つ必要があります)。あなたのアルゴリズムは、上のJavaScriptでそれを実装することで、均一/公平であるかどうかをチェックすることができますウィルそれシャッフルバイアスの行列が生成されます、 -結果は彼らのビルトイン限り均一になるはずですフィッシャーイエーツまたはソート(順不同)。 組み込みまたはサードパーティの方法を使用して、配列をシャッフルしたり、ランダムな順列を生成したり(またはすべての順列を列挙したり)しないでください。特に、使用できる組み込みのランダム関数は、一度に1つの乱数を取得することだけです。あなたはかもしれいずれかがO(1)で乱数メソッドの実行を内蔵し、要求された間隔で完全に均一であることを前提と(数学的な意味で-あなたはここで、浮動小数点表現の詳細を無視する場合があります)。言語で一度にm個の乱数のリストを取得できる場合は、m個の数字が互いに独立しており、O(m)としてカウントする限り、この機能を使用できます。 実装はO(N)の時間複雑度を超えてはなりません。ここで、Nはシャッフルされる配列のサイズです。たとえば、「乱数でソート」することはできません。 配列を適切にシャッフルするか、新しい配列を作成することができます(この場合、古い配列は自由に変更できます)。 完全なプログラムまたは関数を作成し、STDIN、コマンドライン引数、関数引数またはプロンプトを介して入力を取得し、戻り値またはSTDOUT(または最も近い代替)に出力して出力を生成できます。配列を適切にシャッフルする関数を作成する場合、もちろん返す必要はありません(関数が返された後に言語で変更された配列にアクセスできる場合)。 入力および出力は、任意の便利なリストまたは文字列の形式であってもよいが、範囲内の任意の整数をサポートする必要があり-2 31 ≤X <2 31。原則として、コードは長さ2 31までの配列で動作するはずですが、これは必ずしもメモリに収まる必要はなく、妥当な時間内に完了する必要もありません。(ハードコードループなどの任意のサイズ制限を見たくありません。) これはコードゴルフなので、最短の提出(バイト単位)が勝ちです。 リーダーボード 次のスニペットは、シリーズのすべての課題にわたってリーダーボードを生成します。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、すべての回答を見出しで開始してください。 # Language Name, N bytes N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: # Ruby, <s>104</s> <s>101</s> 96 bytes (言語は現在表示されていませんが、スニペットはそれを必要とし、解析します。将来、言語ごとのリーダーボードを追加するかもしれません。) コードスニペットを表示 /* Configuration */ var QUESTION_IDs = [45302, 45447, 46991, 49394, 51222, 66319, …

17
GolfScriptでのゴルフのヒント
この投稿はまだありませんか? もちろん、GolfScriptはゴルフ用に作られているので、特定のヒントは本当に必要ないと思うかもしれません。しかし、GolfScriptの機能を最大限に活用するには、いくつかの非自明なトリックを学ぶ必要があります。この投稿は、このような役立つヒントやコツを収集するためのものです。 まず、公式のGolfScriptリファレンスページがあります。最初にこれらをよく理解する必要があります。 チュートリアル 構文 ビルトイン クイックリファレンス 特に、この順序でページを読むことを強くお勧めします。クイックリファレンスは、組み込みに十分慣れているまではほとんど役に立ちません。チュートリアルには、他のページでは説明されていない重要な詳細が含まれます。 。 追伸 インスピレーションと個人的な興味のために、次の質問に答えてください。 GolfScriptで文字変換を制限する方法は? {FROM?TO=}%作品ならば、あなたは必ずすべての入力がで発見されたことができますFROM(または、それらはすべての最後の要素にマッピングされて気にしないTO)が、私は変わらず、マッピングされていない値を残すために見てきたすべての方法は、多かれ少なかれklugeyされています。 文字列をASCIIコードの配列に変換したり戻したりするにはどうすればよいですか?副作用としてこれを行う操作はどれですか?文字列の文字をスタックにダンプする最良の方法は何ですか(~配列の場合と同様)?

30
バイナリ1のカウントで数値を並べ替える
ゴール 関数またはプログラムを作成して、整数の配列をバイナリ表現に存在する1の数で降順​​に並べ替えます。二次ソート条件は必要ありません。 ソートされたリストの例 (16ビット整数を使用) Dec Bin 1's 16375 0011111111110111 13 15342 0011101111101110 11 32425 0111111010101001 10 11746 0010110111100010 8 28436 0000110111110100 8 19944 0100110111101000 8 28943 0000011100011111 8 3944 0000011111101000 7 15752 0011110110001000 7 825 0000000011111001 6 21826 0101010101000010 6 入力 32ビット整数の配列。 出力 説明どおりにソートされた同じ整数の配列。 得点 これは、1週間の時間内に選択される最小バイト数のコードゴルフです。

30
半対角アルファベット
英語のアルファベットの文字が与えられた場合、あなたの仕事は入力に対して半対角アルファベットを作成することです。 半対角アルファベットを作成する方法は? 簡単な説明:最初に、アルファベットの文字の位置を取得しますP(Pここでは1から始まります)。次に、行に入力(包括的)が来るまで各文字を印刷し、その文字の前にスペースを入れP-1てその文字を繰り返しPます。 例: 与えられたF、あなたのプログラムは出力するはずです: A BB CCC DDDD EEEEE FFFFFF 与えられたK、あなたのプログラムは出力するはずです: A BB CCC DDDD EEEEE FFFFFF GGGGGGG HHHHHHHH IIIIIIIII JJJJJJJJJJ KKKKKKKKKKK 与えられたA、あなたのプログラムは出力するはずです: A ルール 小文字または大文字を選択できますが、それは一貫している必要があります。 次のように余分なスペースがある場合があります。 一貫した先行スペース(各行)。 末尾または先頭の改行。 末尾のスペース。 入力および出力は、任意の標準的な平均で取得でき、デフォルトの抜け穴が適用されます。 ascii-artバージョンも提供している限り、代わりに行のリストを出力できます。 これはcode-golfなので、バイト単位の最短コードが勝ちです! この挑戦に触発された。

30
アッカーマン関数
アッカーマン関数は、原始再帰ではない、計算可能な合計関数の最も単純な例の1つであることで注目に値します。 A(m,n)2つの非負整数を取り込む定義を使用します。 A(0,n) = n+1 A(m,0) = A(m-1,1) A(m,n) = A(m-1,A(m,n-1)) 実装できます 入力として2つの整数を受け取り、整数を返す名前付き関数または匿名関数、または STDINで2つのスペースまたは改行で区切られた整数を取得し、結果をSTDOUTに出力するプログラム。 ライブラリのアッカーマン関数または超指数関数が存在する場合は使用できませんが、他のライブラリのその他の関数は使用できます。正規の累乗が許可されます。 関数は、A(m,n)m≤3およびn≤10の値を1分以内に検出できる必要があります。少なくとも理論的には、他の入力で終了する必要があります。無限のスタックスペース、ネイティブのBigint型、および任意の長い期間が与えられた場合、答えを返します。編集:言語の制限の深さがデフォルトの再帰の深さである場合は、文字コストなしで再設定できます。 最短の文字数での提出が勝ちです。 答えを確認するための値を次に示します。 A | n=0 1 2 3 4 5 6 7 8 9 10 -----+----------------------------------------------------------------- m=0 | 1 2 3 4 5 6 7 8 9 10 11 1 | 2 3 4 …

30
196アルゴリズムコードゴルフ
以下のためのショートプログラム書く196-アルゴリズムを。アルゴリズムは整数から始まり、回文に達するまでその逆を追加します。 例えば input = 5280 5280 + 0825 = 6105 6105 + 5016 = 11121 11121 + 12111 = 23232 output = 23232 入力 整数、これはLyrchrel番号ではありません(つまり、無限に継続するのではなく、最終的にこのアルゴリズムで回文を生成します) 出力 回文が届きました。

30
パスカルの三角形を生成する
パスカルの三角形は、最初の行の1から開始して生成されます。後続の行では、数値は、そのすぐ上の左右の2つの数値の合計によって決定されます。 デモンストレーションのために、Pascalの三角形の最初の5行は次のとおりです。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 チャレンジ 入力n(ただし、選択した言語で最も便利な場合)を指定すると、Pascalの三角形の最初のn行が生成されます。nは1から25までの整数であると仮定できます。各行と各番号の間には改行が必要ですが、それ以外に、好きなようにフォーマットできます。 これはcode-golfであるため、最短のソリューションが優先されます。 I / Oの例 > 1 1 > 9 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 …

15
ロックを解除します
3桁のコンビネーションロックで自転車をロックしました。今、あなたは乗車に行きたいので、次のプログラムの助けを借りてそれを解除する必要があります。 入力 第1パラメーター ロック状態のロックの数字の組み合わせ。2番目のパラメーター(= ロック解除状態の組み合わせ)とは異なる必要があります。(または、自転車が盗まれる可能性があります!) 範囲000..999。先行ゼロは省略できません。 2番目のパラメーター ロック解除状態のロックの数字の組み合わせ。この値が目標です。 範囲000..999。先行ゼロは省略できません。 出力 初期状態(常に1番目のパラメーター)と最後のステップ(常に2番目のパラメーター)を含む各「回転」後の組み合わせロックの各状態のリスト。 アルゴリズム ロック解除状態で正しい数字に到達するまで、最初の数字を1つずつ「回転」させます。ただし、ロック解除コード全体を理解しているため、ロック解除状態の数字に到達するために必要な回転量が最小になる方向に数字を回転させます。。同点の場合、好きな方向を選択できます。 正しい最初の桁に達したら、2番目から3番目まで同じ手順を開始します。 数字の順序は、円として理解することです。 ... 9 0 1 2 3 4 5 6 7 8 9 0 1 2 ... つまり、1から9までの最小回転量は 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 = …

11
私の配列にエコーがあります...私の配列にエコーがあります...私の配列
助けて!私のアレイのいくつかに迷惑なエコーがあるようで、それを取り除きたいです。これが発生すると、元の配列が中央のどこかで繰り返され、値が互いに加算されます。 たとえば、配列に[ 422, 375, 527, 375, 859, 451, 754, 451 ]は次のような自身のエコーが含まれます。 [ 422, 375, 527, 375, 859, 451, 754, 451 ] <-- array with echo (input) [ 422, 375, 105, 0, 754, 451 ] <-- original array (output) [ 422, 375, 105, 0, 754, 451 ] <-- echo of original …

15
原点に近い三角形の格子点
バックグラウンド 三角グリッドは写真の下三角格子の一例である辺の長さ1の正三角形と定期的に平面をタイリングすることにより形成されたグリッドです。 三角格子点三角格子を形成する三角形の頂点です。 原点は、三角格子点の一つである平面上の固定点です。 チャレンジ 非負の整数が与えられた場合n、原点からのユークリッド距離がより小さいか等しい三角形の格子点の数を見つけますn。 例 次の図は、(例としてn = 7、ポイントAを原点として60度の領域のみを示しています)の例です。 テストケース Input | Output --------------- 0 | 1 1 | 7 2 | 19 3 | 37 4 | 61 5 | 91 6 | 127 7 | 187 8 | 241 9 | 301 10 | 367 11 | …

18
電話番号(文字を含む)のロータリーダイヤルパルスをカウントする
祖父母の日、電話番号のダイヤルは次のようなロータリーダイヤルで行われました。 各数字をダイヤルするには、対応する穴に指を入れて指先まで引っ張り、離します。メカニズムにより、ダイヤルが静止位置に戻り、電話機は指定された回数だけ回路を切断および再接続し、カチッという音がします。 数字Nをダイヤルするには、10個のパルスであるN = 0を除き、そのような「パルス」をN 個必要とします。 回転式電話には、大きい数字(8、9、0)が小さい数字(1、2、3)よりもダイヤルに時間がかかるという特性があります。これは、初期のエリアコードマップを作成する際の重要な考慮事項であり、人口(および電話回線)の密度が高いニューヨーク市が212(5パルスのみ)だったのに対し、907(26パルス)はまばらに住んでいたアラスカに行った理由です。もちろん、タッチトーンダイヤルが一般的になったとき、これはすべて無関係になりました。 チャレンジ 電話番号を含む文字列(または文字のシーケンス)を入力として受け取り、その回転ダイヤルパルスの数を出力するプログラムまたは関数を、できる限り少ないバイト数で書き込みます。これらは次のようにカウントされます。 桁 桁1〜9は、そのパルス数としてカウントされます。 桁0は10パルスとしてカウントされます。 手紙 ダイヤルの2〜9の数字には、ラテンアルファベットの文字が関連付けられていることに注意してください。これらは元々は名前付き交換を対象としていましたが、後者は電話ワードやテキストメッセージ入力システムに再適用されました。 E.161文字の数字への割り当てを使用して、電話番号に文字を含めることをサポートする必要があります。 A、B、C = 2 D、E、F = 3 G、H、I = 4 J、K、L = 5 M、N、O = 6 P、Q、R、S = 7 T、U、V = 8 W、X、Y、Z = 9 入力は、大文字または小文字のいずれかにすでに大文字変換されていると仮定できます。 その他のキャラクター 文字とスペースをフォーマット区切り文字として任意に使用できるようにする必要があります()+-./。実装が簡単な場合は、この目的で英数字以外の文字を許可することを選択できます。 これらの文字は、パルスカウントには寄与しません。 サンプルコード Pythonの非ゴルフルックアップテーブルと関数: PULSES = { '1': 1, …
34 code-golf  number 

30
P Pr Pre Pref Prefi Prefix Prefixe Prefixes
いくつかの有限リストが与えられた場合、空のリストを含むすべてのプレフィックスのリストを長さの昇順で返します。 (基本的にHaskell関数を実装しますinits。) 詳細 入力リストには数字(またはより便利な場合は別のタイプ)が含まれます。 出力はリストのリストでなければなりません。 サブミッションは機能である必要はありますが、デフォルトのI / Oを使用できます。 すべての些細な解決策にCWの答えがあります。 例 [] -> [[]] [42] -> [[],[42]] [1,2,3,4] -> [[], [1], [1,2], [1,2,3], [1,2,3,4]] [4,3,2,1] -> [[], [4], [4,3], [4,3,2], [4,3,2,1]]

30
オートグラムプログラム
この文は、2つのa、2つのc、2つのd、28のe、5つのf、3つのg、8つのh、11つのi、3つのl、2つのm、13のn、9のo、2つのp、5のr、25を使用しますs、23個のt、6個のv、10個のw、2個のx、5個のy、1個のz。 そのような文はオートグラムと呼ばれます。タスクは、同様のプロパティを持つプログラムまたは関数を作成することです。入力としてバイトを受け取り、そのバイトがプログラムのソースコードに現れる回数を表す整数を出力します。入力がソースに表示されない場合、0を出力する必要があります。 プログラムは、直接または間接的に独自のソースコードを読み取ってはなりませんが、その代わりに、出力を提供するために必要なすべてのデータはハードコードされたクインスタイルでなければなりません。プログラムの長さは少なくとも1バイトでなければなりません。 これはcode-golfであるため、最短のエントリ(バイト単位)が優先されます。回答は受け付けませんので、お好きな言語で最短のソリューションを競ってください。 投稿に説明を含めることを強くお勧めします。 リーダーボード 以下は、総合スコアと言語ごとのリーダーボードです。 コードスニペットを表示 var QUESTION_ID=162408,OVERRIDE_USER=21034;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 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=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/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" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> …

30
上下、上下
チャレンジ: 正の整数入力nを指定すると、次のパターンに従うベクトルを作成します。 0 1 0 -1 -2 -1 0 1 2 3 2 1 0 -1 -2 -3 -4 -3 -2 -1 ... ±(n-1) ±n または、言葉で説明します:ベクトルは、0で始まり1、シーケンスの一部ではない最小の奇数の正の整数に達するまで増分し、それから最小の(大きさで)偶数の負の整数に達するまで減分しますシーケンスの一部ではありません。n到達するまでこのように継続します。シーケンスが奇数のn場合nは正で終了し、偶数のn場合nは負で終了します。 出力形式は柔軟です。 テストケース: n = 1 0 1 ----------- n = 2 0 1 0 -1 -2 ----------- n = 3 0 1 0 -1 …

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