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

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

7
再帰的な素因数分解
あなたの仕事は、入力から取られた数値の素因数を取り(1に等しいすべての指数を省略)、次にすべての指数の素因数を取り、合成数がなくなるまで続けます。そして結果を出力します。 私が求めていることを少し明確にするために、これを行うjavascriptプログラムを次に示しますが、782バイトではまだ十分にゴルフされていません。 var primes=[2,3]; function nextPrime(){ var n=2; while(isAMultipleOfAKnownPrime(n)){n++} primes.push(n); } function isAKnownPrime(n){return primes.indexOf(n)!=-1}; function isAMultipleOfAKnownPrime(n){ for(var i=0;i<primes.length;i++)if(n%primes[i]==0)return true; return false; } function primeFactorize(n){ while(primes[primes.length-1]<n)nextPrime(); if(isAKnownPrime(n)||n==1)return n; var q=[];while(q.length<=n)q.push(0); while(n!=1){ for(var i=0;i<primes.length;i++){ var x=primes[i]; if(n%x==0){q[x]++;n/=x} } } var o=""; for(var i=2;i<q.length;i++){ if(q[i]){if(o)o+="x";o+=i;if(q[i]>1){o+="^("+primeFactorize(q[i])+")"}} } return o; } alert(primeFactorize(+prompt())); 演算の順序をできるだけ明確にして、各レベルで素因数を昇順にソートする必要があります。 フォーマットされたmathprintまたは有効なlatexコードとして出力を生成すると、-50バイトのボーナスが得られます。

3
ユークリッドリズムの生成
ユークリッドアルゴリズムが従来の音楽リズムを生成できることをご存知ですか?これと似ていますが、少し異なるアルゴリズムを説明することで、これがどのように機能するかを説明します。 正の整数n、ビートの総数、正の整数k、鳴らされるビートの数(ノート)を選択します。リズムはnビットのシーケンスと考えることができますk。ビットは1です。アルゴリズムの考え方は、1を0の間でできるだけ均等に分散することです。 たとえば、n = 8およびk = 5を使用すると、5つの1と3つの0から始まり、それぞれが独自のシーケンスになります。 [1] [1] [1] [1] [1] [0] [0] [0] どの時点でも、2種類のシーケンスがあります。最初のシーケンスは「コア」シーケンスで、最後のシーケンスは「残りの」シーケンスです。ここで、コアは[1]s、残りは[0]sです。残りのシーケンスが複数ある限り、それらをコアに分散します。 [1 0] [1 0] [1 0] [1] [1] コアは[1 0]で残りは[1]であり、再び配布します。 [1 0 1] [1 0 1] [1 0] 現在のコアは[1 0 1]、残りは[1 0]です。残りのシーケンスが1つしかないため、停止して文字列を取得します 10110110 これは、4回繰り返されたように聞こえます。 n = 16andを使用した別の例を次に示しk = 6ます。 [1] [1] [1] [1] [1] …
8 code-golf 


12
一連の数値を並べ替える
質問 m[]ランダムな順序で1から9までの数字のみが含まれ、2つの数字が同じではない9つの数字のセットが与えられた場合、任意の言語でプログラムを作成し、数字を数字順に並べ替えます(1、2、3、など)互いに隣り合う2つの番号を切り替えるだけ(つまり、1、3、2→1、2、3)。 ルール セットを変更するには、隣り合う2つの番号を切り替える必要があります 終了番号(1〜9の順)は、 m[] あなたは好きな言語を使うことができます バイト数が最も少ない答えが勝つ 編集: あなたのコードではないではない出力を印刷する必要がありますが、再編成された配列は、である必要がありますm[]。

5
合計注文の存在を決定する
このタスクでは、次のような正の整数の配列を検討します。 3 18 321 17 4 4 51 1 293 17 入力は、両方の任意の、おそらく異なる、正の長さのそのような配列のペアで構成されます。全順序≤かどうかを判断X ⊂ N × N、Nは正の整数の集合であるが、両方の入力配列が≤に対して順になるように存在するX。(A≤という通知X B∧B≤ X A)↔A = Bが成立しなければならないが、その2つの数は≤下に等しいと見なされているX場合、それらは同じ数である場合にのみ。 たとえば、入力が配列のペアである場合 7 2 1 1 4 12 3 9 8 7 2 5 1 あなたは全順序が≤どうかを把握することになっているXは、このような存在します 7≤ X 2≤ X 1≤ X 1≤ X 4≤ X 12≤ X 3 そして …

2
Paeth変換配列
PNGの圧縮アルゴリズムの重要な部分の1つはPaeth変換です。これは、(通常)より適切に圧縮されるように画像を変換します。この課題の課題は、ペース変換を計算するプログラムを作成することです。ペース変換の操作を以下に説明します。 ペースの変容 Paeth変換Xは、2次元配列の各メンバーから予測子を差し引きます。予測は、左(のアレイメンバーの元素であるA)、上部(B)、および左上(C)のXその値に対して最小の差を有しますA + B - C。 ┼─┼─┼ │C│B│ ┼─┼─┼ │A│X│ ┼─┼─┼ いずれかがA、BまたはがC、範囲外となり、その値はここでは0に置き換えられてからの擬似コードであるPNGの仕様この予測値を計算する方法を概説: function PaethPredictor (a, b, c) begin ; a = left, b = above, c = upper left p := a + b - c ; initial estimate pa := abs(p - a) ; distances to a, b, …

3
ラテン語の判断
約5秒を超えると何のタスクにも集中できなくなるため、単語をサブストリングに分割することがよくあります。サブストリングはそれぞれ長さが異なり、繰り返し文字が含まれていません。たとえば、「パスタ」という単語を「過去」と「a」、「パス」と「タ」、または「パス」と「スター」に分割すると、画像が表示されます。 ただし、すべての組み合わせを覚えるのは難しいため、通常は1つだけを選択し、最も優れた組み合わせを選択します。最も良い方法は、「スコア」が最も低い方法であると考えています。あなたの仕事は、単語を与えられて、以下の複雑なルールを与えられて、そのスコアを印刷することです。 得点 単語の採点方法の説明: 単語はラテン文字の文字列であり、大文字は同じ小文字の2で置き換える必要があります(したがって、「ボックス」は「bbox」になります)。 セグメントは単語の連続した(厳密な)サブストリングであり、文字を2回含めることはできません( "her"、 "re"、 "h"はすべて "Here"( "hhere")の有効なセグメントですが、 "hh"そして「エレ」はそうではありません) セグメンテーションは、長さが異なる一連のセグメントであり、結合すると元の単語を形成し(「tre」と「e」は「tree」を作成)、セグメンテーション内でそれ以上セグメント化できません(つまり、「ba」には単一のセグメンテーション、「ba」、および「alp」と「habet」は、「alphabet」の有効なセグメンテーションではありません。これは、これらのいずれかをさらにセグメント化できるためです(たとえば、現在「a」と「lp」と「habet」)。有効なセグメンテーション(「habet」は、長さ2または1)のセグメントを形成しないとセグメント化できません)))。 セグメンテーションのスコアは、元の単語に出現する個別の各文字のスコアの合計です(大文字が置き換えられた後)。 キャラクターのスコアリングは以下で説明されています 単語のスコアは、最も良い可能なセグメンテーションのスコアです(スコアが最も低い)。 単語に有効なセグメンテーションが存在しない場合(たとえば、 "Brass"( "bbrass")。最初の "b"と最後の "s"は独自のセグメントになければならないため、セグメント化できません。同じ長さの2つのセグメント)の場合、テキスト「evil」を出力する必要があります。それ以外の場合は、単語のスコアを出力する必要があります。 キャラクター採点 文字のスコアリングは、文字が出現する回数、および出現するセグメントの重み付けに基づいています。セグメントの重み付けは、セグメントの長さと、すべてのセグメントの長さの最小公倍数によって異なります。セグメンテーション。 segment weighting = lowest common multiple of lengths segments / length of segment 「ol」と「ive」に分割され、同じ領域の2つのボックスとして視覚化された「olive」という単語を考えます。1つは重み3の「ol」、もう1つは重み2の「ive」(LCMの6)。 ol ol ive ol ive これは、3つの「ol」から作られた2つのボックスと2つの「ive」から作られた1つのボックスを表すことを意図しています。あるいは、 "o"と "live"(LCM of 4)の場合もあります。 o o o …

6
画像のすべてのピクセルを出現回数でソートする
入力 選択したラスターグラフィック形式のファイルの名前。選択したフォーマットは、チャネルごとに少なくとも8ビットと3チャネルをサポートする必要があります。 出力 最初のファイルと同じサイズで同じサイズの同じ形式のファイル。ただし、ピクセルは発生回数の降順でグループ化され、左から右、上から下にソートされます。 ピクセルの特定の色が同じ回数表示される場合、それらの順序は指定されていません。 入力ファイルを上書きしないでください(出力には別のファイル名を使用してください)。 すべてのサードパーティの画像処理ライブラリが許可されています。 例 次のような出力が得られます。 特に、画像の下部では、同じ周波数の色の間でタイが異なるため、いくつかの変動が発生する可能性があります。

7
3つのタスクのコードを書く
最初にプログラムを実行すると、整数シーケンスが出力されます。2回目の実行では、「メアリーは小さな子羊」の曲を印刷する必要があります。3回目の実行で、ASCIIイメージファイルが生成されます。 得点 スコアは、3回の実行それぞれの開始時のコードのバイト数とファイルコンテンツの合計になります。最も低いスコアが勝ちます。 たとえば、myprogは1500バイトで、サイズは変更されませんが、実行ごとに4バイトのファイルを書き込むため、次の実行で何を行うかがわかります。スコアは1500 +(1500 + 4)+(1500 + 4)= 4508になります。 出力 最初の出力は、133個の整数のシーケンスで、単一のスペースで区切られています。 0 89 98 179 188 197 269 278 287 296 359 368 377 386 395 449 458 467 476 485 494 539 548 557 566 575 584 593 629 638 647 656 665 674 683 692 719 728 …

8
特権部分文字列を検索
特権文字列 特権文字列のセットは、次のように再帰的に定義されます。 長さが0または1のすべての文字列は特権付きです。 プレフィックスとしてとサフィックスとして1回ずつ、正確に2回出現sする短い特権文字列が存在する場合、少なくとも2 文字の長さの文字列が特権となります。重複する発生は、個別としてカウントされます。ts たとえば、文字列aa、aaaおよびabaは特権ですがab、そうでaabはありません。 入力 英数字の文字列。 出力 入力文字列のすべての特権付きサブ文字列(それぞれ1回だけ、任意の順序)。出力は、言語のネイティブ配列形式(またはそれに最も近いもの)で指定するか、1行に1つの部分文字列を出力できます。 楽しい事実 出力の文字列の数は常に正確ですlength(s) + 1(source)。 ルール 機能と完全なプログラムの両方が許可されています。最も低いバイト数が優先され、標準の抜け穴は許可されません。 テストケース これらは最初に長さ順に、次にアルファベット順にソートされますが、どのような順序でもかまいません。 "" -> [""] "a" -> ["","a"] "abc" -> ["","a","b","c"] "abcaaabccaba" -> ["","a","b","c","aa","cc","aaa","aba","abca","abcca","bccab","bcaaab","caaabc"] "1010010110101010001101" -> ["","0","1","00","11","000","010","101","0110","1001","01010","10001","10101","010010","101101","0101010","1010101","01011010","10100101","1010001101","1101010100011","00101101010100","011010101000110"] "CapsAndDigits111" -> ["","1","A","C","D","a","d","g","i","n","p","s","t","11","111","igi","sAndDigits"] リーダーボード これは、MartinBüttnerの好意による言語別のリーダーボードです。 回答が確実に表示されるようにするには、次のMarkdownテンプレートを使用して、見出しから回答を始めてください。 # Language Name, N bytes N提出物のサイズはどこですか。スコアを向上させる場合は、古いスコアを打ち消すことで見出しに残すことができます。例えば: # Ruby, <s>104</s> <s>101</s> 96 …

5
磁気彫刻…宇宙で!
バックグラウンド これは、私の以前の課題の続きです。その課題は、磁石を巨大な山に落として得られた彫刻の形状を計算することでした。 朗報です。エキセントリックなアーティストはあなたの作品が好きで、あなたのために別のプロジェクトを持っています。彼はまだ磁気彫刻を使用していますが、アートスタジオを宇宙に拡張することにしました。彼の現在の方法は、単一の立方体の磁石を軌道に爆破し、他の磁石を発射して巨大な磁気衛星を作成することです。 入力 入力は、0sと1sの有限リストであり、言語のネイティブリスト形式または文字列のいずれかで指定されます。作品の「青写真」として解釈され、左から右へと次のように処理されます。 2D平面の整数座標に浮かぶ単一の磁石から始め、指示に従って磁石を追加し続けます。ディレクティブ0は、彫刻全体を反時計回りに90度回転させます。ディレクティブの場合1、アーティストは彫刻の左端の列を見つけ、新しい磁石を下から発します。新しい磁石は、柱の一番下にある既存の磁石にくっついて、彫刻の一部になります。以前の課題とは異なり、磁石は隣接する列の他の磁石にくっつかないことに注意してください。その速度は今や天文学的です! 出力 アーティストは、完全な彫刻がガレージに収まるかどうかを知りたがっています(軌道から降ろす方法は不明のままです)。したがって、出力は彫刻の幅と高さであり、低いものから高いものへと並べられます。それらは、2要素のリスト、ペア、またはコンマで区切られた文字列として指定できます。 例 入力シーケンスを検討する [1,0,1,1,0,1,0,0,1,1] それを処理するには、空間に浮かぶ1つの磁石から始めます。 # 最初のディレクティブは1なので、下から新しい磁石を撃ちます: # # 次のディレクティブは0なので、彫刻を回転させます。 ## 次の2つのディレクティブは1,1です。つまり、2つの磁石を左端の列に向けて発射します。 ## # # 次に、再び回転させて、次のように1回撮影し0,1ます。 # ### # 最後に、2回回転して2回撃ちます。 # ### # # # 結果の彫刻には幅3と高さ4があるため、出力します[3,4]。 ルール 関数または完全なプログラムを与えることができます。最も低いバイト数が優先され、標準の抜け穴は許可されません。 テストケース [1,0,1] -> [2,2] [1,0,1,1,0,1,0,0,1,1] -> [3,4] [1,1,0,1,1,0,1,0,1,1] -> [4,5] [1,1,0,1,1,0,1,0,1,1,0] -> [4,5] [1,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1] -> …
8 code-golf  grid 

1
CSSセレクターの特異性を計算する
今日のタスクは、文字列を受け入れ、4つの整数を出力(または返す)するプログラム(または関数)を記述することです。 入力 入力文字列はCSS3セレクターであり、基本的に任意のUnicode文字を含めることができます。 出力 出力は、このセレクターのCSS固有性を表します。 最初の数値は常に0です(インラインスタイルに使用されるため、この演習はインラインスタイルには適用されません)。 2番目の数値は#foo、セレクターに存在するID()の数です。 3番目の数値は、セレクターに存在するクラス(.foo)、属性([bar])、および疑似クラスの数です。 4番目の数値は、セレクターに存在する要素(biz)と疑似要素の数です。 ノート: ユニバーサルセレクター(*)はどこにもカウントされません 疑似要素で::beforeあり::after、単一の ":"(レガシー表記)で記述することもできます 入力は:not(selector)疑似クラスを使用できます。内部のセレクターは、ID、クラス、要素などが含まれていてもカウントされません) セレクタの「レンガ」はコンビネータで区切られた(スペース/タブである+、>、~、例:body > div+a ~*)、彼らはまた、(EXを:累積することができますdiv#foo.bar[baz]:hover::before) また、CSSエスケープシーケンス(\1〜6桁の16進数、スペースが続く)、およびエスケープされた特殊文字(\これらのいずれかが続く!"#$%&'()*+,-./:;<=>?@[\]^`{|}~)も適切に処理する必要があります。これらのエスケープは、セレクター(id、クラスなど)の任意のブリックの一部にすることができます。 無効なセレクターまたはCSS4セレクターを受け取った場合は、特に何もする必要はありません。CSS3セレクターバリデーターを実装する気にしないでください。 CSSの詳細については、次のリンクをご覧ください。 CSS-tricksの記事:http : //css-tricks.com/specifics-on-css-specificity/ それを数えるツール(不完全):http : //specificity.keegan.st/ 例 //ユニバーサル * => 0,0,0,0 // ID #id => 0,1,0,0 //クラス .class => 0,0,1,0 //属性 [foo] => 0,0,1,0 [foo = "bar"] => 0,0,1,0 …
8 code-golf  css 

3
「カタツムリ」番号シーケンスの検索
整数NとM、1 <= N,M <= 10^6インデックスiとが与えられますj。あなたの仕事は位置で整数を見つけること[i][j]です。シーケンスは次のようになります(N=M=5, i=1, j=3結果は23): 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 最短のコードが勝ちます。幸運を!
8 code-golf 

3
`range(…)`のより短い代替案を探しています
私が取り組んでいるゴルフコードパズルについてこれまでに見つけた最良の解決策には、2つのかなり太っているような呼び出しがありrangeます。私はコードゴルフ、特にPythonが初めてなので、いくつかのヒントを使うことができます。 関連フラグメントはこれです [x for x in range(n+1,7**6)if`x`==`x`[::-1]*all(x%i for i in range(2,x))] 最初の上限はrange鋭いものではありません。それは少なくとも98690である必要があり、他のすべてが等しい場合(ゴルフの場合、つまり)、この上限と98690の差が小さいほど、パフォーマンスの点で優れています1。私が7 6(= 117649)を使用しているの7**6は、私が思いつくことができる最も短いPython式であり、それが法案に合うからです。 対照的に、range1つ目の下限と2つ目の下限はどちらもしっかりしています。IOW、これらの制限が変更されると、プログラム(現在の形式)は誤った結果を生成します。 式の一方または両方を短くする方法はありますか range(n+1,7**6) range(2,x) ? ところで、この場合range、たとえばへのエイリアスrは何も得ません: r=range;rr rangerange 編集:FWIW、完全なプログラムはこれです: p=lambda n:[x for x in range(n+1,7**6)if`x`==`x`[::-1]*all(x%i for i in range(2,x))][0] p(n)より大きい最小の回文素数である必要がありnます。また、p再帰的であってはなりません。警告:すでに卑猥に遅いです! 1はい、わかっています。コードゴルフではパフォーマンスは重要ではありませんが、それが私が「他のすべてが等しい(ゴルフに関しては)」と書いた理由です。たとえば、私が選択したのは7**6、すぐにはわかりませんが、パフォーマンスが低く、「ゴルフと同等の」代替手段9**9です。私は実際にコードゴルフの試行を実行するのが好きです。つまり、コードを実行するのに何年もかかるほどパフォーマンスが低下しないようにします。もちろん、私がそれを助けることができれば。

1
WinAli-アセンブリ言語を理解するための仮想CPU
WinAliは、Windows用のモデルアセンブラです。実際のCPUをエミュレートし、アセンブリ言語の学習と理解を支援することを目的としています。 ドイツ語のウィキペディアの記事:http : //de.wikipedia.org/wiki/WinAli(現時点では英語の記事はありません) 生成された出力をテストする場合:Googleドライブへのリンク(プログラム自体はドイツ語ですが、ドイツ語を理解していなくても簡単に使用できます) WinAliに関するいくつかの情報(データと構文) データ型: WinAliの唯一のデータ型は、実際にはSmallintまたはshortである2バイト長の「整数」です。したがって、正しい型を処理する必要はありません。これも分割時に丸められます。 変数と定数: 変数は、コマンドの後に次のように定義されます。 name DS F nameは明らかに変数の名前です DSは新しい変数のキーワードです Fは変数の長さをビット単位で定義します。これはゼロベースで16進数なので、F = 16ビット 定数は非常に似ています: name DC value nameは単に定数の名前です DCは新しい定数のキーワードです valueは、その定数に割り当てられた値です。two DC '2' コードの最後に定数を指定する必要はありません。LDA(load)操作でインラインに書き込むこともできますLDA 0,'2'。これにより、「0」がレジスター0(アキュムレーター)にロードされます。 構文: コードは、スペースまたはタブで区切られた4つの列に配置されます。 label command params comment labelはb labelコマンド(goto label)に使用され、しばしばスキップされます。 以下にリストされているコマンドのいずれかをコマンドします。 params 1つまたは2つのパラメータと少なくとも1つのレジスタ、必要に応じて別のレジスタ、変数、スタック、またはアドレス。これらのパラメーターはコンマ(,)で区切られます。 コメント(オプション)行末までの、;または*行末までのコメント。 小さなコード参照: コマンドは他にもありますが、この課題ではこれらのコマンドのみが必要です。 INI A 次のユーザー入力を変数に格納します A OUTI A変数Aが保持している値を出力します。なんらかの理由で、ここではレジスターを使用できません。 …

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