aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-03-24 16:06:55 +0000
committerGitHub <noreply@github.com>2024-03-24 16:06:55 +0000
commit7bc10daae8f5fe7847f3e02edee0010fd1cadc46 (patch)
treeae37ebf6bc38c04974204edda3416c53ab251cea
parent164824b8f7fb1b67a76c0bbae740a9098e6619f1 (diff)
parent45c051a2aea6c3ac81c7466a965c9e4cd9124a0a (diff)
downloadperlweeklychallenge-club-7bc10daae8f5fe7847f3e02edee0010fd1cadc46.tar.gz
perlweeklychallenge-club-7bc10daae8f5fe7847f3e02edee0010fd1cadc46.tar.bz2
perlweeklychallenge-club-7bc10daae8f5fe7847f3e02edee0010fd1cadc46.zip
Merge pull request #9796 from lancew/week-261-roc
Adding a roc-lang version for week 261
-rw-r--r--challenge-261/lance-wicks/roc/main.roc64
1 files changed, 64 insertions, 0 deletions
diff --git a/challenge-261/lance-wicks/roc/main.roc b/challenge-261/lance-wicks/roc/main.roc
new file mode 100644
index 0000000000..5dd480a84b
--- /dev/null
+++ b/challenge-261/lance-wicks/roc/main.roc
@@ -0,0 +1,64 @@
+app "hello"
+ packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.8.1/x8URkvfyi9I0QhmVG98roKBUs_AZRkLFwFJVJ3942YA.tar.br" }
+ imports [pf.Stdout]
+ provides [main] to pf
+
+main =
+ dbg elementSum [1,2,3,45]
+ dbg digitSum [1,2,3,45]
+ dbg absDiff [1,2,3,45]
+ #Stdout.line (Num.toStr (absDiff ints))
+
+
+ Stdout.line "run this with 'roc dev'"
+
+
+absDiff = \ints ->
+ Num.absDiff (elementSum ints) (digitSum ints)
+
+
+elementSum = \ints ->
+ ints
+ |> List.walk 0 Num.add
+
+digitSum = \list ->
+ List.map list (\n ->
+ if n < 11 then
+ n + 0
+ else
+ digits n
+ |> List.sum
+ )
+ |> List.sum
+
+
+digits = \num ->
+ helper = \list, n ->
+ if n == 0 then
+ list
+ else
+ list
+ |> List.append (Num.rem n 10)
+ |> helper (n // 10)
+ helper [] num
+ |> List.reverse
+
+
+# TESTS
+# Example 1
+expect elementSum [1,2,3,45] == 51
+expect digitSum [1,2,3,45] == 15
+expect absDiff [1,2,3,45] == 36
+
+# Example 2
+expect elementSum [1,12,3] == 16
+expect digitSum [1,12,3] == 7
+expect absDiff [1,12,3] == 9
+
+# Example 3
+expect elementSum [1,2,3,4] == 10
+expect digitSum [1,2,3,4] == 10
+expect absDiff [1,2,3,4] == 0
+
+# Example 4
+expect absDiff [236, 416, 336, 350] == 1296