目标
创建一个或多个程序以共同破坏和修复文件,以防止LZMA2有效工作。打扰和修复例程必须是相互的,因此您可以准确地恢复原始文件。
目标
- 以普通UTF-8格式收集的莎士比亚作品(5,589,891字节)
- Wikimedia Commons 2013年度全分辨率图片(1,659,847字节)
压缩方式
- Ubuntu /相关:
xz -kz5 <infile>
- 视窗:
7z.exe a -txz -mx5 <outfile> <infile>
- 其他:使用压缩级别5的LZMA2压缩器将莎士比亚作品压缩为1570550字节±100字节。
得分;总和(一切以字节为单位,ls -l
或dir
它):
- 程序的大小(可逆地“破坏” /修复文件所需的总和)
- 大小之间的差异(绝对值):
- 莎士比亚的原始作品集和经过修改(未压缩)的副本。
- 原始照片和修改(未压缩)的副本。
- 大小差异或0,两者之间的较大者:
- 莎士比亚原始作品集减去修改后的LZMA2压缩副本。
- 原始照片减去修改后的LZMA2压缩副本。
例
得分不高,懒惰但符合标准的Python 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 + 绝对(5589891 − 5589891)+ 最大值(5589891 − 3014136,0)+ 绝对(1659874 − 1659874)+ 最大(1659874 − 1646556,0)
- = 194 + 0 + 2575755 + 0 + 13318
- 2,589,267字节。 不好,但是对文件不执行任何操作,则得到4,635,153字节的分数。
澄清度
这是高尔夫,因此您正在尝试将自己的得分降至最低。我不确定这些评论是否指出了我的得分上的合理漏洞,或者是因为我将其弄得太复杂了。无论如何,您都想要最小的:
- 源代码
- 未压缩的修改文件和原始文件之间的差异(例如,如果您通过在末尾附加一个兆兆0来对其进行修改,则您的分数只会增加一兆字节)
- 压缩后的修改文件与原始文件之间的差异(例如,文件变得越不可压缩,则得分越高)。一个完全不可压缩的文件,其增长很小或根本没有增长,将获得0分。