Thwart LZMA2 संपीड़न


11

लक्ष्य

प्रभावी ढंग से काम करने से LZMA2 को रोकने के इरादे से सामूहिक रूप से विघटन और फ़ाइलों को ठीक करने वाले प्रोग्राम या जोड़ी बनाएं। विघटन और फिक्स रूटीन पारस्परिक होना चाहिए, ताकि आप मूल फ़ाइल को ठीक से पुनर्प्राप्त कर सकें।

लक्ष्य

संपीड़न के तरीके

  • Ubuntu / संबंधित: xz -kz5 <infile>
  • खिड़कियाँ: 7z.exe a -txz -mx5 <outfile> <infile>
  • अन्य: संपीड़न स्तर 5 के साथ एक LZMA2 कंप्रेसर का उपयोग करें जो शेक्सपियर के कार्यों को 1570550 बाइट्स the 100 बाइट्स तक संपीड़ित करता है।

स्कोरिंग; योग (सब कुछ बाइट्स में है, ls -lया dirयह):

  • कार्यक्रम (ओं) का आकार (जो कुछ भी सामूहिक रूप से प्रतिवर्ती "ब्रेक" / फ़ाइल को ठीक करता है)
  • बीच का अंतर (पूर्ण):
    • रॉ ने शेक्सपियर और आपके संशोधित (असम्पीडित) प्रतिलिपि के कार्यों को एकत्र किया।
    • कच्ची तस्वीर और आपकी संशोधित (असम्पीडित) प्रति।
  • आकार में अंतर या 0, इनमें से जो भी अधिक हो:
    • रॉ ने शेक्सपियर माइनस की अपनी संशोधित, LZMA2 संपीड़ित कॉपी के काम किए।
    • अपने संशोधित, LZMA2 संकुचित प्रतिलिपि कच्चे फोटो माइनस।

उदाहरण

खराब स्कोरिंग, आलसी-गोल्फ, लेकिन आज्ञाकारी पायथन 2.x उदाहरण:

import sys
x = 7919 if sys.argv[1] == 'b' else -7919
i = bytearray(open(sys.argv[2], 'rb').read())
for n in range(len(i)):
    i[n] = (i[n] + x*n) % 256
o = open(sys.argv[2]+'~', 'wb').write(i)

चल रहा है ...

$ python break.py b pg100.txt 
$ python break.py f pg100.txt~ 
$ diff -s pg100.txt pg100.txt~~
Files pg100.txt and pg100.txt~~ are identical
$ python break.py b Glühwendel_brennt_durch.jpg 
$ python break.py f Glühwendel_brennt_durch.jpg~
$ diff -s Glühwendel_brennt_durch.jpg Glühwendel_brennt_durch.jpg~~
Files Glühwendel_brennt_durch.jpg and Glühwendel_brennt_durch.jpg~~ are identical
$ xz -kz5 pg100.txt~
$ xz -kz5 Glühwendel_brennt_durch.jpg~
$ ls -ln
-rw-rw-r-- 1 2092 2092     194 May 23 17:37 break.py
-rw-rw-r-- 1 2092 2092 1659874 May 23 16:20 Glühwendel_brennt_durch.jpg
-rw-rw-r-- 1 2092 2092 1659874 May 23 17:39 Glühwendel_brennt_durch.jpg~
-rw-rw-r-- 1 2092 2092 1659874 May 23 17:39 Glühwendel_brennt_durch.jpg~~
-rw-rw-r-- 1 2092 2092 1646556 May 23 17:39 Glühwendel_brennt_durch.jpg~.xz
-rw-rw-r-- 1 2092 2092 5589891 May 23 17:24 pg100.txt
-rw-rw-r-- 1 2092 2092 5589891 May 23 17:39 pg100.txt~
-rw-rw-r-- 1 2092 2092 5589891 May 23 17:39 pg100.txt~~
-rw-rw-r-- 1 2092 2092 3014136 May 23 17:39 pg100.txt~.xz

स्कोर

  • = 194 + abs (5589891 - 5589891) + अधिकतम (5589891 - 3014136, 0) + abs (1659874 - 1659874) + अधिकतम (1659874 - 1646556, 0)
  • = 194 + 0 + 2575755 + 0 + 13318
  • 2,589,267 बाइट्स। खराब, लेकिन फ़ाइलों के लिए कुछ नहीं करने से 4,635,153 बाइट्स का स्कोर प्राप्त होता है।

स्पष्टीकरण

यह गोल्फ है, इसलिए आप अपने स्कोर को कम से कम करने की कोशिश कर रहे हैं । मुझे यकीन नहीं है कि अगर टिप्पणी मेरे स्कोरिंग में एक वैध छेद है या यदि वे हैं क्योंकि मैंने इसे बहुत जटिल बना दिया है। किसी भी मामले में, आप चाहते हैं छोटी से छोटी :

  • सोर्स कोड
  • असम्पीडित संशोधित फ़ाइल और मूल फ़ाइल के बीच का अंतर (जैसे यदि आप इसे ट्रिलियन 0 के अंत में जोड़कर संशोधित करते हैं, तो आपका स्कोर सिर्फ एक ट्रिलियन बाइट्स हो गया)
  • संपीड़ित संशोधित फ़ाइल और मूल फ़ाइल के बीच अंतर (उदाहरण के लिए और अधिक अयोग्य फ़ाइलें बन जाती हैं, आपका स्कोर जितना अधिक)। एक पूरी तरह से असंगत फ़ाइल जो थोड़ा बढ़ता है या बिल्कुल नहीं 0 स्कोर करेगा।

2
ट्रोलिंग का उत्तर: चरण 1 - यह पता करें कि आपके पास कितनी खाली डिस्क स्थान है, फिर उस फ़ाइल के आकार से विभाजित करके N. चरण 2 प्राप्त करें - फ़ाइल को N बार में जोड़ें और नंबर N को चरणबद्ध करें। चरण 3 - एहसास फ़ाइल को संपीड़ित करने के लिए कोई स्थान नहीं बचा है, लेकिन कई टेराबाइट्स (या अधिक) की फ़ाइलों में एक पूर्ण अंतर के साथ समाप्त होता है .... [रिवर्स करने के लिए, फ़ाइल के अंत से एन को पढ़ें और फ़ाइल को 1 / Nth आकार में सिकोड़ें। ]
MT0

@ MT0: आह मुझे लगता है कि समाधान यह है कि मतभेद पूर्ण नहीं होना चाहिए । यदि आपकी संशोधित फ़ाइल बड़ी है जो अंकों को घटाना चाहिए।
क्लाउडिया

@ MT0 यदि आप फ़ाइल को एक टेराबाइट बड़े बनाने के लिए संशोधित करते हैं, तो आपका स्कोर 1 टेराबाइट होगा ... जब आप गोल्फ के लिए प्रयास कर रहे हों तो बहुत बुरा होगा।
निक टी

@ MT0 मैंने पोस्ट में एक स्पष्टीकरण जोड़ा, क्या यह मदद करता है?
निक टी

2
एक वक्रोक्ति। यदि कंप्रेसर विशेष रूप से अचूक है तो कंप्रेसर एक बड़ी फ़ाइल बना सकता है। इस मामले में आपको पुरस्कृत किया जाना चाहिए, दंडित नहीं किया जाना चाहिए, नहीं?
क्लाउडीयू

जवाबों:


8

पायथन, स्कोर = 120

import sys,hashlib
i=0
for c in sys.stdin.read():sys.stdout.write(chr(ord(c)^ord(hashlib.md5(str(i)).digest()[0])));i+=1

काउंटर मोड में md5 का उपयोग करके एक बार पैड बनाता है । इसके साथ फ़ाइल xors। इसका यह लाभ है कि मूल और बाधित फ़ाइलें एक ही आकार की होती हैं, और यह कि विघटनकर्ता और फिक्सर एक ही कार्यक्रम हैं।

संपीड़ित बाधित फाइलें मूल से बड़ी हैं।


मैंने स्कोरिंग को समायोजित किया है, अगर ज़िप की गई फाइलें उनके मूल समकक्षों से बड़ी हैं जिन्हें आप दंडित नहीं करते हैं और वे सिर्फ स्कोर करते हैं। 0. निश्चित रूप से आपकी फ़ाइलों के लिए अंतर नहीं है, लेकिन आप स्कोर को अपडेट करने की इच्छा कर सकते हैं
निक टी

@NickT: अपडेट किया गया।
कीथ रान्डेल

8

सी, ५१ = ५१ + ० + ० + ० + ०

main(c){for(;c=~getchar();putchar(~c^rand()>>23));}

गोल्फ ट्रिक्स के तहत , यह प्रोग्राम प्रत्येक बाइट के लिए मानक इनपुट में लूप करता है, और रैंड () से एक अनंत पैड के साथ अनन्य-या करता है। मैंने ओपनबीएसडी 5.5 के परिवाद में रैंड () के साथ इसका परीक्षण किया।

उपयोग:

./scramble <orig >scrambled
./scramble <scrambled >orig.copy

अपने कार्यक्रम का परीक्षण करने के लिए, मैंने अपने कार्यक्रम को संकलित करने और अपने स्कोर की गणना करने के लिए एक शेल स्क्रिप्ट test.sh (57 लाइनें) लिखा ।

$ sh test.sh
[1/4] Compiling scramble...
/tmp//ccbcB43x.o(.text+0x6): In function `main':
: warning: rand() isn't random; consider using arc4random()
[2/4] Scrambling files...
[3/4] Compressing scrambled files...
[4/4] Checking descrambler...
SCORE: 51=51+0+0+0+0
You may wish to rm -rf tmp.9Tjw89dgCs
$ ls -l tmp.9Tjw89dgCs/
total 43032
-rw-r--r--  1 kernigh  kernigh  1659874 May 28 17:23 filament.jpg.cp
-rw-r--r--  1 kernigh  kernigh  1659874 May 28 17:23 filament.jpg.sc
-rw-r--r--  1 kernigh  kernigh  1660016 May 28 17:23 filament.jpg.sc.xz
-rw-r--r--  1 kernigh  kernigh  5589891 May 28 17:23 pg100.txt.cp
-rw-r--r--  1 kernigh  kernigh  5589891 May 28 17:23 pg100.txt.sc
-rw-r--r--  1 kernigh  kernigh  5590232 May 28 17:23 pg100.txt.sc.xz
-rwxr-xr-x  1 kernigh  kernigh     8564 May 28 17:23 scramble

रैंड () और सही शिफ्ट के बारे में नोट्स

कोई भी संपीड़न एल्गोरिदम यादृच्छिक डेटा को संपीड़ित नहीं कर सकता है। मैं pg100.txt और filament.jpg को बेतरतीब डेटा के रूप में बदल सकता हूं अगर मैं उन्हें स्ट्रीम साइफर के साथ स्क्रैम्बल करूं ।

मेरा पहला विचार अनन्य या के लिए गया था प्लेन टेक्स्ट के साथ पैड बनाने के लिए सिफर , तो दोनों की दुकान सिफर और पैड तले फ़ाइल में। यह फ़ाइल का आकार बढ़ाएगा, और मेरा स्कोर बढ़ाएगा। स्पष्ट पसंद हर फ़ाइल के लिए एक ही पैड का उपयोग करना है , और केवल स्क्रैम्बल फ़ाइल में सिफरटेक्स्ट स्टोर करना है । अगर मैं सिर्फ रैंड () कहता हूं, तो यह 1 के डिफ़ॉल्ट बीज का उपयोग करता है और हर बार एक ही पैड बनाता है ।

OpenBSD 5.5 stdlib.h और rand.c में रैंड को परिभाषित करता है :

/* from stdlib.h */
#define RAND_MAX    0x7fffffff

/* from rand.c */
static u_int next = 1;

int
rand_r(u_int *seed)
{
    *seed = *seed * 1103515245 + 12345;
    return (*seed % ((u_int)RAND_MAX + 1));
}

int
rand(void)
{
    return (rand_r(&next));
}

यह एक रैखिक बधाई जनरेटर है । बड़ा दोष यह है कि कम बिट्स में छोटी अवधि होती है। 1 बिट में 2 की अवधि होती है: यदि आप एक सिक्का के साथ फ्लिप करते हैं rand()&1, तो यह सिर, पूंछ, सिर, पूंछ, और इसी तरह आगे बढ़ेगा। Nth बिट की अवधि 2 n है । 31 बिट्स हैं, इसलिए पूरे अनुक्रम की अवधि 2 31 है

LZMA2 छोटी अवधि में पैटर्न पा सकते हैं और उन्हें संपीड़ित कर सकते हैं। सबसे छोटा कोड ~c^rand()कम 8 बिट्स लेता है और संपीड़न को रोकता नहीं है। ~c^rand()>>9मदद में सही बदलाव , लेकिन पर्याप्त नहीं। मैं उपयोग करता हूं ~c^rand()>>23

  • ~c स्कोर: 4227957 = 40 + 0 + 0 + 4019391 + 208526
  • ~c^rand() स्कोर: 2474616 = 47 + 0 + 0 + 2463735 + 10834
  • ~c^rand()>>9 स्कोर: 350717 = 50 + 0 + 0 + 350667 + 0
  • ~c^rand()>>23 स्कोर: ५१ = ५१ + ० + ० + ० + ०

5

ब्रेनफक : 129 (129 + 0 + 0 + 0 + 0) *

random.bf (पठनीयता के लिए जोड़े गए लाइनफ़ीड)

,+[->>>>++[<++++++++[<[<++>-]>>[>>]+>>+[-[->>+<<<[<[<<]<
+>]>[>[>>]]]<[>>[-]]>[>[-<<]>[<+<]]+<<]<[>+<-]>>-]<[-<<+
>>]<<.,+[->]>>>]]

बनाने के लिए unrandom.bfआपको दूसरी पंक्ति में अंतिम + को बदलने की आवश्यकता है।

अधिकांश कोड डैनियल बी क्रिस्टोफनी के नियम 30 पर आधारित यादृच्छिक संख्या जनरेटर है जो प्रत्येक इनपुट में संख्या जोड़ने और अधिक इनपुट न होने पर समाप्त करने के लिए अनुकूलित है।

* मैंने बाइट्स का परीक्षण किया है जो अब तक 212992 (12 घंटे के बाद संसाधित) में संसाधित हुआ है और दोनों फाइलें 213064 संकुचित फ़ाइल में बदल जाती हैं। मुझे लगता है कि यह सप्ताह के अंत तक सुनिश्चित करने के लिए पता हो सकता है लेकिन मैं पोस्टिंग के साथ इंतजार नहीं करना चाहता। अगर यह गलत है, तो मैं स्कोर को अपडेट करूंगा, लेकिन Rule30 चट्टानों के बाद से समाधान रखें!

सामान्य ज्ञान: नियम 30 की खोज स्टीफन वोल्फ्राम द्वारा 1983 में की गई थी और विकिपीडिया के अनुसार इसका उपयोग गणितज्ञों में यादृच्छिक पूर्णांक बनाने के लिए किया जाता है।

संकलन और चल रहा है:

यह घातीय समय और स्थान का उपयोग करता है (प्रति संसाधित 32 से अधिक कोशिकाओं में पुनरावृत्ति करता है) इसलिए इसे ब्रेनफक रनटाइम की आवश्यकता होती है जिसमें शेक्सपियर फ़ाइल को एन्कोड करने के लिए कम से कम 178,876,517 कोशिकाएं हों, जो यूनिकोड के अनुसार गैर एसिसीआई का इलाज न करें, 8 बिट्स कोशिकाओं और उपयोगों से व्यापक है -1 के रूप में (255 और -1 के बीच अंतर करने के लिए)। मैं आमतौर पर दूसरों की व्याख्या करने वालों का उपयोग करता हूं, लेकिन इस बार मुझे एक प्लग होने और अपने स्वयं के प्रचार की आवश्यकता है:

jitbf --eof -1 -b 16 -c 200000000 random.bf < pg100.txt > pg100.txt.ran
jitbf --eof -1 -b 16 -c 200000000 random.bf < Glühwendel_brennt_durch.jpg > Glühwendel_brennt_durch.jpg.ran

jitfb ब्रेनफक को C को अनुकूलित करने के लिए संकलित करता है और इसे चलाने के लिए perl इनलाइन :: C का दुरुपयोग करता है। यह मेरे विस्तारित ब्रेनफैक कंपाइलर के साथ बंडल है । तर्क में सेल के आकार और चौड़ाई के साथ यह लगभग 400MB आवंटित करेगा।


3

सीजेएम, 22 बाइट्स

G,~q{5$H$+255%_@^o}/];

इस का उपयोग करता है एक लेग्ड फाइबोनैचि जनरेटर के साथ आवर्ती संबंध रों n = (रों एन-5 + S एन -16 % 255) (जो मैंने गलती से चयन किया है, लेकिन यह फिर भी काम करता है) और एक छोटी सी बीज बाइट्स का एक छद्म यादृच्छिक धारा उत्पन्न करने के लिए , जो इनपुट के साथ फिर XORs।

मैंने CJam 0.6 के साथ अपने कोड का परीक्षण किया है , जिसे 1 मई 2014 को प्रकाशित किया गया था।

यह काम किस प्रकार करता है

G,~                    e# Dump 0, 1, ... and 15 on the stack.
   q                   e# Read from STDIN.
    {             }/   e# For each character in the input.
     5$H$              e# Copy the sixth and 19th element from the stack.
         +255%         e# Push their sum modulo 255.
              _@       e# Duplicate and rotate the character on top.
                ^o     e# XOR and print.
                    ]; e# Clear the stack.

स्कोर

$ LANG=en_US
$ alias cjam='java -jar /usr/local/share/cjam/cjam-0.6.jar'
$ cjam thwart.cjam < pg100.txt > pg100.txt~
$ cjam thwart.cjam < pg100.txt~ > pg100.txt~~
$ diff -s pg100.txt pg100.txt~~
Files pg100.txt and pg100.txt~~ are identical
$ cjam thwart.cjam < Gluehwendel_brennt_durch.jpg > Gluehwendel_brennt_durch.jpg~
$ cjam thwart.cjam < Gluehwendel_brennt_durch.jpg~ > Gluehwendel_brennt_durch.jpg~~
$ diff -s Gluehwendel_brennt_durch.jpg Gluehwendel_brennt_durch.jpg~~
Files Gluehwendel_brennt_durch.jpg and Gluehwendel_brennt_durch.jpg~~ are identical
$ xz -kz5 pg100.txt~ Gluehwendel_brennt_durch.jpg~
$ wc -c thwart.cjam pg100.txt* Gluehwendel_brennt_durch.jpg*
      22 thwart.cjam
 5589889 pg100.txt
 5589889 pg100.txt~
 5589889 pg100.txt~~
 5590232 pg100.txt~.xz
 1659874 Gluehwendel_brennt_durch.jpg
 1659874 Gluehwendel_brennt_durch.jpg~
 1659874 Gluehwendel_brennt_durch.jpg~~
 1660016 Gluehwendel_brennt_durch.jpg~.xz
28999559 total

3

PHP, 117 + 0 + 0 + 0 + 0 = 117

क्योंकि क्या आप वास्तव में किसी अन्य भाषा को मान्यता से परे अपने डेटा को मेनटेन करने का काम सौंपेंगे?

<?=substr(gmp_export(gmp_invert(2*gmp_import($s=stream_get_contents(STDIN))+1,$m=2*gmp_pow(256,strlen($s)))/2+$m),1);

जबकि अन्य सभी समाधान "यादृच्छिक संख्या जनरेटर" या "सैन्य-ग्रेड क्रिप्टोग्राफी" जैसे "सुरक्षित" निर्माणों पर आधारित हैं, यह केवल विषम संख्या modulo 2⋅256 ^ लंबाई का प्रतिनिधित्व करने के रूप में तारों की व्याख्या करता है, और अपने मॉड्यूलर व्युत्क्रम की गणना करता है ।

डेमो:

$ php thwart.php < 100.txt.utf-8 > 100.txt.utf-8~
$ php thwart.php < 100.txt.utf-8~ > 100.txt.utf-8~~
$ diff -s 100.txt.utf-8 100.txt.utf-8~~
Files 100.txt.utf-8 and 100.txt.utf-8~~ are identical
$ php thwart.php < Glühwendel_brennt_durch.jpg > Glühwendel_brennt_durch.jpg~
$ php thwart.php < Glühwendel_brennt_durch.jpg~ > Glühwendel_brennt_durch.jpg~~
$ diff -s Glühwendel_brennt_durch.jpg Glühwendel_brennt_durch.jpg~~
Files Glühwendel_brennt_durch.jpg and Glühwendel_brennt_durch.jpg~~ are identical
$ xz -kz5 100.txt.utf-8~ Glühwendel_brennt_durch.jpg~
$ wc -c *
 5589889 100.txt.utf-8
 5589889 100.txt.utf-8~
 5590232 100.txt.utf-8~.xz
 5589889 100.txt.utf-8~~
 1659874 Glühwendel_brennt_durch.jpg
 1659874 Glühwendel_brennt_durch.jpg~
 1660016 Glühwendel_brennt_durch.jpg~.xz
 1659874 Glühwendel_brennt_durch.jpg~~
     117 thwart.php
28999654 total

2

शेल स्क्रिप्ट, 203

id|gpg --batch --passphrase-fd 0 --personal-compress-preferences Uncompressed $1 $2

इसे चलाना:

% sh break.sh -c pg100.txt                       
% sh break.sh -d pg100.txt.gpg > pg100.txt-original
gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: WARNING: message was not integrity protected
% diff -s pg100.txt pg100.txt-original
Files pg100.txt and pg100.txt-original are identical
% sh break.sh -c Glühwendel_brennt_durch.jpg
% sh break.sh -d Glühwendel_brennt_durch.jpg.gpg > Glühwendel_brennt_durch.jpg-original
gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: WARNING: message was not integrity protected
% diff -s Glühwendel_brennt_durch.jpg Glühwendel_brennt_durch.jpg-original
Files Glühwendel_brennt_durch.jpg and Glühwendel_brennt_durch.jpg-original are identical
% xz -kz5 Glühwendel_brennt_durch.jpg.gpg 
% xz -kz5 pg100.txt.gpg 
% ls -ln
total 28340
-rw-r--r-- 1 1000 1000      84 May 24 04:33 break.sh
-rw-r--r-- 1 1000 1000 1659874 Jan 19 17:22 Glühwendel_brennt_durch.jpg
-rw-r--r-- 1 1000 1000 1659943 May 24 04:46 Glühwendel_brennt_durch.jpg.gpg
-rw-r--r-- 1 1000 1000 1660084 May 24 04:46 Glühwendel_brennt_durch.jpg.gpg.xz
-rw-r--r-- 1 1000 1000 1659874 May 24 04:46 Glühwendel_brennt_durch.jpg-original
-rw-r--r-- 1 1000 1000 5589891 May 24 03:55 pg100.txt
-rw-r--r-- 1 1000 1000 5589941 May 24 04:43 pg100.txt.gpg
-rw-r--r-- 1 1000 1000 5590284 May 24 04:43 pg100.txt.gpg.xz
-rw-r--r-- 1 1000 1000 5589891 May 24 04:43 pg100.txt-original

बहुत पोर्टेबल नहीं है, लेकिन कुछ बाइट्स की कीमत पर बनाया जा सकता है। PGP की आवश्यकता है (OpenSSL के साथ एक कार्यान्वयन भी संभव होगा)। एन्कोडेड फ़ाइल और मूल के बीच ~ 50 बाइट अंतर शायद बचाया जा सकता है।

स्कोरिंग:

84 + abs (1659874 - 1659943) + अधिकतम (1659874 - 1660084, 0) + abs (5589891 - 5589941) + अधिकतम (5589891 - 5590284, 0) - 203


1

पायथन, स्कोर = 183 + 7 + 6 + 0 + 0 = 196

स्कोरिंग आपको फ़ाइल को पूरी तरह से असंगत बनाने के लिए दंडित करता है, क्योंकि संपीड़ित फ़ाइल संपीड़न ओवरहेड से बड़ी है। इस प्रकार मेरा कार्यक्रम उन्हें पूरी तरह से असंगत से थोड़ा कम बनाता है:

import sys
from random import randint as J,seed
x=sys.stdin.read()
seed(ord(x[1]))
n=int(2362*J(1,2)**2.359)
sys.stdout.write(x[:n]+''.join(chr(ord(c)^J(0,255))for c in x[n:]))

परिणाम:

Laxori@Laxori-PC /cygdrive/f/Programming/lzkill
$ cat photo.jpg | python break.py > photo.jpg~; cat photo.jpg~ | python break.py > photo.jpg~~; diff photo.jpg photo.jpg~~; xz -kz5 photo.jpg~

Laxori@Laxori-PC /cygdrive/f/Programming/lzkill
$ cat pg100.txt | python break.py > pg100.txt~; cat pg100.txt~ | python break.py > pg100.txt~~; diff pg100.txt pg100.txt~~; xz -kz5 pg100.txt~

Laxori@Laxori-PC /cygdrive/f/Programming/lzkill
$ ls -l
total 28337
----------+ 1 Laxori mkpasswd     183 2014-05-24 13:43 break.py
----------+ 1 Laxori mkpasswd 5589891 2014-05-23 19:19 pg100.txt
-rw-r--r--+ 1 Laxori mkpasswd 5589891 2014-05-24 13:45 pg100.txt~
-rw-r--r--+ 1 Laxori mkpasswd 5589884 2014-05-24 13:45 pg100.txt~.xz
-rw-r--r--+ 1 Laxori mkpasswd 5589891 2014-05-24 13:45 pg100.txt~~
----------+ 1 Laxori mkpasswd 1659874 2014-05-23 19:19 photo.jpg
-rw-r--r--+ 1 Laxori mkpasswd 1659874 2014-05-24 13:44 photo.jpg~
-rw-r--r--+ 1 Laxori mkpasswd 1659880 2014-05-24 13:44 photo.jpg~.xz
-rw-r--r--+ 1 Laxori mkpasswd 1659874 2014-05-24 13:44 photo.jpg~~

Laxori@Laxori-PC /cygdrive/f/Programming/lzkill
$ python
Python 2.5.2 (r252:60911, Dec  2 2008, 09:26:14)
[GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 183 + abs(5589891-5589884) + abs(1659874-1659880)
196

वर्तमान नियमों के साथ, संपीड़ित फ़ाइल के बड़े होने का कोई जुर्माना नहीं है। क्या नियम बदल गए? यदि हां, तो इस तरह का बदलाव इस कार्यक्रम के लिए अनुचित था।
kernigh

@kernigh: हाँ, जब मैंने इसे पोस्ट किया तो वे बदल गए। सचमुच उन्हें वैसे ही होना चाहिए था जैसे वे अब शुरू से हैं।
क्लाउडीयू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.