您已经被分配了一个任务来编写一个程序,该程序以一个多图作为输入,如果它包含一个Eularian电路,则返回一个。否则,程序的行为是不明确的,根据你老板交给你的规格说明。
然而,您最近发现了您的新同事Steven几次不小心地处理C中未定义的行为,并敦促他更加小心,因为未定义的行为也可能意味着系统上的所有文件都会被删除。现在,他敢让您编写程序,使其在发生上述(以前)未定义行为的情况时自行删除。你不想失去你的荣誉和接受。
欧拉电路是无向多路图中的一个电路,它只访问每条边一次。
您可以自己选择程序输入和输出的格式。它们不需要是相同的格式。例如,您可以对边缘进行如下描述
({1,2},{1,4},{2,4},{2,3},{2,3})作为您对此图的输入

,但是返回一个顶点序列作为输出:
(1,2,3,2,4,1)您不需要能够接受包含无边顶点的多图。
只在RAM中保存您的程序,然后终止它不算作删除它。需要在文件里。只有当输入多图中不存在欧拉电路时,才必须删除该文件。
顶点必须是可识别的(需要在程序输出的输入中告诉欧拉电路),但是边不能。但是,你可以限制识别的手段(例如,只有正整数或者只有由一个#和一个正整数组成的字符串),只要大图是可表示的(只有一个英文字母表是不够的)。标识符不必是显式的。例如,您可以让输入的顺序确定输出中用哪个顶点标识的数字。
输出的方式(保存到文件中,打印在stdout上,函数的返回值)并不重要。
您不能依赖磁盘上程序的名称而不更改。如果只编写函数,则仍然必须删除磁盘上的文件。
这是代码高尔夫,最短代码获胜。
对此链接的扰流警告:可以在互联网上找到解决此问题的简单算法。
发布于 2017-01-11 01:25:08
FindEulerianCycle@#/.{}->DeleteFile@FileNames[]&是的,这里面有个内饰。如果没有欧拉循环,它将返回{},因此我们手动将其重定向到一个命令,删除当前工作目录中的所有文件。
https://codegolf.stackexchange.com/questions/106423
复制相似问题