লসী পাঠ্য সংক্ষেপণ


9

পটভূমি

বাইট উপস্থাপন করতে পারে এমন 256 টি সম্ভাব্য অক্ষরের মধ্যে, এর মধ্যে কয়েকটি কয়েকটি বেশিরভাগ পরিস্থিতিতেই ব্যবহৃত হয়। আমরা কি কোনওভাবেই এর সুবিধা নিতে পারি না, এবং খুব কমই ব্যবহৃত অক্ষরের প্রয়োজনীয়তা বাদ দিয়ে আমাদের পাঠ্য ফাইলগুলিকে আরও ছোট করে তুলতে পারি?

অনেকগুলি অক্ষর বেশিরভাগ পরিস্থিতিতে কোনও মান যোগ করে না এবং আরও সাধারণ অক্ষর দ্বারা প্রতিস্থাপন করা যায়। উদাহরণস্বরূপ, লোয়ার-কেস "এল", মূলধন "I" এবং "1" সংখ্যাটি বেশিরভাগ পরিস্থিতিতে প্রায় অভিন্ন দেখায়, তাই তাদের একীভূত করা যায়।

বড় হাতের অক্ষরের জন্য খুব সামান্য প্রয়োজন আছে, তাই এগুলি দিয়ে পাঠানো যায়। ডিকম্প্রেশন / ডিসপ্লে প্রোগ্রাম এমনকি প্রতিটি বাক্য, সাধারণ নাম ইত্যাদির প্রথম অক্ষরটি স্বয়ংক্রিয়ভাবে মূলধন করতে পারে

বিধি

এন্ট্রি বিচার করা হবে:

  • তুলনামূলক অনুপাত
  • ডি-সংক্ষেপণের পরে পঠনযোগ্যতা

এই নিবন্ধটির সরল পাঠ্য সংস্করণ: http://en.wikedia.org/wiki/Babbage এবং এলোমেলোভাবে নির্বাচিত বিবিসি নিউজ নিবন্ধের বিরুদ্ধে এন্ট্রিগুলি পরীক্ষা করা হবে ।

অতিরিক্ত নম্বর প্রদান করা হবে; যে কোনও মার্ক-আপ সংরক্ষণ করা, ডি-সংক্ষেপণের পরে সুন্দরীকরণ (অর্থাত্ মূলধন বাক্য ইত্যাদি)।

ভাষাসমূহ

  • আপনার পছন্দ মতো যে কোনও তবে অবশ্যই একটি বেসিক * নিক্স বাক্সে সহজেই সংকলন করতে হবে (বা ব্যাখ্যা করতে হবে)।

তাহলে পাওয়ারশেল বাইরে? হতাশাজনক।
জোয়

1
হাস্কেল:main = interact (\x -> take 90 x ++ " yada yada yada")
জোয়ে অ্যাডামস

1
আরও মনে রাখবেন যে "ডিকম্প্রেশনের পরে পঠনযোগ্যতা" মোটামুটি বিষয়গত মানদণ্ড।
জোয়

বিশেষত একটি ইউনিক্স-বাক্সে, আমাদের পার্থক্যটি বড় হাতের অক্ষর, লোয়ার কেস প্রয়োজন। :) এবং একটি প্রেরিত শুরুর সন্ধান। তুচ্ছ নয়, যদি তুমি হয়। সংক্ষিপ্ত ব্যবহার করে! :)
ব্যবহারকারী অজানা

আমরা কি বর্ণমালা বা পাঠ্য সংক্ষিপ্ত করতে চাই? :) এল = এল = 1 আমাদের চিন্তাগুলি উপস্থাপনের জন্য প্রয়োজনীয় অক্ষরগুলি সংকুচিত করে। তবে "একটি আপেল" = "1 এপিএল" পাঠ্যকে সংকুচিত করে।
anemgyenge

উত্তর:


11

পার্ল

খুব অদক্ষ এবং খারাপ হার রয়েছে। প্রয়োজন /usr/share/dict/words

সংকোচকারী

#!/usr/bin/perl

$M = 2;
$N = 1;
$Min = 3;
$Max = 8;

while (<>) {
  for (split /\s+/) {
    s/[^a-z]//i;
    ($p) = m/([^a-z]*)$/;
    $_ = lc $_;
    $l = (length $_) - (length $p);
    s/^and$/A/;
    s/^he$/H/;
    s/^in$/I/;
    s/^of$/O/;
    s/^you$/U/;
    s/^the$/Z/;
    if (length $_ >= $Min) {
      if (length $_ <= $Max) {
        s/ed/D/g;
        s/ing\b/N/g;
        s/er/R/g;
        s/'s/S/g;
        s/th/T/g;
        s/[aeo]{1,2}//g;
        $_ .= $l;
      } else {
        s/^(.{$M})(.+)(\w{$N})$/$1.(length$2).$3/e;
      }
    }
    $a .= $_ . $p . ' ';
  }
}
print $a;

Decompressor

#!/usr/bin/perl

$M = 2;
$N = 1;

open D, '/usr/share/dict/words';
chomp, push @W, $_ while <D>;
close D;

while (<>) {
  for (split /\s+/) {
    ($_, $p) = m/^(.+)([^a-z]*)$/;
    s/^A$/and/;
    s/^H$/he/;
    s/^I$/in/;
    s/^O$/of/;
    s/^U$/you/;
    s/^Z$/the/;
    if ($_ =~ m/^(\w{$M})(\d+)(\w{$N})$/) {
      $r = '^' . quotemeta($1) . ('\w' x $2) . quotemeta($3) . '$';
      ($_) = (grep /$r/, @W);
      $_ .= $4;
    } else {
      ($_, $l) = m/^(.+)(\d+)$/;
      s/D/ed/g;
      s/N/ing/g;
      s/R/er/g;
      s/S/'s/g;
      s/T/th/g;
      $r = '[aeo]{0,2}';
      for $y(split //) { $r .= (quotemeta $y) . '[aiueo]{0,2}' }
      ($_) = (grep /^(?=[a-z]{$l})$r$/, @W);
    }
    $a .= $_ . $p . ' ';
  }
}
print $a;

3

পার্ল, 0 টি অক্ষর

অনন্তের সংকোচনের অনুপাত, যদিও সংক্ষেপণের পরে পঠনযোগ্য নয় তাই এটি কিছু চিহ্ন হারাবে।


2

বাশ, 5 টি অক্ষর

আমার অলস এন্ট্রি যা কেবল জিততে পারে:

bzip2

ক্ষতিহীন, সুতরাং এটি পঠনযোগ্যতা পুরোপুরি সংরক্ষণ করে এবং সমস্ত অতিরিক্ত চিহ্ন পায়! ব্যাবেজ এইচটিএমএলে সংক্ষেপণের অনুপাত 4.79x (153804 থেকে 32084 বাইট)।


কোনওরকম আমি জানতাম যে সেই চ্যালেঞ্জটি নিয়ে আসছে ;-)
জোয়

এটা মারতে কঠিন হতে চলেছে।
লোজ্যাকার

Hah! আমি এটিকে দৈর্ঘ্য এবং সংকোচন অনুপাত উভয়ই পরাজিত করেছি;)
রাই-

2
xz, এমনকি আরও খাটো এবং আরও ভাল অনুপাত :)
ওয়ানঅফন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.