aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorinoas <mail@inoas.com>2022-04-12 21:04:33 +0200
committerLouis Pilfold <louis@lpil.uk>2022-04-16 10:23:34 +0100
commit6a345a4c0b18ce2f0ade80a99186518579898fc9 (patch)
tree03ea450b016350ce50994ebf4097927547c38d1b
parent1bfccbf42ffa22c20602dc4553d200a1ca1cc658 (diff)
downloadgleam_stdlib-6a345a4c0b18ce2f0ade80a99186518579898fc9.tar.gz
gleam_stdlib-6a345a4c0b18ce2f0ade80a99186518579898fc9.zip
add int.distance()
-rw-r--r--src/gleam/int.gleam15
-rw-r--r--test/gleam/int_test.gleam26
2 files changed, 41 insertions, 0 deletions
diff --git a/src/gleam/int.gleam b/src/gleam/int.gleam
index 1a31c0c..f23f0f9 100644
--- a/src/gleam/int.gleam
+++ b/src/gleam/int.gleam
@@ -18,6 +18,21 @@ pub fn absolute_value(num: Int) -> Int {
}
}
+/// Returns the absolute distance of the inputs as a positive Int
+///
+/// ## Examples
+///
+/// > distance(-10, 10)
+/// 20
+///
+/// > distance(0.0, -2)
+/// 2
+///
+pub fn distance(a: Int, b: Int) -> Int {
+ a - b
+ |> absolute_value()
+}
+
/// Parses a given string as an int if possible.
///
/// ## Examples
diff --git a/test/gleam/int_test.gleam b/test/gleam/int_test.gleam
index 4cd8e32..510e166 100644
--- a/test/gleam/int_test.gleam
+++ b/test/gleam/int_test.gleam
@@ -15,6 +15,32 @@ pub fn absolute_value_test() {
|> should.equal(123)
}
+pub fn distance_test() {
+ int.distance(0, 0)
+ |> should.equal(0)
+
+ int.distance(1, 2)
+ |> should.equal(1)
+
+ int.distance(2, 1)
+ |> should.equal(1)
+
+ int.distance(-1, 0)
+ |> should.equal(1)
+
+ int.distance(0, -1)
+ |> should.equal(1)
+
+ int.distance(10, 20)
+ |> should.equal(10)
+
+ int.distance(-10, -20)
+ |> should.equal(10)
+
+ int.distance(-10, 10)
+ |> should.equal(20)
+}
+
pub fn clamp_test() {
int.clamp(40, min: 30, max: 50)
|> should.equal(40)