Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Elixir script to calculate final grades
- defmodule Test do
- @max_grade 100
- def grade(questions, right_answers)
- when is_integer(questions) and is_integer(right_answers) do
- balls_per_question =
- if questions == 0 do
- 0
- else
- @max_grade / questions
- end
- right_answers * balls_per_question
- end
- def test() do
- [
- grade(20, 20) == @max_grade,
- grade(19, 19) == @max_grade,
- grade(20, 19) < @max_grade,
- grade(19, 18) < @max_grade,
- grade(0, 20) == 0,
- grade(0, 19) == 0
- ]
- end
- end
- if Test.test() |> Enum.all?() do
- IO.puts "all tests passed"
- end
- IO.puts "original grade = #{Test.grade(20, 18)}"
- IO.puts "new grade = #{Test.grade(19, 17)}"
- IO.puts "----------------------------------------------"
- IO.puts "(wrong answer removed) original grade = #{Test.grade(20, 17)}"
- IO.puts "(wrong answer removed) new grade = #{Test.grade(19, 17)}"
- # output:
- $ elixir test.exs
- all tests passed
- original grade = 90.0
- new grade = 89.47368421052633
- ----------------------------------------------
- (wrong answer removed) original grade = 85.0
- (wrong answer removed) new grade = 89.47368421052633
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement