【发布时间】:2013-03-07 05:10:13
【问题描述】:
我正在组织一场编程比赛。我需要创建一个程序来逐个字符地检查另一个程序(参与者的可执行文件)的输出。要求是:
- 程序必须是
platform independent。 - 参与者不能使用输入和正确的输出。参与者所做的只是将他的程序名称传递给检查器。检查器告诉答案是否正确,就是这样。
- 参与者程序的输出不得显示给参与者本人 - 否则他可能会据此计算输入。
对于第二部分,是否可以以某种方式将输入和输出存储在可执行文件本身中?我宁愿不从加密文件中读取..这让事情有点不方便..
程序应该像这样工作:
checker.exe question1.exe
正确答案,恭喜!
请把这个给志愿者看。
我尝试使用标准 C 库中的 popen 和 pclose 函数。
但问题在于,在 Linux 中,它会打开一个 shell,显示参与者程序的输出,根据第三个要求,这不应该发生。
有什么简单的方法可以做到这一点?提前致谢。
编辑:
我需要将针对每个问题制作的可执行文件专门交给参与者。
【问题讨论】:
-
显示您的代码会有所帮助。我认为您不需要在 C 中执行此操作——当我需要制作这样的脚本时,一个简单的 shell 脚本可以正常工作。我不再拥有它了(那是 15 年前的事了)。
-
用代码编写它,将其存储在数据库中,将其存储在网络服务器上并使用套接字发出请求。尽管最简单的方法是将其存储在代码中,但其中任何一个都应该有效。
-
一个非常聪明的竞争对手会编写一个程序来清除屏幕并逐字生成如上所示的输出......你怎么知道?
-
该程序是否将由参与者自己运行?那么就没有办法控制参与者按原样打印输入:) 您应该让用户将他的程序上传到您的服务器,这将运行程序并验证并返回结果 - 如果程序正确或不是。
-
@Hogan 我需要将可执行文件交给参与者。