每个人都知道游程长度编码是什么。它已经成为许多代码高尔夫球挑战的主题。我们将研究某些变化。
例
Normal: 11222222222222222222233333111111111112333322
Run-length: 112(19)3(5)1(11)2333322
括号中的数字指定上一个符号出现的次数。在该示例中,仅对5个或更多字符的运行进行编码。这是因为4或更少的编码运行不会改善字符数。
挑战
编写一个实现行程编码这种变化形式的函数/程序,但也可以对两个符号的行程进行编码。两个符号的行也必须用括号括起来。组也将括在括号中。您的程序必须接受一个字符串作为输入,并输出经过修改的字符串并带有缩短该字符串的修改。
例
Normal: 111244411144411144411167676767222222277777222222277777123123123123
Double run-length: 1112((444111)(3))67676767((2(7)7(5))(2))123123123123
笔记
111
未编码,因为对其进行编码(1(3)
)并不短。- 该字符串
444111
出现3次,因此被编码。 676767
未编码,因为((67)(4))
比以前更长。222222277777222222277777
未编码为((222222277777)(2))
。为什么?因为222222277777
本身可以简化为2(7)7(5)
。123123123123
未编码,因为您的程序应该处理两个符号而不是三个符号。
这是 代码高尔夫球所以最短的代码胜出。决胜局是提早提交的。
如果我错过了任何事情,或者您不确定任何事情,请在评论中通知我。
我们将不得不处理
—
Leaky Nun
441444144414
-> ((4414)(3))
吗?
我已经解决了。
—
ericw31415 '16
@KennyLau不,你不会。
—
ericw31415 '16
4414
从技术上讲是4的系列。我的措辞很糟糕。
可以
—
CalculatorFeline
111111111
编码为(1)(9)
?
67
秒。