Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 4.99 KB | None | 0 0
  1. (* Licensed under Do What the Fuck You Want to Public License *)
  2. (* Copyright 2017 Mateusz Gienieczko                          *)
  3. (* With the exception of III OI tests as stated below         *)
  4. open Przelewanka;;
  5.  
  6. Printf.printf "\027[33m
  7. =============================================================================
  8. Mateusz Gienieczko's tests to Przelewanka task.
  9. (I learnt how to use colors, now nothing's the same.)
  10. The tests' author is me, unless explicitly stated otherwise.
  11. =============================================================================";;
  12. print_newline ();;
  13.  
  14. let num = ref 1;;
  15.  
  16. let test a answ =
  17.   Printf.printf "\027[34mTest #%d: \027[31m" !num;
  18.   flush stdout;
  19.   incr num;
  20.   let start_time = Sys.time ()
  21.   in
  22.   let usr_answ = przelewanka a
  23.   in
  24.   if answ <> usr_answ then
  25.     Printf.printf "\027[31mWrong answer: read %d, expected %d " usr_answ answ
  26.   else
  27.     Printf.printf "\027[32mOK ";
  28.   Printf.printf "in %.2f s" ((Sys.time ()) -. start_time);
  29.   print_newline ();
  30.   answ = usr_answ
  31. ;;
  32.  
  33. Printf.printf "\027[34mBeginning simple, small tests";;
  34. print_newline ();;
  35.  
  36. let a = [|(1, 1); (2, 1)|];;
  37. assert(test a 2);;
  38.  
  39. let a = [||];;
  40. assert(test a 0);;
  41.  
  42. let a = [|(10, 5); (4, 3); (3, 2); (2, 0)|];;
  43. assert(test a 5);;
  44.  
  45. let a = [|(50, 50); (50, 48); (2, 2)|];;
  46. assert(test a 3);;
  47.  
  48. let a = [|(50, 50); (50, 47); (2, 2)|];;
  49. assert(test a (-1));;
  50.  
  51. let a = [|(13, 9); (17, 3); (7, 2); (2, 2)|];;
  52. assert(test a 9);;
  53.  
  54. let a = [|(1, 0); (1000000, 999999)|];;
  55. assert(test a 3);;
  56.  
  57. let a = [|(1, 0); (1000000, 999997)|];;
  58. assert(test a 7);;
  59.  
  60. let a = [|(9, 6); (12, 9); (12, 3); (999, 411)|];;
  61. assert(test a (-1));;
  62.  
  63. let a = [|(37, 35); (55, 36)|];;
  64. assert(test a (-1));;
  65.  
  66. let a = [|(2, 1); (0, 0); (4, 2);|];;
  67. assert(test a (-1));;
  68.  
  69. let a = [|(0, 0); (0, 0); (0, 0); (0, 0); (0, 0); (0, 0); (99, 66); (3, 3)|];;
  70. assert(test a 22);;
  71.  
  72. let a = [|(37, 3); (42, 37); (69, 33)|];;
  73. assert(test a (-1));;
  74.  
  75. let a = [|(1, 0); (1000, 999); (1000000, 999999); (1000000000000, 999999999999)|];;
  76. assert(test a 9);;
  77.  
  78. let a = [|(24, 13); (12, 5); (6, 2); (1, 0)|];;
  79. assert(test a 10);;
  80.  
  81. let a = [|(100, 0); (50, 0); (100000, 0); (35, 0)|];;
  82. assert(test a 0);;
  83.  
  84. Printf.printf "\027[33m\
  85. =============================================================================
  86. These may take a little longer, but not more than 10 - 30 seconds each
  87. =============================================================================";;
  88. print_newline ();;
  89.  
  90. let a = [|(100, 50); (1000, 500); (50, 25); (5, 5)|];;
  91. assert(test a 20);;
  92.  
  93. let a = [|(1, 0); (2, 1); (4, 3); (8, 7); (16, 15); (32, 31)|];;
  94. assert(test a 11);;
  95.  
  96. let a = [|(100, 33); (25, 11); (13, 11); (3, 0); (1, 1)|];;
  97. assert(test a 13);;
  98.  
  99. let a = [|(1, 0); (2, 1); (3, 1); (4, 2); (5, 2); (6, 3); (7, 3); (8, 4)|];;
  100. assert(test a 10);;
  101.  
  102. let a = [|(6, 3); (9, 3); (12, 3); (15, 3); (18, 3); (477, 3); (0, 0)|];;
  103. assert(test a (-1));;
  104.  
  105. let a = [|(1000, 999); (2000, 1998); (2, 0); (0, 0)|];;
  106. assert(test a (-1));;
  107.  
  108. let a = [|(1000, 498); (2000, 1498); (2, 0)|];;
  109. assert(test a 503);;
  110.  
  111. let a = [|(1, 0); (77, 43); (150, 149); (333, 37); (37, 2)|];;
  112. assert(test a 12);;
  113.  
  114. let a = [|(5, 0); (50, 25); (500, 200); (2500, 1500)|];;
  115. assert(test a 23);;
  116.  
  117. let a = [|(1, 0); (1000000, 500002)|];;
  118. assert(test a 999997);;
  119.      
  120. let a = [|(1, 0); (1000000, 499991)|];;
  121. assert(test a 999982);;
  122.  
  123. let a = [|(831, 132); (17, 3); (81, 54); (9, 9)|];;
  124. assert(test a 22);;
  125.  
  126. let a = [|(4, 0); (6, 4); (20, 12); (50, 20); (101, 98)|];;
  127. assert(test a 13);;
  128.  
  129. let a = [|(3, 3); (11, 8); (22222, 12321)|];;
  130. assert(test a 1807);;
  131.  
  132. let a = [|(999, 1); (100, 1); (1000, 1); (0, 0)|];;
  133. assert(test a (-1));;
  134.  
  135. let a = [|(999,1); (100, 1); (1000, 1); (2, 0); (8, 1)|];;
  136. assert(test a 13);;
  137.  
  138. Printf.printf "\027[33m\
  139. =============================================================================
  140. Following tests are from III Polish Olympiad in\
  141. Informatics, task \"Mokra robota\".\
  142. The task's author is Piotr Chrzastowski-Wachtel.
  143. =============================================================================";;
  144. print_newline ();;
  145.  
  146. let a = [|(20, 10); (10, 16)|];;
  147. assert(test a (-1));;
  148.  
  149. let a = [|(3, 0); (5, 0); (5, 4)|];;
  150. assert(test a 7);;
  151.  
  152. let a = [|(5, 0); (7, 0); (7, 6)|];;
  153. assert(test a 11);;
  154.  
  155. let a = [|(5, 0); (7, 0); (7, 2)|];;
  156. assert(test a 3);;
  157.  
  158. let a = [|(15, 14); (18, 0); (22, 0)|];;
  159. assert(test a 6);;
  160.  
  161. let a = [|(1, 1); (2, 2); (3, 3); (4, 4)|];;
  162. assert(test a 4);;
  163.  
  164. let a = [|(30, 0); (17, 17)|];;
  165. assert(test a 1);;
  166.  
  167. let a = [|(6, 3)|];;
  168. assert(test a (-1));;
  169.  
  170. let a = [|(26, 3); (28, 1); (30, 1); (32, 1)|];;
  171. assert(test a (-1));;
  172.  
  173. let a = [|(21, 1); (22, 20); (23, 22); (24, 0)|];;
  174. assert(test a 9);;
  175.  
  176. let a = [|(31, 0); (33, 17); (35, 14); (37, 35)|];;
  177. assert(test a 16);;
  178.  
  179. Printf.printf "\027[33m\
  180. =============================================================================
  181. All tests \027[32mOK!
  182. \027[33m\
  183. =============================================================================";;
  184. print_newline ();;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement