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

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

2
文脈自由文法でデータを圧縮する
人間のテキストやソースコードなど、ある種のデータを直線的な文法で圧縮することができます。基本的には、言語が1語のみの文法、つまり非圧縮データを作成します。このタスクでは、このデータ圧縮方法を実装するプログラムを作成する必要があります。 入力 入力は65535バイト以下の文字列です。入力が正規表現[!-~]+(つまり、空白を除いた少なくとも1つの印刷可能なASCII文字)に一致することが保証されています。 入力例は abcabcbcbcabcacacabcabab 出力 出力は、正確に1つの単語(入力)を記述する文法を形成する一連のルールです。各非終端記号は、9より大きい10進数で表されます。開始記号は記号番号10です。入力例に対応する出力例を以下に示します。その構文については、以下でさらに説明します。 10=11 11 12 12 11 13 13 11 14 14 11=a 12 12=b c 13=a c 14=a b 各ルールには<nonterminal>=<symbol> <symbol> ...、右側に任意の空白で区切られた数の記号が付いた形式があります。以下の制限に従い、入力文字列を正確に導出する各出力は有効です。 制限事項 人々が奇妙なことをするのを止めるために、いくつかの制限が行われています: 各非終端記号は、ルールの右側に少なくとも2回出現する必要があります。たとえば、abcabcルール12は1回しか出現しないため、次の入力の文法は無効です。 10=12 11=a b c 12=11 11 2つの隣接するシンボルのシーケンスは、重複しない限り、すべてのルールのすべての右側に複数回出現することはできません。たとえばabcabcbc、シーケンスbcが2回出現するため、次の入力の文法は無効です。 10=11 11 b c 11=a b c 有効な文法は次のとおりです。 10=11 11 12 11=a …

3
非可逆テキスト圧縮
バックグラウンド 1バイトが表すことができる256文字のうち、ほとんどの状況で使用されるのはこれらの文字のほんの一部です。どういうわけかこれを利用して、めったに使用されない文字の必要性を排除して、テキストファイルを小さくすることはできませんか? 多くの文字はほとんどの状況で値を追加せず、より一般的な文字に置き換えることができます。たとえば、小文字の「L」、大文字の「I」、および数値「1」はほとんどの状況でほとんど同じに見えるため、統合できます。 大文字はほとんど必要ないため、省略できます。解凍/表示プログラムは、すべての文、通称などの最初の文字を自動的に大文字にすることさえできます。 ルール エントリーは次の項目で審査されます。 圧縮比 解凍後の可読性 エントリは、この記事のプレーンテキストバージョン(http://en.wikipedia.org/wiki/Babbage)とランダムに選択されたBBCニュース記事に対してテストされます。 追加のマークが授与されます。マークアップを保持し、解凍後に美化します(つまり、文を大文字にするなど)。 言語 任意ですが、基本的な* nixボックスで簡単にコンパイル(または解釈)する必要があります。

3
圧縮して印象を与える
両方に触発挑戦「ユニークで安いです」によって@Laikoniスコアは挑戦そのものだけでなく、に基づいており、JavaScriptの(ES6)の回答の@ETHproductionsのための「回文圧縮」の挑戦彼はかなりクールを使用して、回文フラグ、大文字/小文字の表示、および文字の圧縮方法。 チャレンジ: 2つのプログラム/関数を作成します。圧縮プログラム/関数と解凍プログラム/関数です。 プログラム/関数の圧縮: 独自のソースコードで使用された文字(ソースコードの圧縮と解凍の両方)を可能な入力としてのみ与え、任意の種類のビット圧縮方法を使用して、この入力のビット圧縮の結果0のsと1sを出力します。 。 出力されるビット(0sおよび1s)の量は可能な限り短くする必要があり、この量が回答のスコアになります。 アイデアは、独自のソースコードで使用されるさまざまな種類の文字、プログラム/関数のサイズ、および使用したビット圧縮のタイプの間でバランスをとることです。または、このコメントで@RobertFraserを引用するには: これはエンジニアリングの基本の優れた例です。問題の説明を取り、それを解決するためのさまざまな方法について考え、要件間のトレードオフ(つまり、さまざまなスタイルに割り当てるビット数)を作成するなど チャレンジルール: 圧縮プログラムと解凍プログラム/関数は、同じプログラミング言語である必要があります。 入力はスコアになるため、圧縮と解凍の両方のプログラム/関数と、両方のプログラム/関数を組み合わせた(連結した)圧縮プログラムの出力の0sと1sの量を提供する必要があります。 圧縮は、明らかに、圧縮プログラムと解凍プログラム/関数の両方のソースコードで使用されているすべての文字に対して、任意の順序または量で機能する必要があります。(ソースコードにない文字については、未定義の動作をする可能性があります。) 入力タイプは必ずしも文字列である必要はありません。文字のリスト/配列/ストリームにすることもでき、プログラムの引数やSTDINなどにすることもできます。呼び出し。 同じことが出力にも当てはまります。関数から返すか、STDOUTに出力できます。単一の文字列、整数配列などにすることができます。 あなたの圧縮プログラムを出力しなければならない、少なくとも1 0か1(そう空のcat圧縮と解凍プログラムの両方のためのプログラムはできません)。 ソースコードには、0sと1sがすでに含まれているだけでなく、no-ops が含まれていない場合があります(デフォルトで独自のソースコードを出力するプログラミング言語では、圧縮プログラムと解凍プログラムの両方を単一0またはにでき1、no-ops部分は未使用のコメントでこの動作を防止するには、ソースコードとして0sと1s のみを使用する、申し訳ありませんがバイナリベースのプログラミング言語)。 プログラム/関数で使用される0以上の文字プールの入力をサポートする必要がありますが、空の入力をサポートする必要はありません。したがって、すべての入力が少なくとも1文字であると想定できます。 可能な入力は、圧縮サイズと解凍サイズの合計よりも大きくなる可能性があります。 何らかの理由で圧縮方法が順序に依存し、入力がのDecompressionProgramCompressionProgram代わりに出力が短い場合CompressionProgramDecompressionProgram、スコアのプログラム/関数のコンカッティングのいずれかの順序を選択できます。 例: 圧縮プログラムがABCであり、解凍プログラムがであるとしましょう123aBc。0個以上のcharacter-poolを含む入力の場合、123ABCabこれらの文字を0sおよび1s に正しく圧縮し、これら0のsおよび1sを正しい文字に解凍できる必要があります。これら2つのプログラムの有効な入力例は次のとおりABC123aBcです。A; 1Ca; 22222b1121221b; 等 一般的なルール: 回答には標準ルールが適用されるため、STDIN / STDOUT、関数/メソッド、適切なパラメーター、完全なプログラムを使用できます。あなたの電話。 デフォルトの抜け穴は禁止されています。 可能であれば、コードのテストを含むリンクを追加してください。 また、必要に応じて説明を追加してください。 答えの例: Java 8、スコア1440ビット、180(87 + 93)バイト ここでは、Java 8の非常に悪い実装で、各文字は単に8ビットのバイナリ文字列として出力されます。 圧縮機能: として提供される入力java.util.stream.IntStream。 s->s.forEach(c->System.out.print("".format("%8s",Long.toString(c,2)).replace(' ','0'))) オンラインでお試しください。 減圧機能: として提供される入力String。 …

2
最小のチェスゲームの圧縮
インスピレーション: 最小のチェス盤の圧縮に強く触発されて、私は類似しているが明らかに異なる競争をすることにしました。 tl; dr Chess_Games.txtファイルを取得し、できるだけ元のファイルに展開できるように圧縮します。 目的: チェスデータベース全体を開始位置から終了位置までエンコードおよびデコードするアルゴリズムを記述します エンコーディングは、すべてのゲームですべての位置を決定できる必要があります。 すべての作品の場所 誰の番ですか プレイヤーが両サイドでキャッスルできるかどうか。 プレイヤーがen-passantを実行できるかどうか、実行できる場合、どのポーンを実行できますか? 前職 さらに: 各ゲームには、誰が勝ったか、どのように終了したか(没収、抽選、チェックメイト、ステイルメイトなど)も含める必要があります。 入出力: 次のプロパティを満たす2つのアルゴリズムCompress / Expandが必要です。 Compressは、チェス記法による一連の動きを介してゲームのファイルを取り込み、圧縮ファイルを出力します Expandはその逆を行い、圧縮ファイルを取り込み、すべてのゲームが同じ順序で元のファイルを出力します 正確性:Expand(Compress(file))=すべての適切な形式のファイルのファイル 正しく形成されていない、またはチェスのルールに違反しているゲームはすべて悪いと見なされます。すべての悪いゲームはスキップされるかもしれません。 sen表記を解析できなければなりません。いくつかの例については、chessgames.comおよびhttps://database.lichess.org/を参照してください。 私は最初から10000ゲームのファイルをコンパイルした「2017年5月」にChess_Games.txt ファイルは次のようになります。 e4 d5 exd5 Nf6 d3 Qxd5 Nc3 Qf5 Be2 Bd7 g4 Qe6 g5 Nd5 Ne4 Bc6 Bg4 Qe5 f4 Qd4 Nf3 Qb6 Qe2 e6 …

16
平らな地球を旅する
平地の世界の座標は、緯度(x)と経度(y)で構成されます。これらは0〜9999の範囲の整数です。ガウス整数によく似ていますが、常に次の表記法を使用して記述されています。 411S 370E すなわちであり、SまたはN緯度に付加し、EまたはW2つのコンポーネント間の空間(S)と、経度に付加します。 ゴール 空白で区切られた2つの座標を読み取り、それらの合計を出力するプログラム(関数ではない)を記述します。最初の座標は開始点、2番目の座標は変位、出力は結果の位置です。 入出力 この課題は部分的にフォーマットに関するものであるため、入力形式と出力形式を明確に定義するようにします。 推奨される入力形式では、座標コンポーネント間に1つのスペースがあり、先行ゼロはなく、2つの座標間に改行文字があります。プログラムは、優先フォーマットを読み取ることができる必要があります。 出力には、任意の量の空白と先行ゼロを含めることができます。推奨される入力形式と異なる場合、プログラムはこの形式も読み取ることができる必要があります。 明確にするために、入力には追加の書式設定文字を含めることはできません(含めません)。必要なスペースと改行だけ。 得点 これは新しい勝利条件の実験です。数週間以内に回答を受け入れて、勝者を選びます。その後、より適切な回答が出た場合は、回答を変更します。 プログラムのスコアはそのバイト数です。優勝したプログラムは、400バイトより短く、バイト数が最も少ないプログラムですが、最も冗長なプログラミング言語で書かれています。勝者を決定するには: バイト数が400以上のプログラムを削除します(参加できますが、勝つことはできません)。 各プログラミング言語の最短プログラムのみを検討する 最長のプログラムの勝利 ポリグロットは、有効なすべての言語のプログラムと競合します(たとえば、プログラムが両方bashで有効である場合、sh両方の言語のプログラムと競合します)。 テストケース テストケースでは、最初の2行が入力で、3行目が出力です。 0S 0E 0S 0W 0N 0E (ゼロの方向は、入力と出力の両方で重要ではありません) 0S 9999E 9999N 9999W 9999N 0E (最大値) 42S 314W 42N 2718W 0N 3032W (ゼロの方向は出力では関係ありません) 5555N 8888W 7777S 0E 2222S 8888W (負の値はありません。符号を変更する必要がある場合は方向を変更してください) 0001N 4545W …
8 code-challenge  arithmetic  parsing  code-golf  interpreter  code-golf  random  classification  code-golf  ascii-art  code-golf  code-golf  string  number  array-manipulation  code-golf  math  rational-numbers  code-golf  internet  classification  code-golf  string  integer  code-golf  number  graphical-output  typography  king-of-the-hill  code-golf  number  sequence  palindrome  code-golf  math  code-golf  math  probability-theory  code-challenge  image-processing  test-battery  code-golf  number-theory  code-golf  tips  swift  code-golf  graphical-output  image-processing  color  code-golf  string  conversion  code-golf  string  array-manipulation  code-golf  encryption  king-of-the-hill  code-golf  string  ascii-art  code-golf  code-golf  string  compression  decision-problem  code-golf  ascii-art  number-theory  division  code-golf  ascii-art  code-golf  code-golf  number  array-manipulation  code-golf  ascii-art  code-golf  code-golf  string  code-golf  sequence  number-theory  code-golf  math  geometry  code-golf  combinatorics  code-golf  integer  code-golf  arithmetic  number-theory  code-golf  arithmetic  restricted-source  number-theory  restricted-complexity 

4
データを圧縮および解凍する2つのプログラムを作成する
チャレンジ: セミランダム文字列を圧縮するプログラムと、それを解凍する別のプログラムを作成します。質問は確かに2012年のこれと非常によく似ていますが、答えはおそらく非常に異なるため、これは重複ではないと主張します。 関数は、下部にある3つの制御文字列でテストする必要があります。 次のルールは両方のプログラムに適用されます。 入力文字列は、関数の引数またはユーザー入力として受け取ることができます。圧縮された文字列は、印刷するか、アクセス可能な変数に格納する必要があります。アクセス可能な手段は、プログラムの終了時に、それは印刷することができることを/使用して表示しdisp(str)、echo(str)あなたの言語で、または同等。 自動的に印刷されない場合は、結果を印刷するコマンドをプログラムの最後に追加する必要がありますが、バイトカウントには含まれません。結果が何であるかが明らかである限り、結果より多くを印刷しても問題ありません。したがって、たとえばMATLABでは、;末尾のを省略してもかまいません。 最新のラップトップでは、最大長の文字列の圧縮に2分もかかりません。減圧でも同じことが言えます。 何らかの理由で誰かがそれを実行したい場合、プログラムは異なる言語である可能性があります。 文字列: アルゴリズムの作成を支援するために、文字列がどのように構成されているかを次に説明します。 まず、いくつかの定義。すべてのリストとベクトルは、角かっこを使用してゼロインデックスが付けられます[]。括弧(n)は、n要素を含む文字列/ベクトルを作成するために使用されます。 c(1) = 1 random printable ascii-character (from 32-126, Space - Tilde) c(n) = n random printable ascii-characters in a string (array of chars ++) a*c(1) = 1 random printable ascii-character repeated a times r(1) = 1 random integer r(n) …

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 …

2
Rosetta Stoneチャレンジ:Run-Length Encoding v2.0
ロゼッタストーンチャレンジの目標は、できるだけ多くの言語でソリューションを作成することです。あなたのプログラミング多言語主義を自慢して見せてください! チャレンジ ランレングスエンコーディングを最初に実行しましたが、単一文字のランのみを考慮しました。もちろん、複数の文字の実行を考慮すると、さらに節約できる場合があります。 例を挙げましょうaaaxyzxyzxyzdddd。これはに圧縮できます3a3{xyz}4d。あなたの仕事は、大文字と小文字を区別する文字とスペースの文字列を与えられ、複数文字の実行に対してランレングスエンコーディングを使用して最適に圧縮する関数のプログラムを書くことです。 関数の引数STDINまたはARGVを介して入力を受け取り、結果を返すか、STDOUTに出力できます。 実行は入れ子にしてaaabbbaaabbbはいけません。したがって3a3b3a3b、ではなく 、でなければなりません2{3a3b}。つまり、文字列は1回のパスでエンコード(またはデコード)する必要があります。 最適な圧縮の結果 ランレングスエンコーディングの素朴なアプリケーションが次善の結果をもたらす可能性があるいくつかの例: abab 「圧縮」してはならない 2{ab} aaaabcdeabcde圧縮されてはならない4abcdeabcdeが、3a2{abcde}その代わり。 2つの最適なバージョン(例:aaand 2aまたはabcabcandおよび2{abc})がある場合、どちらの結果でも問題ありません。 例 Input Output aa aa -or- 2a aaaaaAAAAA 5a5A ababa ababa abababa a3{ba} -or- 3{ab}a foo foo bar 2{foo }bar aaaabcdeabcde 3a2{abcde} xYzxYz xYzxYz -or- 2{xYz} abcabcdefcdef abcab2{cdef} pppqqqpppqqq 3p3q3p3q pppqqqpppqqqpppqqq 3{pppqqq} 得点 各言語は、最短のエントリーを書ける人に関して個別のコンテストですが、全体的な勝者は、これらのサブコンペティションのほとんどを勝つ人です。これは、多くの珍しい言語で答える人が有利になることを意味します。コードゴルフは、言語に複数の解決策がある場合のタイブレーカーです。プログラムが最も短い人がその言語の功績を認められます。 同点の場合、勝者は2番目に多く送信された人(以下同様)になります。 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.