diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-03-24 16:06:55 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-24 16:06:55 +0000 |
| commit | 7bc10daae8f5fe7847f3e02edee0010fd1cadc46 (patch) | |
| tree | ae37ebf6bc38c04974204edda3416c53ab251cea /challenge-261 | |
| parent | 164824b8f7fb1b67a76c0bbae740a9098e6619f1 (diff) | |
| parent | 45c051a2aea6c3ac81c7466a965c9e4cd9124a0a (diff) | |
| download | perlweeklychallenge-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
Diffstat (limited to 'challenge-261')
| -rw-r--r-- | challenge-261/lance-wicks/roc/main.roc | 64 |
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 |
