diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-01-04 21:18:56 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-04 21:18:56 +0000 |
| commit | d4cc39535ad0f1a187d755bc6371dcea052dfbb8 (patch) | |
| tree | 15fe4f106d7b76fffb1240816ca220f54dfb99c9 | |
| parent | d1581f755d50e5b3a5ccf74a25280f39caa809fc (diff) | |
| parent | f1cde8d35ee0e171a8b4090bc8952bdef9e4de1a (diff) | |
| download | perlweeklychallenge-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
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 + } +} |
