aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-001/abigail/README.md2
-rw-r--r--challenge-001/abigail/scheme/ch-1.scm26
-rw-r--r--challenge-001/abigail/scheme/ch-2.scm31
3 files changed, 59 insertions, 0 deletions
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)