Guest User

Untitled

a guest
Feb 16th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. # Elixir script to calculate final grades
  2.  
  3. defmodule Test do
  4. @max_grade 100
  5.  
  6. def grade(questions, right_answers)
  7. when is_integer(questions) and is_integer(right_answers) do
  8. balls_per_question =
  9. if questions == 0 do
  10. 0
  11. else
  12. @max_grade / questions
  13. end
  14. right_answers * balls_per_question
  15. end
  16.  
  17. def test() do
  18. [
  19. grade(20, 20) == @max_grade,
  20. grade(19, 19) == @max_grade,
  21. grade(20, 19) < @max_grade,
  22. grade(19, 18) < @max_grade,
  23. grade(0, 20) == 0,
  24. grade(0, 19) == 0
  25. ]
  26. end
  27. end
  28.  
  29. if Test.test() |> Enum.all?() do
  30. IO.puts "all tests passed"
  31. end
  32.  
  33. IO.puts "original grade = #{Test.grade(20, 18)}"
  34. IO.puts "new grade = #{Test.grade(19, 17)}"
  35. IO.puts "----------------------------------------------"
  36. IO.puts "(wrong answer removed) original grade = #{Test.grade(20, 17)}"
  37. IO.puts "(wrong answer removed) new grade = #{Test.grade(19, 17)}"
  38.  
  39. # output:
  40.  
  41. $ elixir test.exs
  42. all tests passed
  43. original grade = 90.0
  44. new grade = 89.47368421052633
  45. ----------------------------------------------
  46. (wrong answer removed) original grade = 85.0
  47. (wrong answer removed) new grade = 89.47368421052633
Add Comment
Please, Sign In to add comment