aboutsummaryrefslogtreecommitdiff
path: root/challenge-003
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.freedom.nl>2022-01-06 20:03:30 +0100
committerAbigail <abigail@abigail.freedom.nl>2022-01-06 20:04:21 +0100
commit8775dec9b972b5df9de24f9beb171656361e1bad (patch)
treee4905902a402c04edf9efbcd03d2661404cdee57 /challenge-003
parent5b9b66407e7630bcbed0e88cdf7a37ed1bdf1cf5 (diff)
downloadperlweeklychallenge-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.md1
-rw-r--r--challenge-003/abigail/scheme/ch-1.scm43
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)