diff options
| author | Abigail <abigail@abigail.freedom.nl> | 2022-02-21 13:37:03 +0100 |
|---|---|---|
| committer | Abigail <abigail@abigail.freedom.nl> | 2022-02-21 15:46:34 +0100 |
| commit | 6d7e1942a22328ba6c83e771d113957909eaabcf (patch) | |
| tree | 6c36e7ca55e6a70eaeca180472b2d7f961d506a0 | |
| parent | 31c872b0effb42ea88b102e3f60ab89e4eb901ce (diff) | |
| download | perlweeklychallenge-club-6d7e1942a22328ba6c83e771d113957909eaabcf.tar.gz perlweeklychallenge-club-6d7e1942a22328ba6c83e771d113957909eaabcf.tar.bz2 perlweeklychallenge-club-6d7e1942a22328ba6c83e771d113957909eaabcf.zip | |
Solutions for week 153
51 files changed, 983 insertions, 0 deletions
diff --git a/challenge-153/abigail/README.md b/challenge-153/abigail/README.md index 9b1fd5d762..818ee634c4 100644 --- a/challenge-153/abigail/README.md +++ b/challenge-153/abigail/README.md @@ -4,21 +4,50 @@ * [AWK](awk/ch-1.awk) * [Bash](bash/ch-1.sh) +* [Basic](basic/ch-1.bas) +* [bc](bc/ch-1.bc) +* [Befunge-93](befunge-93/ch-1.bf93) * [C](c/ch-1.c) +* [Cobol](cobol/ch-1.cb) +* [Csh](csh/ch-1.csh) +* [Erlang](erlang/ch-1.erl) +* [Forth](forth/ch-1.fs) +* [Fortran](fortran/ch-1.f90) +* [Go](go/ch-1.go) +* [Java](java/ch-1.java) * [Lua](lua/ch-1.lua) +* [M4](m4/ch-1.m4) +* [MMIX](mmix/ch-1.mms) * [Node.js](node/ch-1.js) +* [OCaml](ocaml/ch-1.ml) +* [Pascal](pascal/ch-1.p) * [Perl](perl/ch-1.pl) +* [PHP](php/ch-1.php) +* [PostScript](postscript/ch-1.ps) * [Python](python/ch-1.py) +* [R](r/ch-1.r) +* [Rexx](rexx/ch-1.rexx) * [Ruby](ruby/ch-1.rb) +* [Scheme](scheme/ch-1.scm) +* [sed](sed/ch-1.sed) +* [sql](sql/ch-1.sql) +* [Tcl](tcl/ch-1.tcl) ## Part 2 * [AWK](awk/ch-2.awk) * [Bash](bash/ch-2.sh) +* [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) +* [Scheme](scheme/ch-1.scm) +* [Tcl](tcl/ch-2.tcl) diff --git a/challenge-153/abigail/awk/ch-1.awk b/challenge-153/abigail/awk/ch-1.awk new file mode 100644 index 0000000000..e4a0e26b29 --- /dev/null +++ b/challenge-153/abigail/awk/ch-1.awk @@ -0,0 +1,19 @@ +#!/usr/bin/awk + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +# + +# +# Run as: awk -f ch-1.awk +# + +BEGIN { + sum = 1 + fac = 1 + printf "%d", sum + for (n = 1; n <= 9; n ++) { + printf " %d", sum += fac *= n + } + printf "\n" +} diff --git a/challenge-153/abigail/awk/ch-2.awk b/challenge-153/abigail/awk/ch-2.awk new file mode 100644 index 0000000000..0ce3b6f0a6 --- /dev/null +++ b/challenge-153/abigail/awk/ch-2.awk @@ -0,0 +1,26 @@ +#!/usr/bin/awk + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +# + +# +# Run as: awk -f ch-1.awk < input-file +# + +BEGIN { + fac [0] = 1 + for (n = 1; n <= 9; n ++) { + fac [n] = n * fac [n - 1] + } +} + +{ + sum = 0 + n = $1 + while (n > 0) { + sum += fac [n % 10] + n = int (n / 10) + } + print sum == $1 ? 1 : 0 +} diff --git a/challenge-153/abigail/bash/ch-1.sh b/challenge-153/abigail/bash/ch-1.sh new file mode 100644 index 0000000000..289ffc568e --- /dev/null +++ b/challenge-153/abigail/bash/ch-1.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +# + +# +# Run as: bash ch-1.sh +# + +set -f + +((sum = 1)) +((fac = 1)) +printf %d $sum +for ((n = 1; n <= 9; n ++)) +do ((fac *= n)) + ((sum += fac)) + printf " %d" $sum +done +echo diff --git a/challenge-153/abigail/bash/ch-2.sh b/challenge-153/abigail/bash/ch-2.sh new file mode 100644 index 0000000000..a685d42993 --- /dev/null +++ b/challenge-153/abigail/bash/ch-2.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +# + +# +# Run as: bash ch-2.sh < input-file +# + +set -f + +declare -a fac +fac[0]=1 +for ((n = 1; n <= 9; n ++)) +do fac[$n]=$((n * ${fac[$((n - 1))]})) +done + +while read num +do ((n = num)) + ((sum = 0)) + while ((n > 0)) + do ((sum += ${fac[n % 10]})) + ((n /= 10)) + done + if ((sum == num)) + then echo 1 + else echo 0 + fi +done diff --git a/challenge-153/abigail/basic/ch-1.bas b/challenge-153/abigail/basic/ch-1.bas new file mode 100644 index 0000000000..f50baa1acf --- /dev/null +++ b/challenge-153/abigail/basic/ch-1.bas @@ -0,0 +1,9 @@ +010 REM +020 REM See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +030 REM + +040 REM +050 REM Run as: basic ch-1.bas +060 REM + +100 PRINT "1 2 4 10 34 154 874 5914 46234 409114" diff --git a/challenge-153/abigail/bc/ch-1.bc b/challenge-153/abigail/bc/ch-1.bc new file mode 100644 index 0000000000..b5793fa12e --- /dev/null +++ b/challenge-153/abigail/bc/ch-1.bc @@ -0,0 +1,26 @@ +#!/usr/bin/bc + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +# + +# +# Run as: bc ch-1.bc +# + +sum = 1 +fac = 1 + +print sum + +for (n = 1; n <= 9; n ++) { + fac = fac * n + sum = sum + fac + print " ", sum +} + +" +" + +halt + diff --git a/challenge-153/abigail/bc/ch-2.bc b/challenge-153/abigail/bc/ch-2.bc new file mode 100644 index 0000000000..d4f59e92e0 --- /dev/null +++ b/challenge-153/abigail/bc/ch-2.bc @@ -0,0 +1,34 @@ +#!/usr/bin/bc + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +# + +# +# Run as: bc ch-2.bc < input-file +# + +fac [0] = 1 +for (n = 1; n <= 9; n ++) { + fac [n] = n * fac [n - 1] +} + +while (1) { + num = read () + if (num == 0) { + break + } + n = num + sum = 0 + while (n > 0) { + sum += fac [n % 10] + n /= 10 + } + if (num == sum) { + 1 + } else { + 0 + } +} + +halt diff --git a/challenge-153/abigail/befunge-93/ch-1.bf93 b/challenge-153/abigail/befunge-93/ch-1.bf93 new file mode 100644 index 0000000000..dad23c1a52 --- /dev/null +++ b/challenge-153/abigail/befunge-93/ch-1.bf93 @@ -0,0 +1,2 @@ +< v,_@#:< "1 2 4 10 34 154 874 5914 46234 409114" +55 + > ^ diff --git a/challenge-153/abigail/c/ch-1.c b/challenge-153/abigail/c/ch-1.c new file mode 100644 index 0000000000..95fa3dcc2b --- /dev/null +++ b/challenge-153/abigail/c/ch-1.c @@ -0,0 +1,22 @@ +# include <stdlib.h> +# include <stdio.h> +# include <string.h> + +/* + * See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 + */ + +/* + * Run as: cc -o ch-1.o ch-1.c; ./ch-1.o + */ + +int main (void) { + int sum = 1; + int fac = 1; + printf ("%d", sum); + for (int n = 1; n <= 9; n ++) { + printf (" %d", sum += fac *= n); + } + printf ("\n"); + return (0); +} diff --git a/challenge-153/abigail/c/ch-2.c b/challenge-153/abigail/c/ch-2.c new file mode 100644 index 0000000000..3d76b48f10 --- /dev/null +++ b/challenge-153/abigail/c/ch-2.c @@ -0,0 +1,33 @@ +# include <stdlib.h> +# include <stdio.h> +# include <string.h> + +/* + * See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 + */ + +/* + * Run as: cc -o ch-2.o ch-2.c; ./ch-2.o < input-file + */ + +int main (void) { + int fac [10]; + int num; + + fac [0] = 1; + for (int n = 1; n <= 9; n ++) { + fac [n] = n * fac [n - 1]; + } + + while (scanf ("%d", &num) == 1) { + int n = num; + int sum = 0; + while (n > 0) { + sum += fac [n % 10]; + n /= 10; + } + printf ("%d\n", num == sum ? 1 : 0); + } + + return (0); +} diff --git a/challenge-153/abigail/cobol/ch-1.cb b/challenge-153/abigail/cobol/ch-1.cb new file mode 100644 index 0000000000..280833c6bf --- /dev/null +++ b/challenge-153/abigail/cobol/ch-1.cb @@ -0,0 +1,14 @@ +IDENTIFICATION DIVISION. +PROGRAM-ID. XXX. + +*> +*> See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +*> + +*> +*> Run as: cobc -xF -o ch-1.o ch-1.cb; ./ch-1.o +*> + +PROCEDURE DIVISION. + DISPLAY "1 2 4 10 34 154 874 5914 46234 409114". + STOP RUN. diff --git a/challenge-153/abigail/csh/ch-1.csh b/challenge-153/abigail/csh/ch-1.csh new file mode 100644 index 0000000000..3aa3867111 --- /dev/null +++ b/challenge-153/abigail/csh/ch-1.csh @@ -0,0 +1,11 @@ +#!/bin/csh + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +# + +# +# Run as: csh ch-1.csh +# + +echo "1 2 4 10 34 154 874 5914 46234 409114" diff --git a/challenge-153/abigail/erlang/ch-1.erl b/challenge-153/abigail/erlang/ch-1.erl new file mode 100644 index 0000000000..ccc9ad108d --- /dev/null +++ b/challenge-153/abigail/erlang/ch-1.erl @@ -0,0 +1,15 @@ +% +% See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +% + +% +% Run as: ln ch-1.erl ch1.erl +% erl -compile ch1 +% erl -noshell -s ch1 main -s init stop +% + +-module (ch1). +-export ([main/0]). + +main () -> + io:fwrite ("1 2 4 10 34 154 874 5914 46234 409114\n"). diff --git a/challenge-153/abigail/forth/ch-1.fs b/challenge-153/abigail/forth/ch-1.fs new file mode 100644 index 0000000000..a9dcf74662 --- /dev/null +++ b/challenge-153/abigail/forth/ch-1.fs @@ -0,0 +1,5 @@ +\ +\ See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +\ + +.( 1 2 4 10 34 154 874 5914 46234 409114) diff --git a/challenge-153/abigail/fortran/ch-1.f90 b/challenge-153/abigail/fortran/ch-1.f90 new file mode 100644 index 0000000000..dafac52396 --- /dev/null +++ b/challenge-153/abigail/fortran/ch-1.f90 @@ -0,0 +1,12 @@ +! +! See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +! + +! +! Run as: gfortran -o ch-1.o ch-1.f90; ./ch-1.o +! + +program ch1 + implicit none + write (*, *) "1 2 4 10 34 154 874 5914 46234 409114" +end diff --git a/challenge-153/abigail/go/ch-1.go b/challenge-153/abigail/go/ch-1.go new file mode 100644 index 0000000000..20557afe7e --- /dev/null +++ b/challenge-153/abigail/go/ch-1.go @@ -0,0 +1,25 @@ +package main + +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +// + +// +// Run as: go run ch-1.go +// + +import ( + "fmt" +) + +func main () { + sum := 1 + fac := 1 + fmt . Printf ("%d", sum) + for n := 1; n <= 9; n ++ { + fac *= n + sum += fac + fmt . Printf (" %d", sum) + } + fmt . Printf ("\n") +} diff --git a/challenge-153/abigail/go/ch-2.go b/challenge-153/abigail/go/ch-2.go new file mode 100644 index 0000000000..cef982a6b5 --- /dev/null +++ b/challenge-153/abigail/go/ch-2.go @@ -0,0 +1,39 @@ +package main + +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +// + +// +// Run as: go run ch-2.go < input-file +// + +import ( + "fmt" +) + +func main () { + var fac [10] int + fac [0] = 1 + for n := 1; n <= 9; n ++ { + fac [n] = n * fac [n - 1] + } + for { + var num int + c, err := fmt . Scanf ("%d", &num) + if (c != 1 || err != nil) { + break + } + n := num + sum := 0 + for n > 0 { + sum += fac [n % 10] + n /= 10 + } + if num == sum { + fmt . Printf ("1\n") + } else { + fmt . Printf ("0\n") + } + } +} diff --git a/challenge-153/abigail/java/ch-1.java b/challenge-153/abigail/java/ch-1.java new file mode 100644 index 0000000000..dd06f3b774 --- /dev/null +++ b/challenge-153/abigail/java/ch-1.java @@ -0,0 +1,23 @@ +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +// + +// +// Run as: ln ch-1.java ch1.java; javac ch1.java; java ch1 +// + +import java.util.*; + +public class ch1 { + public static void main (String [] args) { + int sum = 1; + int fac = 1; + System . out . printf ("%d", sum); + for (int n = 1; n <= 9; n ++) { + fac *= n; + sum += fac; + System . out . printf (" %d", sum); + } + System . out . printf ("\n"); + } +} diff --git a/challenge-153/abigail/java/ch-2.java b/challenge-153/abigail/java/ch-2.java new file mode 100644 index 0000000000..1fc60b7431 --- /dev/null +++ b/challenge-153/abigail/java/ch-2.java @@ -0,0 +1,30 @@ +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +// + +// +// 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); + int [] fac = new int [10]; + fac [0] = 1; + for (int n = 1; n <= 9; n ++) { + fac [n] = n * fac [n - 1]; + } + while (scanner . hasNextInt ()) { + int num = scanner . nextInt (); + int sum = 0; + int n = num; + while (n > 0) { + sum += fac [n % 10]; + n /= 10; + } + System . out . printf ("%d\n", sum == num ? 1 : 0); + } + } +} diff --git a/challenge-153/abigail/lua/ch-1.lua b/challenge-153/abigail/lua/ch-1.lua new file mode 100644 index 0000000000..6954a9c0a0 --- /dev/null +++ b/challenge-153/abigail/lua/ch-1.lua @@ -0,0 +1,22 @@ +#!/opt/local/bin/lua + +-- +-- See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +-- + +-- +-- Run as: lua ch-1.lua +-- + +local sum = 1 +local fac = 1 + +io . write (sum) + +for n = 1, 9 do + fac = fac * n + sum = sum + fac + io . write (" ", sum) +end + +io . write ("\n") diff --git a/challenge-153/abigail/lua/ch-2.lua b/challenge-153/abigail/lua/ch-2.lua new file mode 100644 index 0000000000..2f01225aaa --- /dev/null +++ b/challenge-153/abigail/lua/ch-2.lua @@ -0,0 +1,30 @@ +#!/opt/local/bin/lua + +-- +-- See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +-- + +-- +-- Run as: lua ch-2.lua < input-file +-- + +local fac = {} + fac [0] = 1 + +for n = 1, 9 do + fac [n] = n * fac [n - 1] +end + +for num in io . lines () do + num = tonumber (num) + local n = num + local sum = 0 + while n > 0 do + sum = sum + fac [n % 10] + n = math . floor (n / 10) + end + if sum == num + then print (1) + else print (0) + end +end diff --git a/challenge-153/abigail/m4/ch-1.m4 b/challenge-153/abigail/m4/ch-1.m4 new file mode 100644 index 0000000000..5bad1feb2f --- /dev/null +++ b/challenge-153/abigail/m4/ch-1.m4 @@ -0,0 +1 @@ +1 2 4 10 34 154 874 5914 46234 409114 diff --git a/challenge-153/abigail/mmix/ch-1.mms b/challenge-153/abigail/mmix/ch-1.mms new file mode 100644 index 0000000000..f5e024aea1 --- /dev/null +++ b/challenge-153/abigail/mmix/ch-1.mms @@ -0,0 +1,16 @@ +% +% See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +% + +% +% Run as: mmixal -o ch-1.mmo ch-1.mms; mmix -q ch-1.mmo +% + LOC Data_Segment + GREG @ +Text BYTE "1 2 4 10 34 154 874 5914 46234 409114",10,0 + + LOC #100 + +Main LDA $255,Text + TRAP 0,Fputs,StdOut + TRAP 0,Halt,0 diff --git a/challenge-153/abigail/node/ch-1.js b/challenge-153/abigail/node/ch-1.js new file mode 100644 index 0000000000..4db5bf8883 --- /dev/null +++ b/challenge-153/abigail/node/ch-1.js @@ -0,0 +1,20 @@ +#!/usr/local/bin/node + +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +// + +// +// Run as: node ch-1.js +// + +let sum = 1 +let fac = 1 + +process . stdout . write (sum . toString ()) + +for (let n = 1; n <= 9; n ++) { + process . stdout . write (" " + (sum += fac *= n) . toString ()) +} + +process . stdout . write ("\n") diff --git a/challenge-153/abigail/node/ch-2.js b/challenge-153/abigail/node/ch-2.js new file mode 100644 index 0000000000..7527e75bf4 --- /dev/null +++ b/challenge-153/abigail/node/ch-2.js @@ -0,0 +1,27 @@ +#!/usr/local/bin/node + +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 +// + +// +// Run as: node ch-2.js < input-file +// + +let fac = [1] +for (let n = 1; n <= 9; n ++) { + fac [n] = n * fac [n - 1] +} + + require ('readline') +. createInterface ({input: process . stdin}) +. on ('line', line => { + let num = +line + let n = num + let sum = 0 + while (n > 0) { + sum += fac [n % 10] + n = Math . floor (n / 10) + } + console . log (num == sum ? 1 : 0) +}) diff --git a/challenge-153/abigail/ocaml/ch-1.ml b/challenge-153/abigail/ocaml/ch-1.ml new file mode 100644 index 0000000000..869035c8b8 --- /dev/null +++ b/challenge-153/abigail/ocaml/ch-1.ml @@ -0,0 +1,9 @@ +(* *) +(* See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 *) +(* *) + +(* *) +(* Run as: ocaml ch-1.ml *) +(* *) + +print_endline "1 2 4 10 34 154 874 5914 46234 409114"; diff --git a/challenge-153/abigail/pascal/ch-1.p b/challenge-153/abigail/pascal/ch-1.p new file mode 100644 index 0000000000..5d06def976 --- /dev/null +++ b/challenge-153/abigail/pascal/ch-1.p @@ -0,0 +1,25 @@ +Program ch1; + +(* *) +(* See https://theweeklychallenge.org/blog/perl-weekly-challenge-153 *) +(* *) + +(* *) +(* Run as: fpc -och-1.out ch-1.p; ./ch-1.out *) +(* *) + +var + sum, fac: longint; + n: integer; + +begin + sum := 1; + fac := 1; + write (sum); + for n := 1 to 9 do begin + fac := fac * n; + sum := sum + fac; + write (' ', sum); + end; + writeln; |
