Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
f63288fd8f | ||
![]() |
4d82c3d2a2 | ||
![]() |
01c487374d | ||
![]() |
d9ed6dec0f |
@@ -11,30 +11,30 @@ defmodule Equalities do
|
||||
|
||||
# Replace ___ with the answer to make the koan pass.
|
||||
koan "We shall contemplate truth by testing reality, via equality" do
|
||||
assert true == ___
|
||||
assert true == true
|
||||
end
|
||||
|
||||
koan "Not something is the opposite of it" do
|
||||
assert !true == ___
|
||||
assert !true == false
|
||||
end
|
||||
|
||||
koan "To understand reality, we must compare our expectations against reality" do
|
||||
assert 2 == 1 + ___
|
||||
assert 2 == 1 + 1
|
||||
end
|
||||
|
||||
koan "Some things may appear different, but be the same" do
|
||||
assert 1 == 2 / ___
|
||||
assert 1 == 2 / 2
|
||||
end
|
||||
|
||||
koan "Unless they actually are different" do
|
||||
assert 3.2 != ___
|
||||
assert 3.2 != 3
|
||||
end
|
||||
|
||||
koan "Some may be looking for bigger things" do
|
||||
assert ___ > 3
|
||||
assert 4 > 3
|
||||
end
|
||||
|
||||
koan "Others are happy with less" do
|
||||
assert ___ < 3
|
||||
assert 2 < 3
|
||||
end
|
||||
end
|
||||
|
@@ -5,42 +5,42 @@ defmodule Strings do
|
||||
@intro "Strings"
|
||||
|
||||
koan "Strings are there to represent text" do
|
||||
assert "hello" == ___
|
||||
assert "hello" == "hello"
|
||||
end
|
||||
|
||||
koan "Values may be inserted into strings by interpolation" do
|
||||
assert "1 + 1 = #{1 + 1}" == ___
|
||||
assert "1 + 1 = #{1 + 1}" == "1 + 1 = 2"
|
||||
end
|
||||
|
||||
koan "They can be put together" do
|
||||
assert "hello world" == ___ <> "world"
|
||||
assert "hello world" == "hello " <> "world"
|
||||
end
|
||||
|
||||
koan "Or pulled apart into a list when needed" do
|
||||
assert ["hello", "world"] == String.split(___, " ")
|
||||
assert ["hello", "world"] == String.split("hello world", " ")
|
||||
end
|
||||
|
||||
koan "Be careful, a message may be altered" do
|
||||
assert String.replace("An awful day", "awful", "incredible") == ___
|
||||
assert String.replace("An awful day", "awful", "incredible") == "An incredible day"
|
||||
end
|
||||
|
||||
koan "But strings never lie about themselves" do
|
||||
assert true == String.contains?("An incredible day", ___)
|
||||
assert true == String.contains?("An incredible day", "day")
|
||||
end
|
||||
|
||||
koan "Sometimes you want just the opposite of what is given" do
|
||||
assert ___ == String.reverse("ananab")
|
||||
assert "banana" == String.reverse("ananab")
|
||||
end
|
||||
|
||||
koan "Other times a little cleaning is in order" do
|
||||
assert String.trim(" \n banana\n ") == ___
|
||||
assert String.trim(" \n banana\n ") == "banana"
|
||||
end
|
||||
|
||||
koan "Repetition is the mother of learning" do
|
||||
assert String.duplicate("String", 3) == ___
|
||||
assert String.duplicate("String", 3) == "StringStringString"
|
||||
end
|
||||
|
||||
koan "Strings can be louder when necessary" do
|
||||
assert String.upcase("listen") == ___
|
||||
assert String.upcase("listen") == "LISTEN"
|
||||
end
|
||||
end
|
||||
|
@@ -6,129 +6,129 @@ defmodule Numbers do
|
||||
@intro "Why is the number six so scared? Because seven eight nine!\nWe should get to know numbers a bit more!"
|
||||
|
||||
koan "Is an integer equal to its float equivalent?" do
|
||||
assert 1 == 1.0 == ___
|
||||
assert 1 == 1.0 == true
|
||||
end
|
||||
|
||||
koan "Is an integer threequal to its float equivalent?" do
|
||||
assert 1 === 1.0 == ___
|
||||
assert 1 === 1.0 == false
|
||||
end
|
||||
|
||||
koan "Revisit division with threequal" do
|
||||
assert 2 / 2 === ___
|
||||
assert 2 / 2 === 1.0
|
||||
end
|
||||
|
||||
koan "Another way to divide" do
|
||||
assert div(5, 2) == ___
|
||||
assert div(5, 2) == 2
|
||||
end
|
||||
|
||||
koan "What remains or: The Case of the Missing Modulo Operator (%)" do
|
||||
assert rem(5, 2) == ___
|
||||
assert rem(5, 2) == 1
|
||||
end
|
||||
|
||||
koan "Other math operators may produce this" do
|
||||
assert 2 * 2 === ___
|
||||
assert 2 * 2 === 4
|
||||
end
|
||||
|
||||
koan "Or other math operators may produce this" do
|
||||
assert 2 * 2.0 === ___
|
||||
assert 2 * 2.0 === 4.0
|
||||
end
|
||||
|
||||
koan "Two ways to round, are they exactly the same?" do
|
||||
assert Float.round(1.2) === round(1.2) == ___
|
||||
assert Float.round(1.2) === round(1.2) == false
|
||||
end
|
||||
|
||||
koan "Release the decimals into the void" do
|
||||
assert trunc(5.6) === ___
|
||||
assert trunc(5.6) === 5
|
||||
end
|
||||
|
||||
koan "Are you odd?" do
|
||||
assert Integer.is_odd(3) == ___
|
||||
assert Integer.is_odd(3) == true
|
||||
end
|
||||
|
||||
koan "Actually you might be even" do
|
||||
assert Integer.is_even(4) == ___
|
||||
assert Integer.is_even(4) == true
|
||||
end
|
||||
|
||||
koan "Let's grab the individual digits in a list" do
|
||||
individual_digits = Integer.digits(58_127)
|
||||
assert individual_digits == ___
|
||||
assert individual_digits == [5, 8, 1, 2, 7]
|
||||
end
|
||||
|
||||
koan "Oh no! I need it back together" do
|
||||
number = Integer.undigits([1, 2, 3, 4])
|
||||
|
||||
assert number == ___
|
||||
assert number == 1234
|
||||
end
|
||||
|
||||
koan "Actually I want my number as a string" do
|
||||
string_digit = Integer.to_string(1234)
|
||||
|
||||
assert string_digit == ___
|
||||
assert string_digit == "1234"
|
||||
end
|
||||
|
||||
koan "The meaning of life in hexadecimal is 2A!" do
|
||||
assert Integer.parse("2A", 16) == {___, ""}
|
||||
assert Integer.parse("2A", 16) == {42, ""}
|
||||
end
|
||||
|
||||
koan "The remaining unparsable part is also returned" do
|
||||
assert Integer.parse("5 years") == {5, ___}
|
||||
assert Integer.parse("5 years") == {5, " years"}
|
||||
end
|
||||
|
||||
koan "What if you parse a floating point value as an integer?" do
|
||||
assert Integer.parse("1.2") == {___, ___}
|
||||
assert Integer.parse("1.2") == {1, ".2"}
|
||||
end
|
||||
|
||||
koan "Just want to parse to a float" do
|
||||
assert Float.parse("34.5") == {___, ""}
|
||||
assert Float.parse("34.5") == {34.5, ""}
|
||||
end
|
||||
|
||||
koan "Hmm, I want to parse this but it has some strings" do
|
||||
assert Float.parse("1.5 million dollars") == {___, " million dollars"}
|
||||
assert Float.parse("1.5 million dollars") == {1.5, " million dollars"}
|
||||
end
|
||||
|
||||
koan "I don't want this decimal point, let's round up" do
|
||||
assert Float.ceil(34.25) === ___
|
||||
assert Float.ceil(34.25) === 35.0
|
||||
end
|
||||
|
||||
koan "OK, I only want it to 1 decimal place" do
|
||||
assert Float.ceil(34.25, 1) === ___
|
||||
assert Float.ceil(34.25, 1) === 34.3
|
||||
end
|
||||
|
||||
koan "Rounding down is what I need" do
|
||||
assert Float.floor(99.99) === ___
|
||||
assert Float.floor(99.99) === 99.0
|
||||
end
|
||||
|
||||
koan "Rounding down to 2 decimal places" do
|
||||
assert Float.floor(12.345, 2) === ___
|
||||
assert Float.floor(12.345, 2) === 12.34
|
||||
end
|
||||
|
||||
koan "Round the number up or down for me" do
|
||||
assert Float.round(5.5) === ___
|
||||
assert Float.round(5.4) === ___
|
||||
assert Float.round(8.94, 1) === ___
|
||||
assert Float.round(-5.5674, 3) === ___
|
||||
assert Float.round(5.5) === 6.0
|
||||
assert Float.round(5.4) === 5.0
|
||||
assert Float.round(8.94, 1) === 8.9
|
||||
assert Float.round(-5.5674, 3) === -5.567
|
||||
end
|
||||
|
||||
koan "I want the first and last in the range" do
|
||||
first..last = Range.new(1, 10)
|
||||
|
||||
assert first == ___
|
||||
assert last == ___
|
||||
assert first == 1
|
||||
assert last == 10
|
||||
end
|
||||
|
||||
koan "Does my number exist in the range?" do
|
||||
range = Range.new(1, 10)
|
||||
|
||||
assert 4 in range == ___
|
||||
assert 10 in range == ___
|
||||
assert 0 in range == ___
|
||||
assert 4 in range == true
|
||||
assert 10 in range == true
|
||||
assert 0 in range == false
|
||||
end
|
||||
|
||||
def is_range?(%Range{}), do: true
|
||||
def is_range?(_), do: false
|
||||
|
||||
koan "Is this a range?" do
|
||||
assert is_range?(1..10) == ___
|
||||
assert is_range?(0) == ___
|
||||
assert is_range?(1..10) == true
|
||||
assert is_range?(0) == false
|
||||
end
|
||||
end
|
||||
|
@@ -6,18 +6,18 @@ defmodule Atoms do
|
||||
|
||||
koan "Atoms are constants where their name is their own value" do
|
||||
adam = :human
|
||||
assert adam == ___
|
||||
assert adam == :human
|
||||
end
|
||||
|
||||
koan "It is surprising to find out that booleans are atoms" do
|
||||
assert is_atom(true) == ___
|
||||
assert is_boolean(false) == ___
|
||||
assert true == ___
|
||||
assert false == ___
|
||||
assert is_atom(true) == true
|
||||
assert is_boolean(false) == true
|
||||
assert true == true
|
||||
assert false == false
|
||||
end
|
||||
|
||||
koan "Like booleans, the nil value is also an atom" do
|
||||
assert is_atom(nil) == ___
|
||||
assert nil == ___
|
||||
assert is_atom(nil) == true
|
||||
assert nil == nil
|
||||
end
|
||||
end
|
||||
|
6
mix.lock
6
mix.lock
@@ -1,6 +1,6 @@
|
||||
%{
|
||||
"bunt": {:hex, :bunt, "0.2.1", "e2d4792f7bc0ced7583ab54922808919518d0e57ee162901a16a1b6664ef3b14", [:mix], [], "hexpm", "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5"},
|
||||
"credo": {:hex, :credo, "1.7.1", "6e26bbcc9e22eefbff7e43188e69924e78818e2fe6282487d0703652bc20fd62", [:mix], [{:bunt, "~> 0.2.1", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "e9871c6095a4c0381c89b6aa98bc6260a8ba6addccf7f6a53da8849c748a58a2"},
|
||||
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
|
||||
"credo": {:hex, :credo, "1.7.12", "9e3c20463de4b5f3f23721527fcaf16722ec815e70ff6c60b86412c695d426c1", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8493d45c656c5427d9c729235b99d498bd133421f3e0a683e5c1b561471291e5"},
|
||||
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
|
||||
"jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"},
|
||||
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
|
||||
}
|
||||
|
Reference in New Issue
Block a user