COBOL是一种非常古老的语言,在撰写本文时已经58岁了。实际上,它太老了,以至于它有一个非常有趣的怪癖:每行的前六个字符是注释。
你问为什么呢?好吧,那六个字符原本是要用作行号的,那是在程序不是完全数字化并在计算机上打字的那个日子。
此外,第七个字符只能是一个很小的集合的一部分(通常是 *
是注释掉该行或一个空格以将行号与代码分开)
但是,如果您使用的是数字系统,并且只想要原始程序,该怎么办?
评论系统
COBOL中有两种类型的注释:行注释和前面提到的“行号”注释。
取消注释行号很简单:只需从每行中删除前七个字符(六个加一个空格)。
000000 apple
000001 banana
celery donuts
会成为:
apple
banana
donuts
行注释使它变得更加困难。行注释以星号开头,该星号*
位于行的第七个字符位置,如下所示:
000323* this is a comment
这不是一行注释:
*00000 this isn't a comment
要取消注释行注释,只需删除整行。
一个示例注释了“程序”:
000000 blah blah
000001* apples
000002 oranges?
000003* yeah, oranges.
000*04 love me some oranges
未注释的版本:
blah blah
oranges?
love me some oranges
换句话说,要取消注释字符串,请删除每行的前六个字符,然后返回除以星号开头的每行的第一个字符以外的所有字符。
挑战
创建一个接受注释程序并返回其未注释变体的程序或函数。
澄清说明
*
在一行的前七个字符之外的任何地方都找不到星号()(我们不要求您验证语法)- 每行将始终至少包含7个字符。
- 您可以假设第七个字符始终是星号或空格。
- 输入或输出可以是矩阵或列表。
- 仅可处理可打印的ASCII字符(加上换行符)。
- 您可以输出尾随换行符。如果您选择这样做,您还可以假设输入将包含尾随换行符。
计分
由于这是代码高尔夫,因此,字节数最少的答案会获胜!
免责声明:我实际上并不了解COBOL,也不会声称。如果我在此问题上对COBOL提出的任何主张不正确,我将不承担任何责任。
*
。这是巧合吗?
key:{key:{key:length,key:length}}
。虽然会剥离所有格式数据和键入数据。