Advertisement
Guest User

Untitled

a guest
Feb 14th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.19 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement