タグ付けされた質問 「compression」

任意のデータの圧縮または解凍に関連しています。単一の特定の入力の圧縮に関連する課題は、代わりにタグ付けする必要があります[kolmogorov-complexity]

23
Moby Dickを書きます
これは、ハーマンメルビルのMoby-Dickのテキストを含む1.2Mb ASCIIテキストファイルです。または、クジラ。あなたの仕事は、このファイルに一度に1文字ずつ与えられるプログラムまたは関数(またはクラスなど-以下を参照)を書くことであり、各ステップで次の文字を推測する必要があります。 これはコードチャレンジです。あなたのスコアは 2*L + E ここLで、送信のサイズはバイト単位で、E誤って推測した文字数です。最も低いスコアが勝ちます。 さらなる詳細 送信するのは、複数回呼び出されるか、呼び出されるか、データを送信するプログラムまたは関数(など)です。(正確には1215235回。)n 番目に呼び出されると、orのn 番目の文字が与えられ、(n + 1)番目の文字に対する推測を出力する必要があります。スコアの構成要素は、誤って推測した文字の総数です。whale.txtwhale2.txtE ほとんどの送信では、呼び出しと呼び出しの間に状態を保存する必要があります。これにより、呼び出し回数と以前の入力が何であったかを追跡できます。これを行うには、外部ファイルに書き込むstaticか、グローバル変数を使用するか、関数ではなくクラスを送信するか、状態モナドを使用するか、その他の言語で機能するものを使用します。送信には、最初の呼び出しの前に状態を初期化するために必要なコードを含める必要があります。 プログラムは決定的に実行する必要があるため、同じ入力が与えられると常に同じ推測が行われます(したがって、常に同じスコアが取得されます)。 回答には、提出物だけでなくE、スコアの一部を計算するために使用したコードも含める必要があります。これは提出物と同じ言語で書かれている必要はなく、そのバイト数にカウントされません。読みやすくすることをお勧めします。 提出物とこのスコア計算プログラムの間のインターフェースに関しては、プログラムが常に次の入力バイトを受け取る前に1バイトの出力を与える限り、何でも問題ありません。(たとえば、すべての入力を含む文字列を渡すだけで、すべての出力を含む文字列を取得することはできません。) 実際にテストプログラムを実行し、エントリを提出する前にスコアを計算/検証する必要があります。提出物のスコアが検証するには遅すぎる場合、原則としてそのスコアが何であるかを知っていても、競争する資格がありません。 Lスコアの構成要素は、コードゴルフチャレンジの通常のルールに従って計算されます。提出物に複数のファイルが含まれる場合は、その場合のスコアリングとディレクトリ構造に関する規則に注意してください。コードで使用するデータはすべてLスコアに含める必要があります。 あなたは、既存のライブラリをインポートすることがありますが、他の外部ファイルをロードしないかもしれない、とあなたのコードがアクセスすることはできませんwhale.txtかをwhale2.txt上記以外の方法でファイルします。事前学習済みのニューラルネットワークやその他の統計データのソースをロードすることはできません。(ニューラルネットワークを使用しても構いませんが、提出物に体重データを含めて、バイトカウントにカウントする必要があります。)何らかの理由で、言語またはライブラリにMoby Dickのテキストの一部またはすべてを提供する機能が含まれている場合、その機能を使用することはできません。それ以外に、言語またはその標準ライブラリの一部である限り、テキスト処理、予測、または圧縮に関連する機能を含む、他の任意の組み込み機能またはライブラリ機能を使用できます。統計データのソースを含む、よりエキゾチックで特殊なルーチンの場合、それらを自分で実装し、バイトカウントに含める必要があります。 一部の提出物には、それ自体がコードによって生成されるコンポーネントが含まれる可能性があります。その場合は、それらを生成するために使用されたコードを回答に含めて、その仕組みを説明してください。(このコードが送信を実行するために必要でない限り、バイトカウントには含まれません。) 歴史的な理由から、ファイルには2つのバージョンがあり、いずれかを回答に使用できます。ではwhale2.txt改行は段落の最後にのみ表示されますので(上記のリンク)テキストは、ラップされていません。オリジナルでwhale.txtは、テキストは74文字の幅に折り返されているため、各行の終わりとテキストを予測する必要があります。これは挑戦をより厄介にしますのでwhale2.txt、新しい答えのために推奨されます。両方のファイルは同じサイズで、1215236バイトです。 要約すると、すべての回答には次の事項を含める必要があります。 あなたの提出自体。(コードと、それが使用するデータファイル-大きい場合、これらはリンクになります。) コードの仕組みの説明。I / Oメソッドと、次の文字を予測する方法を説明してください。あなたのアルゴリズムの説明は重要であり、良い説明は私から賞金を得るでしょう。 スコアの評価に使用したコード。(これが以前の回答と同じ場合は、リンクするだけです。) 提出物の生成に使用したコードとそのコードの説明。これには、パラメーターの最適化、データファイルの生成などに使用したコードが含まれます(これはバイトカウントにはカウントされませんが、回答に含める必要があります)。 リーダーボード コードスニペットを表示 var QUESTION_ID=152856,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 …

30
Starry Nightを客観的に1 KBのコードでペイントする
注:Anders Kaseorgは、彼の素晴らしい答えに注意を引くために、今のところ受け入れられていますが、挑戦は決して終わっていません!組み込みの圧縮を使用せずにトップスコアを獲得したユーザーには、400ポイントの特典が引き続き提供されます。 以下は、386x320ゴッホの星空のPNG表現です。 目標は、このイメージを1024バイト以下のコードで可能な限り厳密に再現することです。この課題のために、画像の近さは、以下で説明するように、RGBピクセル値の差の2乗によって測定されます。 これはコードチャレンジです。スコアは、以下の検証スクリプトを使用して計算されます。最も低いスコアが勝ちます。 コードは次の制限に従う必要があります。 完全なプログラムでなければなりません 私のマシンで実行されている以下の検証スクリプトで読み取れる形式で画像を出力する必要があります。このスクリプトはPythonのPILライブラリを使用します。このライブラリは、png、jpg、bmpなど、さまざまなファイル形式をロードできます。 完全に自己完結型で、入力を受け付けず、ファイルをロードしない必要があります(ライブラリのインポートは許可されます) 言語またはライブラリにStarry Nightを出力する関数が含まれている場合、その関数を使用することはできません。 毎回同じ出力を生成し、確定的に実行する必要があります。 出力画像の寸法は 386x320 誤解を避けるために、有効な回答では、通常のPPCG規則に従ってプログラミング言語を使用する必要があります。画像ファイルだけでなく、画像を出力するプログラムでなければなりません。 一部の提出物自体がコードによって生成される可能性があります。その場合は、提出物の作成に使用したコードを回答に含めて、その仕組みを説明してください。上記の制限は、送信する1kBの画像生成プログラムにのみ適用されます。生成に使用されるコードには適用されません。 得点 スコアを計算するには、出力画像と上記のオリジナルを取得し、RGBピクセル値を0〜1の範囲の浮動小数点数に変換します。ピクセルのスコアはです(orig_r-img_r)^2 +(orig_g-img_g)^2 + (orig_b-img_b)^2。つまり、2つの画像間のRGB空間での二乗距離です。画像のスコアは、ピクセルのスコアの合計です。 以下は、この計算を実行するPythonスクリプトです。矛盾やあいまいさがある場合、最終的なスコアは、私のマシンで実行されているスクリプトによって計算されたものです。 スコアは出力画像に基づいて計算されるため、スコアに影響する非可逆形式を使用する場合に注意してください。 スコアが低いほど良い。元の星空の画像のスコアは0になります。同点という天文学的に考えられないイベントでは、最も投票数の多い答えが勝者を決定します。 ボーナスの目的 答えは組み込みの圧縮を使用したソリューションに支配されていたため、他の手法を使用した答えに一連の賞金を授与しました。次のポイントは、組み込みの圧縮を使用しない回答が全体的に上位になった場合に授与される、400ポイントの賞金になります。 以前に授与されたボーナス報奨金は次のとおりです。 nneonneoの回答には、その時点で組み込みの圧縮を使用しなかった最高得点の回答であるため、100ポイントの賞金が授与されました。授与された時点では4852.87ポイントでした。佳作は、使用してnneonneoビートに果敢な試み作ら2012rcampionに行く言及ボロノイテッセレーションに基づいたアプローチを、得点5076ポイント、およびそのSleafarに答えに同様の方法を用いて、5052ポイントで、終わり近くまでリードしていましたねねねね。 Strawdogのエントリーに対して200ポイントの賞金が授与されました。これは、非圧縮の回答の中で主導権を握り、1週間保持した最適化ベースの戦略であると評価されました。印象的な巧妙な方法を使用して、4749.88ポイントを獲得しました。 スコアリング/検証スクリプト 次のPythonスクリプトは、上記の画像(名前が付けられている必要がORIGINAL.pngあります)と同じフォルダーに配置し、のコマンドを使用して実行する必要がありますpython validate.py myImage.png。 from PIL import Image import sys orig = Image.open("ORIGINAL.png") img = Image.open(sys.argv[1]) if img.size != orig.size: print("NOT …

30
小さな「H」から「H」を作成する
チャレンジ 整数を指定するとsize、次のことを行う関数またはプログラムを作成します。 size1に等しい場合、出力 H H HHH H H 場合はsize1、出力よりも大きく、 X X XXX X X どこXのプログラム/関数の出力size - 1 (必要に応じて0、回答で指定する限り、ベースケースをに対応させることができます) 次の出力形式のいずれかが受け入れられますが、どちらがより便利です。 任意の二つの異なる文字に対応する必要な構造の文字列Hとspace 対応する任意の二つの別個の値を要求される構造を有する二次元アレイ、H及びspace 任意の二つの別個の値は、対応する各列における出力の一つの行と列/文字列のリスト、Hおよびspace 各行に一定量の先行スペースがある限り、先行スペースを使用できます。2つの異なる出力文字は、異なる限り、選択したものに依存します。 コードが返す出力形式を指定します。 テストケース 1 H H HHH H H 2 H H H H HHH HHH H H H H H HH HH H HHHHHHHHH H HH HH …
73 code-golf  ascii-art  fractal  code-golf  code-golf  string  code-golf  string  matrix  code-golf  graph-theory  maze  binary-matrix  code-golf  kolmogorov-complexity  random  code-challenge  metagolf  test-battery  brain-flak  text-processing  code-golf  matrix  code-golf  number-theory  primes  code-golf  string  matrix  code-golf  binary  bitwise  code-golf  number  factorial  floating-point  code-golf  number  sequence  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-golf  string  code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

10
画像をツイートにエンコードする(Extreme Image Compression Edition)[終了]
Stack Overflow での非常に成功したTwitterイメージエンコーディングの課題に基づいています。 画像が1000ワードの価値がある場合、114.97バイトにどれくらいの画像を収めることができますか? 印刷可能なASCIIテキストのみを含む標準のTwitterコメントに画像を圧縮する汎用的な方法を思い付くように挑戦します。 ルール: 画像を取得し、エンコードされたテキストを出力できるプログラムを作成する必要があります。 プログラムによって作成されるテキストの長さは最大140文字で、コードポイントが32〜126の範囲の文字のみを含む必要があります。 エンコードされたテキストを取り、デコードされた写真を出力できるプログラム(おそらく同じプログラム)を作成する必要があります。 プログラムは外部ライブラリとファイルを使用できますが、インターネット接続や他のコンピューターへの接続は必要ありません。 デコード処理では、元の画像にアクセスしたり、元の画像を含めたりすることはできません。 プログラムは、ビットマップ、JPEG、GIF、TIFF、PNGの少なくとも1つの形式(必ずしもそれ以上ではない)の画像を受け入れる必要があります。サンプルイメージの一部またはすべてが正しい形式でない場合は、プログラムで圧縮する前に自分で変換できます。 判断: これはやや主観的な挑戦なので、勝者は(最終的に)私によって判断されます。重要性を減らすために、以下にリストするいくつかの重要な要因に判断を集中します。 サンプル画像としてリストされていないものを含む、さまざまな画像を圧縮する合理的な仕事をする能力 画像の主要な要素の輪郭を保持する機能 画像内の主要な要素の色を圧縮する機能 画像の細部の輪郭と色を保持する機能 圧縮時間。画像の圧縮率ほど重要ではありませんが、同じことを行う遅いプログラムよりも速いプログラムの方が優れています。 提出には、生成されたTwitterコメントとともに、解凍後の結果の画像を含める必要があります。可能であれば、ソースコードへのリンクを提供することもできます。 サンプル画像: ヒンデンブルク、 山岳風景、 モナリザ、 2Dシェイプ

10
リトルチャンドラーは悲しい。彼を元気づけるために彼に雲を引きます
リトルチャンドラーは悲しい。彼を元気づけるために彼に雲を引きます。 注:クラウドを描画しても、実際に彼を元気づけることはありません。 円は、3組として定義できます。(x,y,r)ここxで、デカルト平面上の円のx位置、デカルト平面上の円yのy位置、およびr円の半径です。xそしてy負でもよいです。r常にポジティブです。入力は、スペースで区切られた3タプルの形式の円のリストです。例えば: 3,1,1 3,2,1.5 1,2,0.7 0.9,1.2,1.2 1,0,0.8 3,1,1手段「に中心点を有する円3,11つの半径を有する。3,2,1.5手段」に中心点を有する円3,21.5半径を有します。 入力のこれらの円をすべてグラフに描画すると、次のようになります(わかりやすくするためにグリッド線とラベルを含めましたが、これらは必須ではありません)。 すべての円が凝集していることに注目してください。つまり、それらはすべて互いに重なり合っており、1つの大きなグループを形成し、残りの部分から分離された小さな円のグループはありません。入力は凝集性が保証されています。 ここで、これらの円によって形成される「境界線」の周りを移動する線を描き、他の線は一切ないとします。これは、すべての円によって形成されるシルエットの境界線を描くようなものです。結果のクラウドは次のようになります。 そのため、このクラウドは、境界を形成する入力内の円の円弧のみを描画することで形成され、単一の形状になります。言い換えると、クラウドは、別の円内にないアークを描くことによって形成されます。プログラムは、上記で説明した形式で入力を受け取り、結果のクラウドを表示する画像を出力します。雲の全体的な形状は正確でなければなりませんが、スケール、色、線の太さ、頂点の見え方はあなた次第です。クラウドが表示されている必要があるため、「このプログラムは白い背景に白い雲を描画する」、「このプログラムは無限に小さなスケールで雲を描画する」、「このプログラムは0の雲を描画する」また、境界線の色は塗りつぶしまたは背景の色と異なる必要があることに注意してください。 もう一つの例。入力: 1,4,2 5,2,1 3,1,1 3.5,2,1.2 3,3,0.7 1,2,0.7 出力: クラウドに「穴」がある場合は、穴も描画する必要があります。入力: 0,5,4 3,4,4 4,3,4 5,0,4 4,-3,4 3,-4,4 0,-5,4 -3,-4,4 -4,-3,4 -5,0,4 -4,3,4 -3,4,4 出力: 重要なルールは次のとおりです。プログラムは境界を形成する線のみを描画する必要があります。つまり、単純に円を完全に描画してから、白い塗りでわずかに小さい円を描画することはできません。このメソッドはまだ境界を形成しない線を描画するため、後でそれらを覆うだけです。ルールの目的は、「円を描いてから、白い塗りで円をもう一度描く」実装、またはそれに類似したものを防ぐことでした。答えは、実際に描画する前に描画する場所を実際に計算することです。 これはコードゴルフであるため、最短の文字数が優先されます。

30
アイデンティティマトリックスの構築
課題は非常に簡単です。入力が整数のn場合、n x n単位行列を出力します。単位行列は、1sが左上から右下に及ぶものです。作成した単位行列を返すまたは出力するプログラムまたは関数を作成します。出力は、2D配列、またはスペース/タブと改行で区切られた数値です。 入出力の例 1: [[1]] 2: [[1, 0], [0, 1]] 3: [[1, 0, 0], [0, 1, 0], [0, 0, 1]] 4: [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] 5: [[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, …

16
最小のチェスボード圧縮
チェス盤をエンコードおよびデコードできるアルゴリズムまたはプログラムを作成します。目標は、そのターンでのプレーヤーのすべての動きの可能性を判断するために使用できる(一度デコードされた)チェス盤の最小の表現を作成することです。 エンコードは以下を表示できる必要があります。 誰の番です。 プレイヤーが両サイドでキャッスルできるかどうか。 プレイヤーが同乗者を演じることができるかどうか、もしそうなら、どのポーンですか? すべてのピースの位置。 キャスリングに関する重要な注意事項:白が王を1ターン動かし、次に次の王を戻す場合、その後、どちらの側でもキャッスルできないことは明らかでなければなりません。彼らが左または右のルークを動かした場合も同様です。ボードは視覚的には2ターン前と同じ状態ですが、ゲームの状態は変化しています。詳細はこちら:http : //en.wikipedia.org/wiki/Chess#Castling en-passantについての重要な注意:これはターンセンシティブな動きでもあります。詳細については、ルールをご覧ください。http://en.wikipedia.org/wiki/Chess#En_passant 必要に応じて入力と出力を決定します。それを最も圧縮できる人への主要な小道具! あなたのスコアは最悪のシナリオで決定されます-ビットの最大可能サイズ。その数をどのように計算したか、何を計上したかを必ず示してください。最小の最悪の場合を撃ちます!

9
テキストの圧縮と解凍—「Nevermore」。
コードゴルフでの圧縮ツールの使用に関する最近の議論で、独自のテキストコンプレッサーとデコンプレッサーを作成することは素晴らしい挑戦になると思いました。 チャレンジ: 2つのプログラムを作成します。1つはASCIIテキストをバイトシーケンスに圧縮し、もう1つは圧縮解除します。プログラムは同じ言語である必要はありません。 最初のプログラムは、ASCIIファイルを(ファイルから、または標準入力から、または言語にとって最も自然なメカニズムを使用して)読み取り、その圧縮バージョンを出力する必要があります。(圧縮された出力は、任意のバイトで構成されている場合があります。読み取り可能である必要はありません。)2番目のプログラムは、最初の出力を読み取り、元の入力テキストを再作成します。 得点: ソリューションのスコアは、次の3つのカウントの合計になります。 圧縮プログラムの長さ(文字数)。 以下のテスト入力が与えられた場合の、コンプレッサーの出力の長さ(バイト単位)。 圧縮解除プログラム(圧縮器と異なる場合)の長さ(文字数)。 3つのカウントすべてとその合計を回答に書き留めてください。これはコードゴルフであるため、スコアが低いほど優れています。 ルールと制限: 選択した言語にバンドルされている場合でも、既存の圧縮または解凍ツールまたはライブラリを使用することはできません。特定のツールまたは機能が許可されているかどうか疑問がある場合は、お問い合わせください。 圧縮プログラムは、タブ(ASCII 9)および改行(ASCII 10)を含む印刷可能なASCIIテキストで構成される入力を処理できる必要があります。任意のUnicodeおよび/またはバイナリ入力を処理できますが、必須ではありません。 圧縮解除プログラムは、入力として圧縮器に与えられたものとまったく同じ出力を生成する必要があります。特に、入力に末尾の改行が含まれていない場合は、末尾の改行を出力しないように注意してください。(以下のテスト入力には末尾の改行があるため、これを個別にテストする必要があります。GolfScriptのヒント:'':n。) 圧縮プログラムと圧縮解除プログラムは同じプログラムである場合があります(コマンドラインスイッチなどで適切なモードが選択されている場合)。その場合、その長さは一度だけカウントされます。 プログラムの速度が極端に遅くなったり、メモリを大量に消費することはありません。あまり新しくないデスクトップ(2.2GHz AMD Athlon64 X2)でテスト入力を圧縮または解凍するのに1分以上かかる場合、または1ギガバイトを超えるRAMを消費する場合、ソリューションを無効と判断します。これらの制限は意図的に緩いものです。プッシュしないようにしてください。(以下の修正を参照してください。これらの制限内で少なくとも100 kBの入力を処理できる必要があります。) スコアリングにはテスト入力のみが重要ですが、少なくとも任意の入力テキストを圧縮するよう努力する必要があります。テスト入力に対してのみ適切な圧縮率を達成するソリューションは、技術的には有効ですが、私からは賛成を得られません。 圧縮プログラムと圧縮解除プログラムは自己完結型である必要があります。特に、選択した言語の標準ランタイム環境の一部ではないファイルまたはネットワークリソースを読み取ることができることに依存している場合、そのファイルまたはリソースの長さは、プログラムの長さの一部としてカウントする必要があります。(これは、入力をWeb上のファイルと比較し、一致する場合は0バイトを出力する「コンプレッサー」を許可しないためです。申し訳ありませんが、これは新しいトリックではありません。) 修正と説明: コンプレッサーは、妥当な時間とメモリ使用量(最大1分、1 GBのメモリ)内で、少なくとも100 kBの典型的な英語テキストで構成されるファイルを処理できる必要があります。圧縮解除プログラムは、結果の出力を同じ制限内で圧縮解除できる必要があります。もちろん、それよりも長いファイルを処理できるということは完全にすばらしいことであり、賞賛に値します。長い入力ファイルをチャンクに分割して個別に圧縮したり、他の手段を使用して圧縮効率と長い入力の速度を犠牲にしたりしてもかまいません。 圧縮解除プログラムが出力で同じ改行表現を使用している限り、圧縮プログラムでは、優先プラットフォームのネイティブ改行表現(LF、CR + LF、CRなど)を使用して入力を指定する必要があります。もちろん、コンプレッサーが元の入力と同じ種類の改行を出力する限り、コンプレッサーがあらゆる種類の改行(またはプラットフォームに関係なくUnixの改行のみ)を受け入れることも問題ありません。 テスト入力: 回答の圧縮効率を判断するために、次のテスト入力(エドガーアランポーによるレイヴン、Project Gutenberg提供)が使用されます。 Once upon a midnight dreary, while I pondered, weak and weary, Over many a quaint and …

2
ミュージカルツイートチャレンジ
これはTwitter画像エンコーディングチャレンジのオーディオバージョンです。 140バイト以下の印刷可能なUTF-8エンコードテキストで少なくとも1分間の音楽を表現できるオーディオ圧縮形式を設計します。 次の3つの引数(プログラム自体の名前の後)をとるコマンドラインプログラムを記述して実装します。 文字列encodeまたはdecode。 入力ファイル名。 出力ファイル名。 (お好みのプログラミング言語にコマンドライン引数を使用する機能がない場合は、別のアプローチを使用できますが、回答で説明する必要があります。) encode操作は、あなたの圧縮された「つぶやき」のフォーマットにあなたの選択したオーディオ形式から変換します、そしてdecode操作があなたの「つぶやき」形式から元のオーディオ形式に変換します。(もちろん、非可逆圧縮を実装することが期待されているため、出力ファイルは入力と同一である必要はなく、同じ形式である必要があります。) 答えに含めてください: プログラムのソースコード。(このページに対して長すぎる場合は、別の場所でホストし、リンクを投稿できます。) 仕組みの説明。 元のオーディオファイルへのリンク、圧縮先の「ツイート」テキスト、およびツイートをデコードして取得したオーディオファイルを含む少なくとも1つの例。(Answererは著作権の「公正使用」アサーションに対して責任があります。) ルール 私はいつでもコンテストルールの抜け穴を塞ぐ権利を有します。 [4月24日編集]encode関数の入力(および関数の出力decode)には、次のような合理的な一般的なオーディオ形式を使用できます。 WAVのような非圧縮波形。 MP3のような圧縮された波形。 MIDIのような「シートミュージック」スタイル。 圧縮された「ツイート」形式では、実際に入力ファイルのサウンドをエンコードする必要があります。したがって、次のタイプの出力はカウントされません。 実際の出力が保存される場所を示すURIまたはファイルパス。 実際の出力がblobとして保存されるデータベーステーブルへのキー。 同様のもの。 プログラムは、一般的な音楽ファイルを圧縮するように設計する必要があります。したがって、特定のサンプルソングに明白に結びついているようなことはしないでください。たとえば、「Twinkle、Twinkle、Little Star」をデモンストレーションしている場合、圧縮ルーチンはシーケンスdo-do-so-so-la-la-soの特定のシンボルをハードコーディングしないでください。 あなたのプログラムの出力は、実際にTwitterを通り抜けて無傷で出てくるはずです。サポートされている正確な文字のリストはありませんが、文字、数字、記号、句読点に固執しようとしています。制御文字、文字、BIDIマーカー、またはその他の奇妙なものを組み合わせないようにします。 複数のエントリを提出できます。 判定基準 これは人気コンテストです(つまり、ほとんどの正味の賛成票が勝ちます)が、有権者は次のことを考慮するよう促されます。 正確さ 圧縮された後でも曲を認識できますか? それはいいですね? どの楽器が演奏されているかをまだ認識できますか? それでも歌詞を認識できますか?(これはおそらく不可能ですが、誰かがそれを成し遂げたら印象的です。) 複雑 ここで例の歌の選択が重要です。 [4月24日追加]この課題は、MIDIまたは同様のフォーマットで最も簡単になります。ただし、波形タイプのフォーマットで動作させるために余分な努力を払う場合、それは余分な信用に値します。 構造は何ですか?もちろん、同じ4つの測定を任意の回数繰り返すだけで、1分間の要件を満たすことができます。しかし、より複雑な歌の構造はより多くのポイントに値します。 このフォーマットは、一度に再生される多くのノートを処理できますか? コード できるだけ短く簡潔にします。ただし、これはコードゴルフではないため、文字数よりも読みやすさが重要です。 結果の品質の向上によって正当化される限り、巧妙で複雑なアルゴリズムでも問題ありません。

19
ブラケット拡張!
あなたの挑戦は、示されているようにプログラムの入力でいくつかの括弧を拡張することです: 2つの一致する角かっことの間の文字列sを見つけます。閉じ角かっこの後に1桁のnが付きます。[] ブラケットを取り外します。 sをそれ自体でn回繰り返して置き換えます。(nが0の場合、単にsを削除します。) 入力に一致する括弧がなくなるまで手順1に進みます。 追加の規則と説明: 入力を受け取り、許可された手段で出力を行います。 出力の末尾の改行が許可されます。 入力で印刷可能なASCIIのみを処理する必要があります。 すべての括弧が一致する、つまり、入力[]]]]またはを受け取らないことを前提とする場合があります[[[[]。 各閉じ括弧の]後に数字があると仮定できます。 テストケース: Input -> Output [Foo[Bar]3]2 -> FooBarBarBarFooBarBarBar [one]1[two]2[three]3 -> onetwotwothreethreethree [three[two[one]1]2]3 -> threetwoonetwoonethreetwoonetwoonethreetwoonetwoone [!@#[$%^[&*(]2]2]2 -> !@#$%^&*(&*($%^&*(&*(!@#$%^&*(&*($%^&*(&*( [[foo bar baz]1]1 -> foo bar baz [only once]12 -> only once2 [only twice]23456789 -> only twiceonly twice3456789 [remove me!]0 -> before [in …

9
モンスターを認識させてください
バックグラウンド コンピューターゲームNetHackは、コンピューターゲームでのグラフィックスの使用が広く確立される前の1987年に遡ります。ゲームにはたくさんのモンスターがいて、一度に画面に収まる必要がある可能性があるため、モンスターは非常に最小限の方法で描かれます。モンスターは単にASCII文字として画面に描かれます。 たくさんのモンスターがあることに加えて、たくさんの種類のモンスターがあります。どちらがどれであるかを知ることは重要です。子猫とドラゴンを見たとき、あなたは異なる反応をしなければなりません。そのため、ASCIIのほとんどはモンスターを表すために使用されます。たとえば、子猫はfで、赤いドラゴンはDです。つまり、特定のモンスターがどのように見えるかを知ることは、ゲームの後半で遭遇した場合にそれを認識するのに役立つため、非常に役立つことがあります。(ASCII文字よりも多くの種類のモンスターがあるので、それらのいくつかは共有していることに注意してください;赤いドラゴンと青いドラゴンは両方Dです。) 仕事 プログラムは、入力としてNetHackモンスターの名前を取り、ゲーム内でそれを表すASCII文字を出力として生成する必要があります。プログラムは、入力が実際にはNetHackモンスターの名前であると想定できます。入力が無効な場合、クラッシュしたい場合、意味のない結果を生成する場合などがあります。 次のStack Snippetは、可能な入力を対応する出力に完全にマッピングするJSONオブジェクトです。 コードスニペットを表示 { "Aleax": "A", "Angel": "A", "Arch Priest": "@", "Archon": "A", "Ashikaga Takauji": "@", "Asmodeus": "&", "Baalzebub": "&", "Chromatic Dragon": "D", "Croesus": "@", "Cyclops": "H", "Dark One": "@", "Death": "&", "Demogorgon": "&", "Dispater": "&", "Elvenking": "@", "Famine": "&", "Geryon": "&", "Grand Master": "@", …

14
数独圧縮
あなたの仕事は、次のような言語でプログラム(または2つの別個のプログラム)を書くことです。 完成した数独ボードを入力(任意の論理形式)として受け取り、文字列に圧縮できます。 圧縮された文字列を入力として使用し、解凍してまったく同じ完成した数独ボードを取得できます(9行の論理形式で出力) 注:数独のルールを活用してください。それがこの挑戦の背後にある考え方です。 ウィキペディアの数独ルール ルール 圧縮出力では、印刷可能なASCII文字(32-126)のみが許可されます(マルチバイト文字なしなど)。 入力は有効な3x3数独ボード(通常のルール、バリエーションなし)であると想定できます。 私は時間制限を課しませんが、ブルートフォースアルゴリズムを作成しません。または、投稿者は投稿する前に投稿をテストできる必要があります(Jan Dvorakに感謝)。 質問や懸念がある場合は、説明を求めたり、コメントで提案を行ったりできます。 勝利条件 スコア= 10個すべてのテストケースの文字数の合計 最低スコアが勝ちます。 テストケース これらを使用して、プログラムの動作をテストできます。 9 7 3 5 8 1 4 2 6 5 2 6 4 7 3 1 9 8 1 8 4 2 9 6 7 5 3 2 4 7 8 6 5 …

24
この番号はレーシアンですか?
正の整数kは、次の場合、レーシアン数です。 ki*i + j*j + i*jfor i、j整数として表現できます。 たとえば、最初の正のロジアン数は次のとおりです。1(i=1、j=0); 3(i=j=1); 4(i=2、j=0); 7(i=2、j=1); 9(i=-3、j=3); ... は、特定のに対して一意ではないことiに注意してください。例えば、も用いて生成することができます、。jk9i=3j=0 これらの数値の他の同等の特性は次のとおりです。 k表すことができるi*i + j*j + i*jためi、j負でない整数。(整数の各ペアについてi、j同じを与える非負整数のペアがありますk) k六角形のグリッド上でテッセレーションを形成する一連の連続した六角形があります(k = 4およびの図を参照k = 7)。(この特性のため、これらの数値はモバイルセルラー通信ネットワークに適用されます。) シーケンスのOEISページでその他の特性を参照してください。 チャレンジ 正の整数が与えられた場合、それがレーシアン数であれば真の結果を出力し、そうでなければ偽の結果を出力します。 プログラムまたは関数は1000、データ型の制限まで、または1分未満で入力を処理する必要があります。 コードゴルフ。最短勝。 テストケース 次の数値は、真の結果を出力するはずです。 1, 4, 7, 12, 13, 108, 109, 192, 516, 999 次の数値は偽の結果を出力するはずです。 2, 5, 10, 42, 101, 102, 128, …
33 code-golf  math  number  number-theory  decision-problem  code-golf  kolmogorov-complexity  code-golf  sequence  code-golf  path-finding  chess  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  math  arithmetic  code-golf  code-golf  number  code-golf  geometry  code-golf  math  code-golf  code-golf  kolmogorov-complexity  alphabet  code-golf  regular-expression  hexagonal-grid  king-of-the-hill  path-finding  java  code-golf  string  sorting  code-golf  string  grid  code-challenge  compression  code-golf  random  code-golf  sequence  arithmetic  code-golf  number  grid  tiling  code-golf  tips  code-golf  sequence  number-theory  recursion  code-golf  string  grid  code-golf  math  number  combinatorics  permutations  string  code-challenge  code-golf  sequence  number-theory  subsequence 

29
プレフィックスコードですか?
情報理論では、「プレフィックスコード」とは、どのキーも別のキーのプレフィックスではない辞書です。言い換えれば、これは、文字列が他の文字列で始まらないことを意味します。 たとえば、{"9", "55"}はプレフィックスコードですが、そうで{"5", "9", "55"}はありません。 これの最大の利点は、エンコードされたテキストを区切り文字なしで書き留めることができ、一意に解読できることです。これは、常に最適なプレフィックスコードを生成するHuffmanコーディングなどの圧縮アルゴリズムに現れます。 タスクは簡単です。文字列のリストが与えられたら、それが有効なプレフィックスコードかどうかを判断します。 あなたの入力: 妥当な形式の文字列のリストになります。 印刷可能なASCII文字列のみが含まれます。 空の文字列は含まれません。 出力は、真/偽の値になります。有効なプレフィックスコードの場合はTruthy、そうでない場合はfalseyです。 真のテストケースを次に示します。 ["Hello", "World"] ["Code", "Golf", "Is", "Cool"] ["1", "2", "3", "4", "5"] ["This", "test", "case", "is", "true"] ["111", "010", "000", "1101", "1010", "1000", "0111", "0010", "1011", "0110", "11001", "00110", "10011", "11000", "00111", "10010"] いくつかの誤ったテストケースを次に示します。 ["4", "42"] ["1", "2", …

8
ラテン方陣圧縮
ラテン方陣は、行または列には繰り返しのシンボルを持っていない正方形であります:。 13420 21304 32041 04213 40132 そして、多くの数独プレイヤーが知っているように、残りの数字を推測するためにすべての数字が必要なわけではありません。 あなたの課題は、ラテン方陣をできるだけ少ないバイトに圧縮することです。 圧縮/解凍する1つまたは2つのプログラムを提供する必要があります。 さまざまな情報: 使用される数値は常にになります0..N-1。ここNで、は正方形のエッジの長さです。N<=25 解凍時には、ラテン方格は入力と同一でなければなりません。 あなたのプログラム(複数可)(デ)圧縮することができる必要があります任意の(最大の正方形サイズ以内)ラテン方陣、私が提供してきたものだけでなく。圧縮率も同様である必要があります。 実際に圧縮および解凍プログラムを実行してスコアを取得する必要があります(エンドオブユニバースランタイムはありません) テストケースはgithubにあります。 スコアは、圧縮されたテストケースの合計サイズです。 編集:7月7日20:07の時点で、テストケースを更新しました(生成の問題を修正するため)。新しいテストケースでプログラムを再実行してください。Anders Kaseorgに 感謝します。

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