OOP:面向对象的编程
似乎不太适合代码打高尔夫球的鲜为人知的编程范例之一是面向重叠编程(OOP) *。当编写部分相同的代码时,只需将相同的部分重叠并以某种方式记住两条原始代码行的开头,就可以节省许多字节。您的任务是编写两个重叠的程序或函数compress,decompress并遵循以下规范: *请不要在生产代码中使用。 compress compress以任何方便的格式获取两个字符串,并尽可能地将它们重叠。即s返回的字符串的长度最小,这样两个输入字符串都是的子字符串s。此外,返回一些标识两个字符串的开始和结束索引的输出。 示例:(具体的IO格式由您决定) compress("abcd", "deab") -> "deabcd" ((2,5),(0,3)) compress("abcd", "bc") -> "abcd" ((0,3),(1,2)) compress("abc", "def") -> "abcdef" ((0,2),(3,5)) or "defabc" ((3,5),(0,2)) decompress decompress计算的反函数compress,给定一个字符串和两个开始和结束索引(以您的返回格式compress),返回两个原始字符串。您只需要处理有效的输入。以下等式适用于所有字符串s1,s2: (s1, s2) == decompress (compress (s1, s2)) 示例:(compress示例的反向) decompress "deabcd" ((2,5),(0,3)) -> "abcd" "deab" decompress "abcd" ((0,3),(1,2)) -> "abcd" "bc" decompress "abcdef" ((0,2),(3,5)) -> …