今天的任务是发明文本压缩器。
任务
您将编写两个函数:
该打包机是接受的ASCII字符(U + 0000到U + 007F)的字符串,并输出一个Unicode字符串(U + 0000到U + 10FFFF),包含字符尽可能少的功能。
该解包器是接受编码的Unicode字符串,并输出完全原始ASCII字符串的函数。
输入项
唯一授权的输入是ASCII字符串(对于打包程序)和打包的Unicode字符串(对于解包程序)。没有用户输入,没有互联网连接,没有使用文件系统。
您的职能部门可以访问此英语单词列表。您可以将该列表用作本地txt文件,也可以将其内容作为字符串或字符串数组复制到源代码中。
您无法在函数中对以下代码片段进行硬编码。
输出量
这两个函数的唯一授权输出是字符串。
解压缩程序的输出必须包含与打包程序的输入完全相同的字符。
您的输入和输出可以使用支持所有Unicode的任何字符编码(UTF-8 / 16/32,GB18030等),因为您的分数将仅取决于输出中Unicode字符的数量。不过,请精确说明您使用的是哪种编码。
要计算输出中Unicode字符的数量,可以使用以下工具: http //mothereff.in/byte-counter
计分
您的条目必须能够打包和解压缩以下10个文本片段(我在此论坛上拍摄的片段)。
您的分数将是10个打包字符串的大小(以Unicode字符表示)加上两个函数的大小(以Unicode字符表示)的总和。
如果使用字典,请不要计算字典的大小。
请在您的条目中包括每个代码段的“得分”及其打包版本。
最低分获胜。
数据
以下是要编码以计算分数的代码段:
1:里克·罗尔(Rick Roll)歌词(1870b): 我们高尔夫球并不陌生,您知道规则,我也是
我们不是爱的陌生人 你知道规则,我也知道 我想的是全面承诺 你不会从任何其他人那里得到这个 我只是想告诉你我的感觉 要让你明白 绝不会放弃你 永远不会让你失望 永远不会跑来跑去和抛弃你 永远不会让你哭泣 永远不会说再见 永远不会撒谎和伤害你 我们认识很久了 你的心一直在痛, 你不好意思说 内部我们都知道发生了什么事 我们知道游戏,我们会玩 如果你问我感觉如何 不要告诉我你太盲目看不见 绝不会放弃你 永远不会让你失望 永远不会跑来跑去和抛弃你 永远不会让你哭泣 永远不会说再见 永远不会撒谎和伤害你 绝不会放弃你 永远不会让你失望 永远不会跑来跑去和抛弃你 永远不会让你哭泣 永远不会说再见 永远不会撒谎和伤害你 (哦,给你) (哦,给你) (哦) 永不放弃,永不放弃 (放弃你) (哦) 永不放弃,永不放弃 (放弃你) 我们认识很久了 你的心一直在痛, 你不好意思说 内部我们都知道发生了什么事 我们知道游戏,我们会玩 我只是想告诉你我的感觉 要让你明白 绝不会放弃你 永远不会让你失望 永远不会跑来跑去和抛弃你 永远不会让你哭泣 永远不会说再见 永远不会撒谎和伤害你 绝不会放弃你 永远不会让你失望 永远不会跑来跑去和抛弃你 永远不会让你哭泣 永远不会说再见 永远不会撒谎和伤害你 绝不会放弃你 永远不会让你失望 永远不会跑来跑去和抛弃你 永远不会让你哭泣 永远不会说再见 永远不会撒谎和伤害你
2:高尔夫球手(412b):高尔夫ASCII艺术
'\。。|> 18 >> \。'。| O >>。'o | \。| / \。| //。” | jgs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^
3:数字菱形(233b):打印此菱形
1个 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321 12345678987654321 123456787654321 1234567654321 12345654321 123454321 1234321 12321 121 1个
4:四次输入字母(107b):四次打印字母
abcdefghijklmnopqrstuvwxyz qwertyuiopasdfghjklzxcvbnm pyfgcrlaoeuidhtnsqjkxbmwvz zyxwvutsrqponmlkjihgfedcba
5:Old McDonald的歌词(203b):Old MacDonald的功能
老麦克唐纳(Old MacDonald)有一个农场EIEIO, 在那个农场,他有一头母牛,EIEIO, 这里有a,那里有a, 这里a,那里a,到处都是mo, 老麦克唐纳有一个农场,EIEIO!
6:昼夜摇滚(144b):昼夜摇滚
1、2、3点,4点钟 5、6、7点,摇滚8点, 9、10、11点,12点摇滚, 今晚我们将昼夜不停地摇摆。
7:Hello World(296b):向ASCII艺术世界说“ Hello”
_ _ _ _ _ _ _ | | | | ___ | | | ___ __ _____ _ __ | | __ | | | | | _ | | / _ \ | | / _ \ \ \ / \ / / _ \ | '__ | | / _` | | | _ | __ / | | (_)| \ VV /(_)| | | | (_ | | _ | | _ | | _ | \ ___ | _ | _ | \ ___()\ _ / \ _ / \ ___ / | _ | | _ | \ __,_(_) | /
8:爱尔兰的祝福(210b):古老的爱尔兰祝福
愿这条路升起遇见你 也许风一直在你的身后 愿阳光照在你的脸上 雨水落在你的田野上 直到我们再次见面 愿上帝在你的空洞中抱你
9:有位老太太歌词(1208b):有位老太太
有一个老妇吞下苍蝇。 我不知道她为什么吞下那只苍蝇, 也许她会死。 有一个老妇吞下一只蜘蛛, 那在她体内蠕动,摇摆和摇摆。 她吞下蜘蛛捉苍蝇, 我不知道她为什么吞下那只苍蝇, 也许她会死。 有一个老妇吞下一只鸟, 吞下鸟真荒谬。 她吞下那只鸟去捉蜘蛛, 她吞下蜘蛛捉苍蝇, 我不知道她为什么吞下那只苍蝇, 也许她会死。 有一个老妇吞下一只猫, 想象一下吞下一只猫。 她吞下猫抓鸟, 她吞下那只鸟去捉蜘蛛, 她吞下蜘蛛捉苍蝇, 我不知道她为什么吞下那只苍蝇, 也许她会死。 有一个老妇吞下一条狗, 吞下一只狗真是猪。 她吞了那只狗来捉住那只猫, 她吞下猫抓鸟, 她吞下那只鸟去捉蜘蛛, 她吞下蜘蛛捉苍蝇, 我不知道她为什么吞下那只苍蝇, 也许她会死。 有一位老妇吞下一匹马, 她当然死了。
10:葛底斯堡(1452b):葛底斯堡地址的随机性
四分制和七年前,我们的祖先在这个大陆上建立了一个新的国家,这个国家是自由构想的,致力于实现人人平等的主张。现在,我们正在进行一场伟大的内战,考验该国家或任何一个如此怀有设想和奉献精神的国家是否可以长期忍受。我们在那场战争的伟大战场上相遇。我们已经将这一领域的一部分奉献给那些在这里献出生命以使该民族得以生存的人们最后的安息之地。我们应该这样做完全合适和适当。但是,从更大的意义上讲,我们不能奉献,我们不能奉献,我们不能圣地。在这里苦苦挣扎的英勇活着的人已经奉献了圣物,远远超出了我们增加或贬损的能力。世界不会注意到,也不会记住我们在这里所说的话,但它永远不会忘记他们在这里做了什么。对我们来说,这是一种生活,而不是专心于未完成的工作,迄今为止,他们在这里奋战的工作迄今还算是很高尚。宁愿我们在这里专注于摆在我们面前的艰巨任务-从这些光荣的死者中,我们更加奉献于他们最后献出充分献身精神的事业-我们在这里坚决解决这些死者不应徒劳地死了-这个国家在上帝的统治下将重生自由-人民的统治,由人民为人民,不会从地上灭亡。
总计(未压缩):6135个字符/字节。
玩得开心!
private static final String RICK_ROLL_RETURN = "We're no strangers to love...