aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-01-04 21:18:56 +0000
committerGitHub <noreply@github.com>2022-01-04 21:18:56 +0000
commitd4cc39535ad0f1a187d755bc6371dcea052dfbb8 (patch)
tree15fe4f106d7b76fffb1240816ca220f54dfb99c9
parentd1581f755d50e5b3a5ccf74a25280f39caa809fc (diff)
parentf1cde8d35ee0e171a8b4090bc8952bdef9e4de1a (diff)
downloadperlweeklychallenge-club-d4cc39535ad0f1a187d755bc6371dcea052dfbb8.tar.gz
perlweeklychallenge-club-d4cc39535ad0f1a187d755bc6371dcea052dfbb8.tar.bz2
perlweeklychallenge-club-d4cc39535ad0f1a187d755bc6371dcea052dfbb8.zip
Merge pull request #5474 from Abigail/abigail/week-001
Abigail/week 001
-rw-r--r--challenge-001/abigail/README.md15
-rw-r--r--challenge-001/abigail/awk/ch-1.awk10
-rw-r--r--challenge-001/abigail/awk/ch-2.awk4
-rw-r--r--challenge-001/abigail/bash/ch-1.sh12
-rw-r--r--challenge-001/abigail/bash/ch-2.sh6
-rw-r--r--challenge-001/abigail/bc/ch-2.bc33
-rw-r--r--challenge-001/abigail/c/ch-1.c8
-rw-r--r--challenge-001/abigail/c/ch-2.c4
-rw-r--r--challenge-001/abigail/go/ch-1.go28
-rw-r--r--challenge-001/abigail/go/ch-2.go38
-rw-r--r--challenge-001/abigail/java/ch-1.java26
-rw-r--r--challenge-001/abigail/java/ch-2.java24
-rw-r--r--challenge-001/abigail/lua/ch-1.lua2
-rw-r--r--challenge-001/abigail/lua/ch-2.lua2
-rw-r--r--challenge-001/abigail/node/ch-1.js10
-rw-r--r--challenge-001/abigail/node/ch-2.js6
-rw-r--r--challenge-001/abigail/pascal/ch-1.p26
-rw-r--r--challenge-001/abigail/pascal/ch-2.p33
-rw-r--r--challenge-001/abigail/perl/ch-1.pl8
-rw-r--r--challenge-001/abigail/perl/ch-2.pl2
-rw-r--r--challenge-001/abigail/python/ch-1.py9
-rw-r--r--challenge-001/abigail/python/ch-2.py14
-rw-r--r--challenge-001/abigail/r/ch-1.r19
-rw-r--r--challenge-001/abigail/r/ch-2.r33
-rw-r--r--challenge-001/abigail/ruby/ch-1.rb2
-rw-r--r--challenge-001/abigail/ruby/ch-2.rb2
-rw-r--r--challenge-001/abigail/scheme/ch-1.scm26
-rw-r--r--challenge-001/abigail/scheme/ch-2.scm31
-rw-r--r--challenge-001/abigail/t/ctest.ini3
-rw-r--r--challenge-001/abigail/tcl/ch-1.tcl21
-rw-r--r--challenge-001/abigail/tcl/ch-2.tcl27
31 files changed, 462 insertions, 22 deletions
diff --git a/challenge-001/abigail/README.md b/challenge-001/abigail/README.md
index 941614e09a..363ae8067d 100644
--- a/challenge-001/abigail/README.md
+++ b/challenge-001/abigail/README.md
@@ -16,11 +16,17 @@ count the number of time we encountered an 'e'.
* [Bash](bash/ch-1.sh)
* [Befunge-93](befunge/ch-1.bf93)
* [C](c/ch-1.c)
+* [Go](go/ch-1.go)
+* [Java](java/ch-1.java)
* [lua](lua/ch-1.lua)
* [Node.js](node/ch-1.js)
+* [Pascal](pascal/ch-1.p)
* [Perl](perl/ch-1.pl)
* [Python](python/ch-1.py)
+* [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)
@@ -33,15 +39,22 @@ be replaced by the word `fizz` and any divisible by `5` by the word
### Note
We will not be assuming a fixed upper bound. Instead, we read the
-upper boad from STDIN.
+upper bound from STDIN.
### Solutions
* [AWK](awk/ch-2.awk)
* [Bash](bash/ch-2.sh)
* [Befunge-93](befunge-93/ch-2.bf93)
+* [bc](bc/ch-2.bc)
* [C](c/ch-2.c)
+* [Go](go/ch-2.go)
+* [Java](java/ch-2.java)
* [lua](lua/ch-2.lua)
* [Node.js](node/ch-2.js)
+* [Pascal](pascal/ch-2.p)
* [Perl](perl/ch-2.pl)
* [Python](python/ch-2.py)
+* [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/awk/ch-1.awk b/challenge-001/abigail/awk/ch-1.awk
index 66adcae5c7..14e0803ccb 100644
--- a/challenge-001/abigail/awk/ch-1.awk
+++ b/challenge-001/abigail/awk/ch-1.awk
@@ -1,3 +1,13 @@
+#!/usr/bin/awk
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
+#
+
+#
+# Run as: awk -f ch-1.awk < input-file
+#
+
{
count = gsub ("e", "E")
print $0
diff --git a/challenge-001/abigail/awk/ch-2.awk b/challenge-001/abigail/awk/ch-2.awk
index 23f8dff855..148f5718ba 100644
--- a/challenge-001/abigail/awk/ch-2.awk
+++ b/challenge-001/abigail/awk/ch-2.awk
@@ -1,5 +1,7 @@
+#!/usr/bin/awk
+
#
-# See ../README.md
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
#
#
diff --git a/challenge-001/abigail/bash/ch-1.sh b/challenge-001/abigail/bash/ch-1.sh
index 7133f8ceb7..2da9870847 100644
--- a/challenge-001/abigail/bash/ch-1.sh
+++ b/challenge-001/abigail/bash/ch-1.sh
@@ -1,3 +1,15 @@
+#!/bin/sh
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
+#
+
+#
+# Run as: bash ch-1.sh < input-file
+#
+
+set -f
+
while read line
do echo "${line//e/E}" # Replace all 'e's with 'E'; print result.
ees="${line//[^e]}" # Remove anything which is not an 'e'.
diff --git a/challenge-001/abigail/bash/ch-2.sh b/challenge-001/abigail/bash/ch-2.sh
index b81a0b0414..54b3efd216 100644
--- a/challenge-001/abigail/bash/ch-2.sh
+++ b/challenge-001/abigail/bash/ch-2.sh
@@ -1,9 +1,11 @@
+#!/bin/sh
+
#
-# See ../README.md
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
#
#
-# Run as: bash ch-1.sh < input-file
+# Run as: bash ch-2.sh < input-file
#
while read max
diff --git a/challenge-001/abigail/bc/ch-2.bc b/challenge-001/abigail/bc/ch-2.bc
new file mode 100644
index 0000000000..f5b05b3464
--- /dev/null
+++ b/challenge-001/abigail/bc/ch-2.bc
@@ -0,0 +1,33 @@
+#!/usr/bin/bc
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
+#
+
+#
+# Run as: bc ch-2.bc < input-file
+#
+
+while (1) {
+ max = read ()
+ if (max == 0) {
+ break
+ }
+ for (i = 1; i <= max; i ++) {
+ if (i % 15 == 0) {
+ "fizzbuzz"
+ }
+ if (i % 15 != 0 && i % 5 == 0) {
+ "buzz"
+ }
+ if (i % 15 != 0 && i % 3 == 0) {
+ "fizz"
+ }
+ if (i % 5 == 0 || i % 3 == 0) {
+ "
+"
+ } else {
+ i
+ }
+ }
+}
diff --git a/challenge-001/abigail/c/ch-1.c b/challenge-001/abigail/c/ch-1.c
index fabd2d2f22..27924d6523 100644
--- a/challenge-001/abigail/c/ch-1.c
+++ b/challenge-001/abigail/c/ch-1.c
@@ -2,6 +2,14 @@
# include <stdio.h>
# include <string.h>
+/*
+ * See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
+ */
+
+/*
+ * Run as: cc -o ch-1.o ch-1.c; ./ch-1.o < input-file
+ */
+
int main (void) {
char * line = NULL;
size_t len = 0;
diff --git a/challenge-001/abigail/c/ch-2.c b/challenge-001/abigail/c/ch-2.c
index 4c72835827..4bab173bf5 100644
--- a/challenge-001/abigail/c/ch-2.c
+++ b/challenge-001/abigail/c/ch-2.c
@@ -3,11 +3,11 @@
# include <string.h>
/*
- * See ../README.md
+ * See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
*/
/*
- * Run as: cc -o ch-2.o cc-2.c; ./ch-2.o < input-file
+ * Run as: cc -o ch-2.o ch-2.c; ./ch-2.o < input-file
*/
int main (void) {
diff --git a/challenge-001/abigail/go/ch-1.go b/challenge-001/abigail/go/ch-1.go
new file mode 100644
index 0000000000..b7f92a1924
--- /dev/null
+++ b/challenge-001/abigail/go/ch-1.go
@@ -0,0 +1,28 @@
+package main
+
+//
+// See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
+//
+
+//
+// Run as: go run ch-1.go < input-file
+//
+
+import (
+ "fmt"
+ "bufio"
+ "os"
+ "strings"
+)
+
+func main () {
+ var reader = bufio . NewReader (os. Stdin)
+ for {
+ var text, err = reader . ReadString ('\n')
+ if (err != nil) {
+ break
+ }
+ fmt . Print (strings . Replace (text, "e", "E", -1))
+ fmt . Println (strings . Count (text, "e"))
+ }
+}
diff --git a/challenge-001/abigail/go/ch-2.go b/challenge-001/abigail/go/ch-2.go
new file mode 100644
index 0000000000..de32defdd0
--- /dev/null
+++ b/challenge-001/abigail/go/ch-2.go
@@ -0,0 +1,38 @@
+package main
+
+//
+// See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
+//
+
+//
+// Run as: go run ch-2.go < input-file
+//
+
+import (
+ "fmt"
+)
+
+func main () {
+ for {
+ var max int
+ n, err := fmt . Scanf ("%d", &max)
+ if n != 1 || err != nil {
+ break
+ }
+ for i := 1; i <= max; i ++ {
+ if i % 15 == 0 {
+ fmt . Println ("fizzbuzz")
+ continue
+ }
+ if i % 5 == 0 {
+ fmt . Println ( "buzz")
+ continue
+ }
+ if i % 3 == 0 {
+ fmt . Println ("fizz" )
+ continue
+ }
+ fmt . Println (i)
+ }
+ }
+}
diff --git a/challenge-001/abigail/java/ch-1.java b/challenge-001/abigail/java/ch-1.java
new file mode 100644
index 0000000000..bc45a794a8
--- /dev/null
+++ b/challenge-001/abigail/java/ch-1.java
@@ -0,0 +1,26 @@
+//
+// See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
+//
+
+//
+// Run as: ln ch-1.java ch1.java; javac ch1.java; java ch1 < input-file
+//
+
+import java.util.*;
+
+public class ch1 {
+ public static void main (String [] args) {
+ Scanner scanner = new Scanner (System . in);
+ while (scanner . hasNextLine ()) {
+ String line = scanner . nextLine ();
+ int count = 0;
+ int index = line . indexOf ('e');
+ while (index >= 0) {
+ count ++;
+ index = line . indexOf ('e', index + 1);
+ }
+ System . out . println (line . replaceAll ("e", "E"));
+ System . out . println (count);
+ }
+ }
+}
diff --git a/challenge-001/abigail/java/ch-2.java b/challenge-001/abigail/java/ch-2.java
new file mode 100644
index 0000000000..1307b0301e
--- /dev/null
+++ b/challenge-001/abigail/java/ch-2.java
@@ -0,0 +1,24 @@
+//
+// See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
+//
+
+//
+// Run as: ln ch-2.java ch2.java; javac ch2.java; java ch2 < input-file
+//
+
+import java.util.*;
+
+public class ch2 {
+ public static void main (String [] args) {
+ Scanner scanner = new Scanner (System . in);
+ while (scanner . hasNextInt ()) {
+ int max = scanner . nextInt ();
+ for (int i = 1; i <= max; i ++) {
+ System . out . println (i % 15 == 0 ? "fizzbuzz"
+ : i % 5 == 0 ? "buzz"
+ : i % 3 == 0 ? "fizz"
+ : i);
+ }
+ }
+ }
+}
diff --git a/challenge-001/abigail/lua/ch-1.lua b/challenge-001/abigail/lua/ch-1.lua
index 2876669f0d..83d485b554 100644
--- a/challenge-001/abigail/lua/ch-1.lua
+++ b/challenge-001/abigail/lua/ch-1.lua
@@ -1,5 +1,5 @@
--
--- See ../README.md
+-- See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
--
--
diff --git a/challenge-001/abigail/lua/ch-2.lua b/challenge-001/abigail/lua/ch-2.lua
index 749cdcd444..6ff4727fc5 100644
--- a/challenge-001/abigail/lua/ch-2.lua
+++ b/challenge-001/abigail/lua/ch-2.lua
@@ -1,5 +1,5 @@
--
--- See ../README.md
+-- See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
--
--
diff --git a/challenge-001/abigail/node/ch-1.js b/challenge-001/abigail/node/ch-1.js
index 9cc9980719..847777ec00 100644
--- a/challenge-001/abigail/node/ch-1.js
+++ b/challenge-001/abigail/node/ch-1.js
@@ -1,3 +1,13 @@
+#!/usr/local/bin/node
+
+//
+// See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
+//
+
+//
+// Run as: node ch-1.js < input-file
+//
+
//
// Read STDIN. Split on newlines, filter out empty lines, then call "main".
//
diff --git a/challenge-001/abigail/node/ch-2.js b/challenge-001/abigail/node/ch-2.js
index 41155714f8..daf4abcf8e 100644
--- a/challenge-001/abigail/node/ch-2.js
+++ b/challenge-001/abigail/node/ch-2.js
@@ -1,9 +1,11 @@
+#!/usr/local/bin/node
+
//
-// See ../README.md
+// See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
//
//
-// Run as: node ch-1.js < input-file
+// Run as: node ch-2.js < input-file
//
require ("fs")
diff --git a/challenge-001/abigail/pascal/ch-1.p b/challenge-001/abigail/pascal/ch-1.p
new file mode 100644
index 0000000000..c473adc559
--- /dev/null
+++ b/challenge-001/abigail/pascal/ch-1.p
@@ -0,0 +1,26 @@
+Program ch1;
+
+(* *)
+(* See https://theweeklychallenge.org/blog/perl-weekly-challenge-001 *)
+(* *)
+
+(* *)
+(* Run as: fpc -och-1.out ch-1.p; ./ch-1.out < input-file *)
+(* *)
+
+uses
+ StrUtils, SysUtils;
+
+var
+ line: string;
+ count: LongInt;
+
+begin
+ while not eof do begin
+ readln (line);
+ count := 0;
+ line := StringReplace (line, 'e', 'E', [rfReplaceAll], count);
+ writeln (line);
+ writeln (count);
+ end
+end.
diff --git a/challenge-001/abigail/pascal/ch-2.p b/challenge-001/abigail/pascal/ch-2.p
new file mode 100644
index 0000000000..67ae90bc30
--- /dev/null
+++ b/challenge-001/abigail/pascal/ch-2.p
@@ -0,0 +1,33 @@
+Program XXX;
+
+(* *)
+(* See https://theweeklychallenge.org/blog/perl-weekly-challenge-001 *)
+(* *)
+
+(* *)
+(* Run as: fpc -och-2.out ch-2.p; ./ch-2.out < input-file *)
+(* *)
+
+var
+ i, max: integer;
+
+begin
+ while not eof do begin
+ readln (max);
+ for i := 1 to max do begin
+ if i mod 15 = 0 then begin
+ writeln ('fizzbuzz');
+ continue;
+ end;
+ if i mod 5 = 0 then begin
+ writeln ( 'buzz');
+ continue;
+ end;
+ if i mod 3 = 0 then begin
+ writeln ('fizz' );
+ continue;
+ end;
+ writeln (i);
+ end
+ end
+end.
diff --git a/challenge-001/abigail/perl/ch-1.pl b/challenge-001/abigail/perl/ch-1.pl
index 8fd893fb93..fb4fd7e233 100644
--- a/challenge-001/abigail/perl/ch-1.pl
+++ b/challenge-001/abigail/perl/ch-1.pl
@@ -9,6 +9,14 @@ no warnings 'syntax';
use experimental 'signatures';
use experimental 'lexical_subs';
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
+#
+
+#
+# Run as: perl ch-1.pl < input-file
+#
+
while (<>) {
my $changes = y/e/E/;
say $_, $changes
diff --git a/challenge-001/abigail/perl/ch-2.pl b/challenge-001/abigail/perl/ch-2.pl
index 27521c71cb..a4622fa5fe 100644
--- a/challenge-001/abigail/perl/ch-2.pl
+++ b/challenge-001/abigail/perl/ch-2.pl
@@ -10,7 +10,7 @@ use experimental 'signatures';
use experimental 'lexical_subs';
#
-# See ../README.md
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
#
#
diff --git a/challenge-001/abigail/python/ch-1.py b/challenge-001/abigail/python/ch-1.py
index 193586bcf6..047f1a0749 100644
--- a/challenge-001/abigail/python/ch-1.py
+++ b/challenge-001/abigail/python/ch-1.py
@@ -1,11 +1,14 @@
+#!/opt/local/bin/python
+
#
-# See ../READE,md
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
#
#
-# Run as python ch-1.py < input-file
+# Run as: python ch-1.py < input-file
#
+
import fileinput
for line in fileinput . input ():
- print line . replace ("e", "E"), line . count ("e")
+ print (line . replace ("e", "E"), line . count ("e"))
diff --git a/challenge-001/abigail/python/ch-2.py b/challenge-001/abigail/python/ch-2.py
index 9e93cb08e2..17aea9077f 100644
--- a/challenge-001/abigail/python/ch-2.py
+++ b/challenge-001/abigail/python/ch-2.py
@@ -1,16 +1,18 @@
+#!/opt/local/bin/python
+
#
-# See ../READ.md
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
#
#
-# Run as python ch-2.py < input-file
+# Run as: python ch-2.py < input-file
#
import fileinput
for max in fileinput . input ():
for i in range (1, int (max) + 1):
- print "fizzbuzz" if i % 15 == 0 else\
- "buzz" if i % 5 == 0 else\
- "fizz" if i % 3 == 0 else\
- i
+ print ("fizzbuzz" if i % 15 == 0 else\
+ "buzz" if i % 5 == 0 else\
+ "fizz" if i % 3 == 0 else\
+ i)
diff --git a/challenge-001/abigail/r/ch-1.r b/challenge-001/abigail/r/ch-1.r
new file mode 100644
index 0000000000..13bc4f276b
--- /dev/null
+++ b/challenge-001/abigail/r/ch-1.r
@@ -0,0 +1,19 @@
+#!/usr/local/bin/Rscript
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
+#
+
+#
+# Run as: Rscript ch-1.r < input-file
+#
+
+stdin <- file ('stdin', 'r')
+repeat {
+ line <- readLines (stdin, n = 1)
+ if (length (line) == 0) {
+ break
+ }
+ cat (gsub ("e", "E", line), "\n")
+ cat (nchar (gsub ("[^e]", "", line)), "\n")
+}
diff --git a/challenge-001/abigail/r/ch-2.r b/challenge-001/abigail/r/ch-2.r
new file mode 100644
index 0000000000..0796577877
--- /dev/null
+++ b/challenge-001/abigail/r/ch-2.r
@@ -0,0 +1,33 @@
+#!/usr/local/bin/Rscript
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
+#
+
+#
+# Run as: Rscript ch-2.r < input-file
+#
+
+stdin <- file ('stdin', 'r')
+repeat {
+ max <- readLines (stdin, n = 1)
+ if (length (max) == 0) {
+ break
+ }
+ max = as.integer (max)
+ for (i in 1 : max) {
+ if (i %% 15 == 0) {
+ cat ("fizzbuzz\n")
+ next
+ }
+ if (i %% 5 == 0) {
+ cat ( "buzz\n")
+ next
+ }
+ if (i %% 3 == 0) {
+ cat ("fizz\n" )
+ next
+ }
+ cat (i, "\n")
+ }
+}
diff --git a/challenge-001/abigail/ruby/ch-1.rb b/challenge-001/abigail/ruby/ch-1.rb
index c3491daf34..534e2f64e3 100644
--- a/challenge-001/abigail/ruby/ch-1.rb
+++ b/challenge-001/abigail/ruby/ch-1.rb
@@ -1,5 +1,5 @@
#
-# See ../README.md
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
#
#
diff --git a/challenge-001/abigail/ruby/ch-2.rb b/challenge-001/abigail/ruby/ch-2.rb
index 4d68cd1cfa..8cf46b9290 100644
--- a/challenge-001/abigail/ruby/ch-2.rb
+++ b/challenge-001/abigail/ruby/ch-2.rb
@@ -1,5 +1,5 @@
#
-# See ../README.md
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
#
#
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)
diff --git a/challenge-001/abigail/t/ctest.ini b/challenge-001/abigail/t/ctest.ini
index abca6977af..0ff9060a65 100644
--- a/challenge-001/abigail/t/ctest.ini
+++ b/challenge-001/abigail/t/ctest.ini
@@ -7,3 +7,6 @@
1-2 = No e
2-1 = The Challenge
2-2 = Regular upper bound
+
+[2-1,2-2/bc]
+add_to_input = 0
diff --git a/challenge-001/abigail/tcl/ch-1.tcl b/challenge-001/abigail/tcl/ch-1.tcl
new file mode 100644
index 0000000000..6597b18b52
--- /dev/null
+++ b/challenge-001/abigail/tcl/ch-1.tcl
@@ -0,0 +1,21 @@
+#!/usr/local/opt/tcl-tk/bin/tclsh
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
+#
+
+#
+# Run as: tclsh ch-1.tcl < input-file
+#
+
+while {[gets stdin line] >= 0} {
+ set count 0
+ set index [string first e $line]
+ while {$index >= 0} {
+ incr count
+ set line [string replace $line $index $index E]
+ set index [string first e $line]
+ }
+ puts $line
+ puts $count
+}
diff --git a/challenge-001/abigail/tcl/ch-2.tcl b/challenge-001/abigail/tcl/ch-2.tcl
new file mode 100644
index 0000000000..da334033a1
--- /dev/null
+++ b/challenge-001/abigail/tcl/ch-2.tcl
@@ -0,0 +1,27 @@
+#!/usr/local/opt/tcl-tk/bin/tclsh
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-001
+#
+
+#
+# Run as: tclsh ch-2.tcl < input-file
+#
+
+while {[gets stdin max] >= 0} {
+ for {set i 1} {$i <= $max} {incr i} {
+ if {$i % 15 == 0} {
+ puts "fizzbuzz"
+ continue
+ }
+ if {$i % 5 == 0} {
+ puts "buzz"
+ continue
+ }
+ if {$i % 3 == 0} {
+ puts "fizz"
+ continue
+ }
+ puts $i
+ }
+}