Description:
make .float checker better
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r239:dbdeebc3336d - - 1 file changed: 13 inserted, 4 deleted
@@ -38,29 +38,38 | |||
|
38 | 38 | result_file.write "Incorrect\n" |
|
39 | 39 | result_file.write "0\n" |
|
40 | 40 | result_file.close |
|
41 | 41 | exit(0) |
|
42 | 42 | } |
|
43 | 43 | |
|
44 | 44 | ################## |
|
45 | 45 | # Your code here # |
|
46 | 46 | ################## |
|
47 | 47 | |
|
48 | 48 | ########### THIS IS FOR CHECKING FLOAT with EPSILON error ########## |
|
49 | 49 | |
|
50 | + | |
|
51 | + def is_float?(fl) | |
|
52 | + !!Float(fl) rescue false | |
|
53 | + end | |
|
54 | + | |
|
50 | 55 | EPSILON = 0.000001 |
|
51 | 56 | |
|
52 | 57 | out_items = output_file_content.split |
|
53 | 58 | ans_items = answer_file_content.split |
|
54 | 59 | |
|
55 | 60 | if out_items.length != ans_items.length |
|
56 | 61 | report_wrong.call |
|
57 | 62 | else |
|
58 | 63 | out_items.length.times do |i| |
|
59 | - out_value = out_items[i].to_f | |
|
60 |
- |
|
|
61 | - if (out_value - ans_value).abs > EPSILON * [out_value.abs,ans_value.abs].max | |
|
62 | - report_wrong.call | |
|
64 | + if is_float?(out_items[i]) && is_float?(ans_items[i]) | |
|
65 | + out_value = out_items[i].to_f | |
|
66 | + ans_value = ans_items[i].to_f | |
|
67 | + if (out_value - ans_value).abs > EPSILON * [out_value.abs,ans_value.abs].max | |
|
68 | + report_wrong.call | |
|
69 | + end | |
|
70 | + else | |
|
71 | + report_wrong.call if out_items[i] != ans_items[i] | |
|
63 | 72 | end |
|
64 | 73 | end |
|
65 | 74 | report_correct.call |
|
66 | 75 | end |
You need to be logged in to leave comments.
Login now