有一个关于a夫的老故事,他从未对自己的外貌感到满意。他希望自己能成为太阳,所以他做到了。在云层的阻挡下,他希望成为-并且变成-云层。风吹起时,他希望自己成为风。在山上停下来之后,他希望成为一座山,因此成为了一座山。但是不久,他就被by夫砍死,并希望成为stone夫。
同样,您的任务是编写一个对其使用的语言永远不满意的程序。您的程序必须输出一组正则表达式替换项,才能将其转换为另一种语言。等等。
规则
- 用您选择的语言编写程序。
- 该程序应输出一系列至少两个部分。段是一堆文本,用分号分隔。但是,如果将一个分号包含在正则表达式中,则将其拆分会导致语法无效,因此不会分隔段。参见示例。
- 第一部分是要查找的正则表达式模式,第二部分是替换模式。第三个是另一个“查找”模式,第四个是“替换”模式,依此类推。
- 将正则表达式模式应用于程序。将第一段上的图案替换为第二段上的图案;将第三个模式替换为第四个模式,依此类推。
- 结果应该是使用其他语言的程序,该程序本身遵循规则2至4。
- 使用的语言必须形成无限的重复循环。
- 例如,Python-> PHP-> C ++-> Python-> PHP-> C ++-> Python-> ...
- 您的分数是周期的周期。领带被最短的初始代码长度打断。
- 在上面的示例中,分数为3。
- 在该循环的每个迭代中,不得使用任何语言多次。
- 对于规则5和7,兼容语言(C和C ++)以及同一语言的不同版本(Python 2和Python 3)被视为相同。
- 程序本身不需要重复。
- 在上面的示例中,第一程序和第四程序可能不同。
- 可以使用任何版本的regex,但所有程序都必须使用相同的版本。
- 每个程序的总输出不得超过100个字符。
- 每个输出必须包含实际更改程序的指令。即,循环中没有两个连续的程序可以相同。
例
Python-> Ruby-> Python-> ...
print "uts;Z;rint;uts;Z(?=;Z);rint"
输出:
uts;Z;rint;uts;Z(?=;Z);rint
这些段是:
FIND ; REPLACE
uts ; Z
rint ; uts
Z(?=;Z ; rint (breaking the first segment in two would result in invalid syntax)
按顺序应用正则表达式替换,可以为我们提供:
print "Z;Z;rint;Z;Z(?=;Z);rint" # replace each "uts" with "Z"
puts "Z;Z;uts;Z;Z(?=;Z);uts" # replace each "rint" with "uts"
puts "rint;Z;uts;rint;Z(?=;Z);uts" # replace each "Z" followed by ";Z" with "rint"
运行最后一行为我们提供了将其转换回Python代码的说明。
如果您使用代码大小作为平局,我们真的需要100个字符限制吗?
—
马丁·恩德
@MartinBüttner是的;为什么不?
—
Ypnypn 2014年
当然,但它的字符长于
—
马丁·恩德
\;
;)
C ++不一定兼容C.
—
golfer9338
我认为您可能希望要求周期中的所有程序都不同。如果我错了,请声明-我主张明显的解决方案。
—
彼得·泰勒