我用 Ruby 编写了下面的代码片段来读取文件(该文件的每一行都有一些数字)下面的代码片段确定该数字是否为 self-describing number还是不?
如果数字是自描述数字,则下面的代码片段应生成 1 的输出;如果数字不是自描述数字,则应生成 0 的输出。
该代码似乎在我的本地计算机上运行良好,但是当我将其提交给接受这些问题解决方案的在线挑战时,它要求退出状态为 0。
所以,我在最后添加了这一行:
system(exit 0)
但是我对这个问题的解决方案仍然失败,只是因为退出状态问题。快速 bash 命令如下:
jasdeep:code$ ./self-def.rb myfile.txt ; echo $?
在输出末尾返回 0 - 这意味着程序实际上正在退出,退出状态为 0。
我的退出状态有问题吗?
#!/usr/local/bin/ruby
filename = ARGV[0]
file = File.new(filename, "r")
while (line = file.gets)
array = line.scan(/./)
new_array = Array.new
array.length.times do |var|
new_array << array.count(var.to_s).to_s
end
if new_array.eql? array
puts "1"
else
puts "0"
end
end
file.close
最佳答案
默认情况下,如果脚本执行过程中没有出现异常,或者没有以特定代码退出,则应用程序的退出代码将为 0。我认为这是每种编程语言的标准。
例如,要在 Windows 上进行测试:
c:\> ruby my_script.rb
c:\> echo %errorlevel%
0
在 Unix 系统上:
$ ruby my_script.rb
$ echo $?
0
因此,如果您的脚本中没有发生意外的事情,则问题出在(正如您自己发现的)服务器端。
关于确定自描述数字的 ruby 代码 - 退出状态问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6522345/