diff options
| author | Abigail <abigail@abigail.freedom.nl> | 2022-01-06 20:03:30 +0100 |
|---|---|---|
| committer | Abigail <abigail@abigail.freedom.nl> | 2022-01-06 20:04:21 +0100 |
| commit | 8775dec9b972b5df9de24f9beb171656361e1bad (patch) | |
| tree | e4905902a402c04edf9efbcd03d2661404cdee57 /challenge-003 | |
| parent | 5b9b66407e7630bcbed0e88cdf7a37ed1bdf1cf5 (diff) | |
| download | perlweeklychallenge-club-8775dec9b972b5df9de24f9beb171656361e1bad.tar.gz perlweeklychallenge-club-8775dec9b972b5df9de24f9beb171656361e1bad.tar.bz2 perlweeklychallenge-club-8775dec9b972b5df9de24f9beb171656361e1bad.zip | |
Week 003 & Week 123: Scheme solution for part 1
Diffstat (limited to 'challenge-003')
| -rw-r--r-- | challenge-003/abigail/README.md | 1 | ||||
| -rw-r--r-- | challenge-003/abigail/scheme/ch-1.scm | 43 |
2 files changed, 44 insertions, 0 deletions
diff --git a/challenge-003/abigail/README.md b/challenge-003/abigail/README.md index 5a50b02ed5..59a58a6ead 100644 --- a/challenge-003/abigail/README.md +++ b/challenge-003/abigail/README.md @@ -14,6 +14,7 @@ * [Python](python/ch-1.py) * [R](r/ch-1.r) * [Ruby](ruby/ch-1.rb) +* [Scheme](scheme/ch-1.scm) * [Tcl](tcl/ch-1.tcl) diff --git a/challenge-003/abigail/scheme/ch-1.scm b/challenge-003/abigail/scheme/ch-1.scm new file mode 100644 index 0000000000..32a0facf6c --- /dev/null +++ b/challenge-003/abigail/scheme/ch-1.scm @@ -0,0 +1,43 @@ +#!/usr/local/bin/guile +!# + +;;; +;;; See https://theweeklychallenge.org/blog/perl-weekly-challenge-003 +;;; + +;;; +;;; Run as: guile --no-auto-compile ch-1.scm +;;; + + +(use-modules (ice-9 rdelim)) + + +(define (ugly uglylist mx next_2 next_3 next_5) + (define mymin) + (cond ((= mx (length uglylist)) (list-ref uglylist (- mx 1))) + (else + (set! mymin (min (* 2 (list-ref uglylist next_2)) + (* 3 (list-ref uglylist next_3)) + (* 5 (list-ref uglylist next_5)))) + + (ugly (append uglylist (list mymin) ) + mx + (if (<= (* 2 (list-ref uglylist next_2)) mymin) + (+ next_2 1) next_2) + (if (<= (* 3 (list-ref uglylist next_3)) mymin) + (+ next_3 1) next_3) + (if (<= (* 5 (list-ref uglylist next_5)) mymin) + (+ next_5 1) next_5))))) + +(define (main) + (define mx (read-line)) + (if (not (eof-object? mx)) + (begin + (display (ugly (list 1) (string->number mx) 0 0 0))(newline) + (main) + ) + ) +) + +(main) |
