From 8254e0cdd38e99a76e12136123400a6160d6f160 Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 20 Dec 2021 18:30:29 +0100 Subject: Solutions for week 144, part 1 This is just a glorified Hello, World program. So, that's what you get! --- challenge-144/abigail/README.md | 21 +++++++++++++++++ challenge-144/abigail/awk/ch-1.awk | 13 +++++++++++ challenge-144/abigail/bash/ch-1.sh | 11 +++++++++ challenge-144/abigail/basic/ch-1.bas | 9 ++++++++ challenge-144/abigail/bc/ch-1.bc | 10 +++++++++ challenge-144/abigail/befunge-93/ch-1.bf93 | 4 ++++ challenge-144/abigail/c/ch-1.c | 16 +++++++++++++ challenge-144/abigail/cobol/ch-1.cb | 14 ++++++++++++ challenge-144/abigail/csh/ch-1.csh | 11 +++++++++ challenge-144/abigail/erlang/ch-1.erl | 15 +++++++++++++ challenge-144/abigail/forth/ch-1.fs | 5 +++++ challenge-144/abigail/fortran/ch-1.f90 | 14 ++++++++++++ challenge-144/abigail/go/ch-1.go | 15 +++++++++++++ challenge-144/abigail/java/ch-1.java | 13 +++++++++++ challenge-144/abigail/lua/ch-1.lua | 11 +++++++++ challenge-144/abigail/m4/ch-1.m4 | 1 + challenge-144/abigail/mmix/ch-1.mms | 18 +++++++++++++++ challenge-144/abigail/node/ch-1.js | 11 +++++++++ challenge-144/abigail/ocaml/ch-1.ml | 9 ++++++++ challenge-144/abigail/pascal/ch-1.p | 13 +++++++++++ challenge-144/abigail/perl/ch-1.pl | 36 ++++++++++++++++++++++++++++++ challenge-144/abigail/php/ch-1.php | 11 +++++++++ challenge-144/abigail/postscript/ch-1.ps | 10 +++++++++ challenge-144/abigail/python/ch-1.py | 11 +++++++++ challenge-144/abigail/r/ch-1.r | 9 ++++++++ challenge-144/abigail/rexx/ch-1.rexx | 9 ++++++++ challenge-144/abigail/ruby/ch-1.rb | 11 +++++++++ challenge-144/abigail/scheme/ch-1.scm | 9 ++++++++ challenge-144/abigail/sed/ch-1.sed | 12 ++++++++++ challenge-144/abigail/sql/ch-1.sql | 9 ++++++++ challenge-144/abigail/t/ctest.ini | 13 +++++++++++ challenge-144/abigail/t/input-1-1 | 1 + challenge-144/abigail/t/output-1-1.exp | 1 + challenge-144/abigail/tcl/ch-1.tcl | 9 ++++++++ 34 files changed, 385 insertions(+) create mode 100644 challenge-144/abigail/awk/ch-1.awk create mode 100644 challenge-144/abigail/bash/ch-1.sh create mode 100644 challenge-144/abigail/basic/ch-1.bas create mode 100644 challenge-144/abigail/bc/ch-1.bc create mode 100644 challenge-144/abigail/befunge-93/ch-1.bf93 create mode 100644 challenge-144/abigail/c/ch-1.c create mode 100644 challenge-144/abigail/cobol/ch-1.cb create mode 100644 challenge-144/abigail/csh/ch-1.csh create mode 100644 challenge-144/abigail/erlang/ch-1.erl create mode 100644 challenge-144/abigail/forth/ch-1.fs create mode 100644 challenge-144/abigail/fortran/ch-1.f90 create mode 100644 challenge-144/abigail/go/ch-1.go create mode 100644 challenge-144/abigail/java/ch-1.java create mode 100644 challenge-144/abigail/lua/ch-1.lua create mode 100644 challenge-144/abigail/m4/ch-1.m4 create mode 100644 challenge-144/abigail/mmix/ch-1.mms create mode 100644 challenge-144/abigail/node/ch-1.js create mode 100644 challenge-144/abigail/ocaml/ch-1.ml create mode 100644 challenge-144/abigail/pascal/ch-1.p create mode 100644 challenge-144/abigail/perl/ch-1.pl create mode 100644 challenge-144/abigail/php/ch-1.php create mode 100644 challenge-144/abigail/postscript/ch-1.ps create mode 100644 challenge-144/abigail/python/ch-1.py create mode 100644 challenge-144/abigail/r/ch-1.r create mode 100644 challenge-144/abigail/rexx/ch-1.rexx create mode 100644 challenge-144/abigail/ruby/ch-1.rb create mode 100644 challenge-144/abigail/scheme/ch-1.scm create mode 100644 challenge-144/abigail/sed/ch-1.sed create mode 100644 challenge-144/abigail/sql/ch-1.sql create mode 100644 challenge-144/abigail/t/ctest.ini create mode 100644 challenge-144/abigail/t/input-1-1 create mode 100644 challenge-144/abigail/t/output-1-1.exp create mode 100644 challenge-144/abigail/tcl/ch-1.tcl diff --git a/challenge-144/abigail/README.md b/challenge-144/abigail/README.md index 48a5093c46..554ccda4b8 100644 --- a/challenge-144/abigail/README.md +++ b/challenge-144/abigail/README.md @@ -2,14 +2,35 @@ ## Part 1 +* [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](lua/ch-1.erl) +* [Forth](lua/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 diff --git a/challenge-144/abigail/awk/ch-1.awk b/challenge-144/abigail/awk/ch-1.awk new file mode 100644 index 0000000000..4f87c14c56 --- /dev/null +++ b/challenge-144/abigail/awk/ch-1.awk @@ -0,0 +1,13 @@ +#!/usr/bin/awk + +# +# See ../README.md +# + +# +# Run as: awk -f ch-1.awk +# + +BEGIN { + print "4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95" +} \ No newline at end of file diff --git a/challenge-144/abigail/bash/ch-1.sh b/challenge-144/abigail/bash/ch-1.sh new file mode 100644 index 0000000000..3f5cc61adb --- /dev/null +++ b/challenge-144/abigail/bash/ch-1.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +# +# See ../README.md +# + +# +# Run as: bash ch-1.sh +# + +echo "4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95" \ No newline at end of file diff --git a/challenge-144/abigail/basic/ch-1.bas b/challenge-144/abigail/basic/ch-1.bas new file mode 100644 index 0000000000..ed7fc2883c --- /dev/null +++ b/challenge-144/abigail/basic/ch-1.bas @@ -0,0 +1,9 @@ +010 REM +020 REM See ../README.md +030 REM + +040 REM +050 REM Run as: basic ch-1.bas +060 REM + +100 PRINT "4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95" \ No newline at end of file diff --git a/challenge-144/abigail/bc/ch-1.bc b/challenge-144/abigail/bc/ch-1.bc new file mode 100644 index 0000000000..a73f52903b --- /dev/null +++ b/challenge-144/abigail/bc/ch-1.bc @@ -0,0 +1,10 @@ +# +# See ../README.md +# + +# +# Run as: bc ch-1.bc +# +"4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95 +" +quit \ No newline at end of file diff --git a/challenge-144/abigail/befunge-93/ch-1.bf93 b/challenge-144/abigail/befunge-93/ch-1.bf93 new file mode 100644 index 0000000000..06001a7f07 --- /dev/null +++ b/challenge-144/abigail/befunge-93/ch-1.bf93 @@ -0,0 +1,4 @@ +< v "77, 82, 85, 86, 87, 91, 93, 94, 95" +55 + < v "38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, " + < v,_@#:< "4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, " + > ^ \ No newline at end of file diff --git a/challenge-144/abigail/c/ch-1.c b/challenge-144/abigail/c/ch-1.c new file mode 100644 index 0000000000..1ed987f8dd --- /dev/null +++ b/challenge-144/abigail/c/ch-1.c @@ -0,0 +1,16 @@ +# include +# include +# include + +/* + * See ../README.md + */ + +/* + * Run as: cc -o ch-1.o ch-1.c; ./ch-1.o + */ + +int main (void) { + printf ("4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95\n"); + exit (0); +} \ No newline at end of file diff --git a/challenge-144/abigail/cobol/ch-1.cb b/challenge-144/abigail/cobol/ch-1.cb new file mode 100644 index 0000000000..5cd967efda --- /dev/null +++ b/challenge-144/abigail/cobol/ch-1.cb @@ -0,0 +1,14 @@ +IDENTIFICATION DIVISION. +PROGRAM-ID. XXX. + +*> +*> See ../README.md +*> + +*> +*> Run as: cobc -xF -o ch-1.o ch-1.cb; ./ch-1.o +*> + +PROCEDURE DIVISION. + DISPLAY "4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95". + STOP RUN. diff --git a/challenge-144/abigail/csh/ch-1.csh b/challenge-144/abigail/csh/ch-1.csh new file mode 100644 index 0000000000..a1a34d3f27 --- /dev/null +++ b/challenge-144/abigail/csh/ch-1.csh @@ -0,0 +1,11 @@ +#!/bin/csh + +# +# See ../README.md +# + +# +# Run as: csh ch-1.csh +# + +echo "4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95" \ No newline at end of file diff --git a/challenge-144/abigail/erlang/ch-1.erl b/challenge-144/abigail/erlang/ch-1.erl new file mode 100644 index 0000000000..e7431f363b --- /dev/null +++ b/challenge-144/abigail/erlang/ch-1.erl @@ -0,0 +1,15 @@ +% +% See ../README.md +% + +% +% 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 ("4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95\n"). \ No newline at end of file diff --git a/challenge-144/abigail/forth/ch-1.fs b/challenge-144/abigail/forth/ch-1.fs new file mode 100644 index 0000000000..6b2e57e241 --- /dev/null +++ b/challenge-144/abigail/forth/ch-1.fs @@ -0,0 +1,5 @@ +\ +\ See ../README.md +\ + +.( 4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95) \ No newline at end of file diff --git a/challenge-144/abigail/fortran/ch-1.f90 b/challenge-144/abigail/fortran/ch-1.f90 new file mode 100644 index 0000000000..3a77b4cf66 --- /dev/null +++ b/challenge-144/abigail/fortran/ch-1.f90 @@ -0,0 +1,14 @@ +! +! See ../README.md +! + +! +! Run as: gfortran -o ch-1.o ch-1.f90; ./ch-1.o +! + +program ch1 + implicit none + write (*, '(A)', advance='no') "4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, " + write (*, '(A)', advance='no') "34, 35, 38, 39, 46, 49, 51, 55, 57, 58, " + write (*, '(A)') "62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95" +end \ No newline at end of file diff --git a/challenge-144/abigail/go/ch-1.go b/challenge-144/abigail/go/ch-1.go new file mode 100644 index 0000000000..2328efdc3b --- /dev/null +++ b/challenge-144/abigail/go/ch-1.go @@ -0,0 +1,15 @@ +package main + +// +// See ../README.md +// + +// +// Run as: go run ch-1.go +// + +import "fmt" + +func main () { + fmt . Print ("4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95\n") +} \ No newline at end of file diff --git a/challenge-144/abigail/java/ch-1.java b/challenge-144/abigail/java/ch-1.java new file mode 100644 index 0000000000..34b246bfe5 --- /dev/null +++ b/challenge-144/abigail/java/ch-1.java @@ -0,0 +1,13 @@ +// +// See ../README.md +// + +// +// Run as: ln ch-1.java ch1.java; javac ch1; java ch1 +// + +public class ch1 { + public static void main (String [] args) { + System . out . print ("4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95\n"); + } +} \ No newline at end of file diff --git a/challenge-144/abigail/lua/ch-1.lua b/challenge-144/abigail/lua/ch-1.lua new file mode 100644 index 0000000000..310f260af9 --- /dev/null +++ b/challenge-144/abigail/lua/ch-1.lua @@ -0,0 +1,11 @@ +#!/opt/local/bin/lua + +-- +-- See ../README.md +-- + +-- +-- Run as: lua ch-1.lua +-- + +print ("4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95") \ No newline at end of file diff --git a/challenge-144/abigail/m4/ch-1.m4 b/challenge-144/abigail/m4/ch-1.m4 new file mode 100644 index 0000000000..589eda7779 --- /dev/null +++ b/challenge-144/abigail/m4/ch-1.m4 @@ -0,0 +1 @@ +4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95 diff --git a/challenge-144/abigail/mmix/ch-1.mms b/challenge-144/abigail/mmix/ch-1.mms new file mode 100644 index 0000000000..e3e8095f46 --- /dev/null +++ b/challenge-144/abigail/mmix/ch-1.mms @@ -0,0 +1,18 @@ +% +% See ../README.md +% + +% +% Run as: mmixal -o ch-1.mmo ch-1.mms; mmix -q ch-1.mmo +% + LOC Data_Segment + GREG @ +Text BYTE "4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, " + BYTE "39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, " + BYTE "85, 86, 87, 91, 93, 94, 95",10,0 + + LOC #100 + +Main LDA $255,Text + TRAP 0,Fputs,StdOut + TRAP 0,Halt,0 \ No newline at end of file diff --git a/challenge-144/abigail/node/ch-1.js b/challenge-144/abigail/node/ch-1.js new file mode 100644 index 0000000000..194b821605 --- /dev/null +++ b/challenge-144/abigail/node/ch-1.js @@ -0,0 +1,11 @@ +#!/usr/local/bin/node + +// +// See ../README.md +// + +// +// Run as: node ch-1.js +// + +console . log ("4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95") \ No newline at end of file diff --git a/challenge-144/abigail/ocaml/ch-1.ml b/challenge-144/abigail/ocaml/ch-1.ml new file mode 100644 index 0000000000..e530d76fd3 --- /dev/null +++ b/challenge-144/abigail/ocaml/ch-1.ml @@ -0,0 +1,9 @@ +(* *) +(* See ../README.md *) +(* *) + +(* *) +(* Run as: ocaml ch-1.ml *) +(* *) + +print_endline "4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95"; \ No newline at end of file diff --git a/challenge-144/abigail/pascal/ch-1.p b/challenge-144/abigail/pascal/ch-1.p new file mode 100644 index 0000000000..ce23f37768 --- /dev/null +++ b/challenge-144/abigail/pascal/ch-1.p @@ -0,0 +1,13 @@ +Program XXX; + +(* *) +(* See ../README.md *) +(* *) + +(* *) +(* Run as: fpc -och-1.out ch-1.p; ./ch-1.out *) +(* *) + +begin + writeln ('4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95') +end. \ No newline at end of file diff --git a/challenge-144/abigail/perl/ch-1.pl b/challenge-144/abigail/perl/ch-1.pl new file mode 100644 index 0000000000..e65ce40412 --- /dev/null +++ b/challenge-144/abigail/perl/ch-1.pl @@ -0,0 +1,36 @@ +#!/opt/perl/bin/perl + +use 5.032; + +use strict; +use warnings; +no warnings 'syntax'; + +use experimental 'signatures'; +use experimental 'lexical_subs'; + +# +# See ../README.md +# + +# +# Run as: perl ch-1.pl +# + +# +# And the upteenth time in succession, we'll use the divisors method. +# +# BBOOOOOOOOOOOOORRRRRRRRRRRRRRRIIIIIIIIIIIIIIINNNNNNNNNNNNGGGGGGGGGG +# +# Besides, ANY challenge of the form "print the first N terms of an +# OEIS sequence" is a trivial glorified hello world program. +# +# Semiprimes have either 3 (squares of primes) or 4 divisors (product +# of two primes), but should not be cubes of primes. They only cubes +# of primes < 100 are 8 and 27. +# + +use Math::Prime::Util qw [divisors]; +my %cubes = map {$_ => 1} 8, 27; + +say join ", " => grep {!$cubes {$_} && 3 <= divisors ($_) <= 4} 1 .. 100; diff --git a/challenge-144/abigail/php/ch-1.php b/challenge-144/abigail/php/ch-1.php new file mode 100644 index 0000000000..e7477300a4 --- /dev/null +++ b/challenge-144/abigail/php/ch-1.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/challenge-144/abigail/postscript/ch-1.ps b/challenge-144/abigail/postscript/ch-1.ps new file mode 100644 index 0000000000..62b38f7f97 --- /dev/null +++ b/challenge-144/abigail/postscript/ch-1.ps @@ -0,0 +1,10 @@ +%!PS +% +% See ../README.md +% + +% +% Run as: ps2ascii ch-1.ps +% + +(4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95) = \ No newline at end of file diff --git a/challenge-144/abigail/python/ch-1.py b/challenge-144/abigail/python/ch-1.py new file mode 100644 index 0000000000..3fdd6cfa92 --- /dev/null +++ b/challenge-144/abigail/python/ch-1.py @@ -0,0 +1,11 @@ +#!/opt/local/bin/python + +# +# See ../README.md +# + +# +# Run as: python ch-1.py +# + +print ("4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95") \ No newline at end of file diff --git a/challenge-144/abigail/r/ch-1.r b/challenge-144/abigail/r/ch-1.r new file mode 100644 index 0000000000..4f115157d6 --- /dev/null +++ b/challenge-144/abigail/r/ch-1.r @@ -0,0 +1,9 @@ +# +# See ../README.md +# + +# +# Run as: Rscript ch-1.r +# + +cat ("4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95\n") \ No newline at end of file diff --git a/challenge-144/abigail/rexx/ch-1.rexx b/challenge-144/abigail/rexx/ch-1.rexx new file mode 100644 index 0000000000..2a1592bf01 --- /dev/null +++ b/challenge-144/abigail/rexx/ch-1.rexx @@ -0,0 +1,9 @@ +/* + * See ../README.md + */ + +/* + * Run as: rexx ch-1.rexx + */ + +say "4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95" \ No newline at end of file diff --git a/challenge-144/abigail/ruby/ch-1.rb b/challenge-144/abigail/ruby/ch-1.rb new file mode 100644 index 0000000000..8e4d224ff8 --- /dev/null +++ b/challenge-144/abigail/ruby/ch-1.rb @@ -0,0 +1,11 @@ +#!/usr/bin/ruby + +# +# See ../README.md +# + +# +# Run as: ruby ch-1.rb +# + +puts ("4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95"); \ No newline at end of file diff --git a/challenge-144/abigail/scheme/ch-1.scm b/challenge-144/abigail/scheme/ch-1.scm new file mode 100644 index 0000000000..7d9b4fa709 --- /dev/null +++ b/challenge-144/abigail/scheme/ch-1.scm @@ -0,0 +1,9 @@ +;;; +;;; See ../README.md +;;; + +;;; +;;; Run as: guile --no-auto-compile ch-1.scm +;;; + +(display "4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95\n") \ No newline at end of file diff --git a/challenge-144/abigail/sed/ch-1.sed b/challenge-144/abigail/sed/ch-1.sed new file mode 100644 index 0000000000..547316ac9f --- /dev/null +++ b/challenge-144/abigail/sed/ch-1.sed @@ -0,0 +1,12 @@ +# +# See ../README.md +# + +# +# Run as: sed -f ch-1.sed +# +# For each line in the input file, we write the first three +# self-describing numbers. +# + +s/.*/4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95/ \ No newline at end of file diff --git a/challenge-144/abigail/sql/ch-1.sql b/challenge-144/abigail/sql/ch-1.sql new file mode 100644 index 0000000000..c5df1097c5 --- /dev/null +++ b/challenge-144/abigail/sql/ch-1.sql @@ -0,0 +1,9 @@ +-- +-- See ../README.md +-- + +-- +-- Run as: sqlite3 < ch-1.sql +-- + +SELECT "4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95"; \ No newline at end of file diff --git a/challenge-144/abigail/t/ctest.ini b/challenge-144/abigail/t/ctest.ini new file mode 100644 index 0000000000..88e8105056 --- /dev/null +++ b/challenge-144/abigail/t/ctest.ini @@ -0,0 +1,13 @@ +# +# Configuration file for running tests, using ctest. +# See https://github.com/Abigail/Misc/blob/master/ctest +# + +[names] +1-1 = Fixed output + +[1-1] +no_input = 1 + +[1-1/sed] +no_input = 0 diff --git a/challenge-144/abigail/t/input-1-1 b/challenge-144/abigail/t/input-1-1 new file mode 100644 index 0000000000..8d1c8b69c3 --- /dev/null +++ b/challenge-144/abigail/t/input-1-1 @@ -0,0 +1 @@ + diff --git a/challenge-144/abigail/t/output-1-1.exp b/challenge-144/abigail/t/output-1-1.exp new file mode 100644 index 0000000000..589eda7779 --- /dev/null +++ b/challenge-144/abigail/t/output-1-1.exp @@ -0,0 +1 @@ +4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95 diff --git a/challenge-144/abigail/tcl/ch-1.tcl b/challenge-144/abigail/tcl/ch-1.tcl new file mode 100644 index 0000000000..6d6cb07903 --- /dev/null +++ b/challenge-144/abigail/tcl/ch-1.tcl @@ -0,0 +1,9 @@ +# +# See ../README.md +# + +# +# Run as: tclsh ch-1.tcl +# + +puts "4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95" \ No newline at end of file -- cgit From 17f5562a76a8c54ea21fde11945f80ab697aed23 Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 20 Dec 2021 19:06:27 +0100 Subject: Perl solution for week 144, part 2 --- challenge-144/abigail/perl/ch-2.pl | 50 ++++++++++++++++++++++++++++++++++ challenge-144/abigail/t/ctest.ini | 1 + challenge-144/abigail/t/input-2-1 | 3 ++ challenge-144/abigail/t/output-2-1.exp | 3 ++ 4 files changed, 57 insertions(+) create mode 100644 challenge-144/abigail/perl/ch-2.pl create mode 100644 challenge-144/abigail/t/input-2-1 create mode 100644 challenge-144/abigail/t/output-2-1.exp diff --git a/challenge-144/abigail/perl/ch-2.pl b/challenge-144/abigail/perl/ch-2.pl new file mode 100644 index 0000000000..c682d7a525 --- /dev/null +++ b/challenge-144/abigail/perl/ch-2.pl @@ -0,0 +1,50 @@ +#!/opt/perl/bin/perl + +use 5.032; + +use strict; +use warnings; +no warnings 'syntax'; + +use experimental 'signatures'; +use experimental 'lexical_subs'; + +use List::Util qw [min]; + +# +# See ../README.md +# + +# +# Run as: perl ch-2.pl < input-file +# + +sub ulam ($u1, $u2) { + die unless $u1 > 0 && $u2 > 0 && $u1 != $u2 + && $u1 == int $u1 && $u2 == int $u2; + ($u1, $u2) = ($u2, $u1) if $u1 > $u2; + + my @seen = ($u1, $u2); + my %sums; + $sums {$u1 + $u2} = 1; + my %todo = ($u1 + $u2, 1); + + while (%todo) { + my $next = min keys %todo; + delete $todo {$next}; + next if $sums {$next} > 1; + push @seen => $next; + return @seen if @seen >= 10; + + foreach my $seen (@seen) { + next if $seen == $next; + my $sum = $seen + $next; + $sums {$sum} ++; + $todo {$sum} = 1; + } + } +} + +$, = ", "; +say ulam /[0-9]+/g while <>; + diff --git a/challenge-144/abigail/t/ctest.ini b/challenge-144/abigail/t/ctest.ini index 88e8105056..d891360049 100644 --- a/challenge-144/abigail/t/ctest.ini +++ b/challenge-144/abigail/t/ctest.ini @@ -5,6 +5,7 @@ [names] 1-1 = Fixed output +2-1 = Given Examples [1-1] no_input = 1 diff --git a/challenge-144/abigail/t/input-2-1 b/challenge-144/abigail/t/input-2-1 new file mode 100644 index 0000000000..61becdbf4a --- /dev/null +++ b/challenge-144/abigail/t/input-2-1 @@ -0,0 +1,3 @@ +1 2 +2 3 +2 5 diff --git a/challenge-144/abigail/t/output-2-1.exp b/challenge-144/abigail/t/output-2-1.exp new file mode 100644 index 0000000000..97b1a800ee --- /dev/null +++ b/challenge-144/abigail/t/output-2-1.exp @@ -0,0 +1,3 @@ +1, 2, 3, 4, 6, 8, 11, 13, 16, 18 +2, 3, 5, 7, 8, 9, 13, 14, 18, 19 +2, 5, 7, 9, 11, 12, 13, 15, 19, 23 -- cgit From 11bec869bb9269ab76e427e90a5d6d367bfdc41c Mon Sep 17 00:00:00 2001 From: Abigail Date: Tue, 21 Dec 2021 01:06:41 +0100 Subject: Make it even more boring --- challenge-144/abigail/perl/ch-1.pl | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/challenge-144/abigail/perl/ch-1.pl b/challenge-144/abigail/perl/ch-1.pl index e65ce40412..f2908f64f6 100644 --- a/challenge-144/abigail/perl/ch-1.pl +++ b/challenge-144/abigail/perl/ch-1.pl @@ -18,19 +18,16 @@ use experimental 'lexical_subs'; # # -# And the upteenth time in succession, we'll use the divisors method. +# And the upteenth time in succession, we'll use Math::Prime::Util # -# BBOOOOOOOOOOOOORRRRRRRRRRRRRRRIIIIIIIIIIIIIIINNNNNNNNNNNNGGGGGGGGGG +# BBBBBBBBBBOOOOOOOOOOORRRRRRRRRRRIIIIIIIIIIINNNNNNNNNNNGGGGGGGGGG # # Besides, ANY challenge of the form "print the first N terms of an # OEIS sequence" is a trivial glorified hello world program. # -# Semiprimes have either 3 (squares of primes) or 4 divisors (product -# of two primes), but should not be cubes of primes. They only cubes -# of primes < 100 are 8 and 27. +# Semiprimes have exactly 2 factors. # -use Math::Prime::Util qw [divisors]; -my %cubes = map {$_ => 1} 8, 27; +use Math::Prime::Util qw [factor]; -say join ", " => grep {!$cubes {$_} && 3 <= divisors ($_) <= 4} 1 .. 100; +say join ", " => grep {2 == factor $_} 1 .. 100; -- cgit From 55672727e94158136846b2d99c8d7576c11e1dac Mon Sep 17 00:00:00 2001 From: Abigail Date: Tue, 21 Dec 2021 01:20:47 +0100 Subject: Simplified --- challenge-144/abigail/perl/ch-2.pl | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/challenge-144/abigail/perl/ch-2.pl b/challenge-144/abigail/perl/ch-2.pl index c682d7a525..d9dbb97da3 100644 --- a/challenge-144/abigail/perl/ch-2.pl +++ b/challenge-144/abigail/perl/ch-2.pl @@ -20,31 +20,24 @@ use List::Util qw [min]; # sub ulam ($u1, $u2) { - die unless $u1 > 0 && $u2 > 0 && $u1 != $u2 - && $u1 == int $u1 && $u2 == int $u2; - ($u1, $u2) = ($u2, $u1) if $u1 > $u2; - - my @seen = ($u1, $u2); - my %sums; - $sums {$u1 + $u2} = 1; - my %todo = ($u1 + $u2, 1); - - while (%todo) { - my $next = min keys %todo; - delete $todo {$next}; - next if $sums {$next} > 1; + my @seen = ($u1, $u2); + my %sums = ($u1 + $u2, 1); + + my $next; + while (%sums) { + $next = min keys %sums; # A heap saves a factor N/log N, but + # who cares about performance when we + # just want to do the first 10 numbers? + next if delete $sums {$next} > 1; push @seen => $next; return @seen if @seen >= 10; - foreach my $seen (@seen) { - next if $seen == $next; - my $sum = $seen + $next; - $sums {$sum} ++; - $todo {$sum} = 1; - } + $_ == $next || $sums {$_ + $next} ++ foreach @seen; } } + + $, = ", "; say ulam /[0-9]+/g while <>; -- cgit