From 5c3be6486e33ee6327f374b90abd49fb2ce3cd5b Mon Sep 17 00:00:00 2001 From: Abigail Date: Tue, 4 Jan 2022 21:22:57 +0100 Subject: Week 1: Scheme solutions --- challenge-001/abigail/README.md | 2 ++ challenge-001/abigail/scheme/ch-1.scm | 26 ++++++++++++++++++++++++++ challenge-001/abigail/scheme/ch-2.scm | 31 +++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 challenge-001/abigail/scheme/ch-1.scm create mode 100644 challenge-001/abigail/scheme/ch-2.scm diff --git a/challenge-001/abigail/README.md b/challenge-001/abigail/README.md index 3965e2b75b..363ae8067d 100644 --- a/challenge-001/abigail/README.md +++ b/challenge-001/abigail/README.md @@ -26,6 +26,7 @@ count the number of time we encountered an 'e'. * [R](r/ch-1.r) * [Ruby](ruby/ch-1.rb) * [Tcl](tcl/ch-1.tcl) +* [Scheme](scheme/ch-1.scm) ## [Challenge #2](https://perlweeklychallenge.org/blog/perl-weekly-challenge-001/#challenge-2) @@ -56,3 +57,4 @@ upper bound from STDIN. * [R](r/ch-2.r) * [Ruby](ruby/ch-2.rb) * [Tcl](tcl/ch-2.tcl) +* [Scheme](scheme/ch-2.scm) diff --git a/challenge-001/abigail/scheme/ch-1.scm b/challenge-001/abigail/scheme/ch-1.scm new file mode 100644 index 0000000000..f1180850e1 --- /dev/null +++ b/challenge-001/abigail/scheme/ch-1.scm @@ -0,0 +1,26 @@ +;;; +;;; See https://theweeklychallenge.org/blog/perl-weekly-challenge-001 +;;; + +;;; +;;; Run as: guile --no-auto-compile ch-1.scm +;;; + + +(use-modules (ice-9 rdelim)) +(use-modules (ice-9 string-fun)) + +(define (main) + (define line (read-line)) + (if (not (eof-object? line)) + (begin + (display (string-replace-substring line "e" "E")) + (newline) + (display (string-count line #\e)) + (newline) + (main) + ) + ) +) + +(main) diff --git a/challenge-001/abigail/scheme/ch-2.scm b/challenge-001/abigail/scheme/ch-2.scm new file mode 100644 index 0000000000..f918118f17 --- /dev/null +++ b/challenge-001/abigail/scheme/ch-2.scm @@ -0,0 +1,31 @@ +;;; +;;; See https://theweeklychallenge.org/blog/perl-weekly-challenge-001 +;;; + +;;; +;;; Run as: guile --no-auto-compile ch-2.scm +;;; + + +(use-modules (ice-9 rdelim)) + +(define (show i) + (cond ((= (euclidean-remainder i 15) 0) "fizzbuzz") + ((= (euclidean-remainder i 5) 0) "buzz") + ((= (euclidean-remainder i 3) 0) "fizz" ) + (else i)) +) + +(define (main) + (define max (read-line)) + (if (not (eof-object? max)) + (begin + (do ((i 1 (1+ i))) + ((> i (string->number max))) + (display (show i)) (newline)) + (main) + ) + ) +) + +(main) -- cgit