很多時候在用線上解題,常會有那種,給的預設測資明明就過了,debug了很久也找不到那底哪裡有錯的情況。
當然現在google幾乎都能找到別人的code,但是直接抄的話一點意義也沒有,就算是參考,學習的效率也會大打折扣的。
這裡提供一個可以拿到大量測資比對的方法。
很多online judge的測資都很有規律性,例如直接1到1000000,或是丟幾個left,right指令等,這種時候我們可以利用網路上的正確解答去拿到幾乎所有的測試資料。
例如測資為輸入a, b,0< a,b <1000000。
以下為ruby解
File.open('test_data.txt', 'w') do |file|
(1...1000000).each do |i|
file.write("#{i} #{i}\n")
end
end
然後 ./online_code < test_data.txt > answer.txt
將輸入資料打進google找到的正確程式 然後將解答輸出至answer.txt中
一樣對自己的程式做一次
./your_code < test_data.txt > result.txt
然後
diff answer.txt result.txt
很容易就能找到自己錯誤的部分啦
算是一個不錯的找bug方式啦
以上為類unix環境的寫法
windows的話基本上也是換個語法就行了吧