aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-146/abigail/README.md20
-rw-r--r--challenge-146/abigail/awk/ch-1.awk13
-rw-r--r--challenge-146/abigail/awk/ch-2.awk30
-rw-r--r--challenge-146/abigail/bash/ch-1.sh11
-rw-r--r--challenge-146/abigail/bash/ch-2.sh27
-rw-r--r--challenge-146/abigail/basic/ch-1.bas9
-rw-r--r--challenge-146/abigail/bc/ch-1.bc10
-rw-r--r--challenge-146/abigail/bc/ch-2.bc26
-rw-r--r--challenge-146/abigail/befunge-93/ch-1.bf932
-rw-r--r--challenge-146/abigail/blog.txt1
-rw-r--r--challenge-146/abigail/blog1.txt1
-rw-r--r--challenge-146/abigail/c/ch-1.c16
-rw-r--r--challenge-146/abigail/c/ch-2.c33
-rw-r--r--challenge-146/abigail/cobol/ch-1.cb14
-rw-r--r--challenge-146/abigail/csh/ch-1.csh11
-rw-r--r--challenge-146/abigail/erlang/ch-1.erl15
-rw-r--r--challenge-146/abigail/forth/ch-1.fs5
-rw-r--r--challenge-146/abigail/fortran/ch-1.f9012
-rw-r--r--challenge-146/abigail/go/ch-1.go15
-rw-r--r--challenge-146/abigail/go/ch-2.go42
-rw-r--r--challenge-146/abigail/java/ch-1.java13
-rw-r--r--challenge-146/abigail/java/ch-2.java33
-rw-r--r--challenge-146/abigail/lua/ch-1.lua11
-rw-r--r--challenge-146/abigail/lua/ch-2.lua28
-rw-r--r--challenge-146/abigail/m4/ch-1.m41
-rw-r--r--challenge-146/abigail/mmix/ch-1.mms16
-rw-r--r--challenge-146/abigail/node/ch-1.js11
-rw-r--r--challenge-146/abigail/node/ch-2.js31
-rw-r--r--challenge-146/abigail/ocaml/ch-1.ml9
-rw-r--r--challenge-146/abigail/pascal/ch-1.p13
-rw-r--r--challenge-146/abigail/pascal/ch-2.p42
-rw-r--r--challenge-146/abigail/perl/ch-1.pl31
-rw-r--r--challenge-146/abigail/perl/ch-2.pl40
-rw-r--r--challenge-146/abigail/php/ch-1.php11
-rw-r--r--challenge-146/abigail/postscript/ch-1.ps10
-rw-r--r--challenge-146/abigail/python/ch-1.py11
-rw-r--r--challenge-146/abigail/python/ch-2.py24
-rw-r--r--challenge-146/abigail/r/ch-1.r9
-rw-r--r--challenge-146/abigail/r/ch-2.r31
-rw-r--r--challenge-146/abigail/rexx/ch-1.rexx9
-rw-r--r--challenge-146/abigail/ruby/ch-1.rb11
-rw-r--r--challenge-146/abigail/ruby/ch-2.rb26
-rw-r--r--challenge-146/abigail/scheme/ch-1.scm9
-rw-r--r--challenge-146/abigail/scheme/ch-2.scm41
-rw-r--r--challenge-146/abigail/sed/ch-1.sed12
-rw-r--r--challenge-146/abigail/sql/ch-1.sql9
-rw-r--r--challenge-146/abigail/t/ctest.ini12
-rw-r--r--challenge-146/abigail/t/input-1-11
-rw-r--r--challenge-146/abigail/t/input-2-12
-rw-r--r--challenge-146/abigail/t/input-2-23
-rw-r--r--challenge-146/abigail/t/output-1-1.exp1
-rw-r--r--challenge-146/abigail/t/output-2-1.exp2
-rw-r--r--challenge-146/abigail/t/output-2-2.exp3
-rw-r--r--challenge-146/abigail/tcl/ch-1.tcl9
-rw-r--r--challenge-146/abigail/tcl/ch-2.tcl23
55 files changed, 859 insertions, 2 deletions
diff --git a/challenge-146/abigail/README.md b/challenge-146/abigail/README.md
index 9841e920c1..f819e6f82c 100644
--- a/challenge-146/abigail/README.md
+++ b/challenge-146/abigail/README.md
@@ -4,24 +4,40 @@
* [AWK](awk/ch-1.awk)
* [Bash](bash/ch-1.sh)
-* [bc](bc/ch-1.bc)
+* [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)
-* [Tcl](tcl/ch-1.tcl)
* [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)
diff --git a/challenge-146/abigail/awk/ch-1.awk b/challenge-146/abigail/awk/ch-1.awk
new file mode 100644
index 0000000000..53c43cdbc1
--- /dev/null
+++ b/challenge-146/abigail/awk/ch-1.awk
@@ -0,0 +1,13 @@
+#!/usr/bin/awk
+
+#
+# See ../README.md
+#
+
+#
+# Run as: awk -f ch-1.awk
+#
+
+BEGIN {
+ print "104743"
+} \ No newline at end of file
diff --git a/challenge-146/abigail/awk/ch-2.awk b/challenge-146/abigail/awk/ch-2.awk
new file mode 100644
index 0000000000..6556f70797
--- /dev/null
+++ b/challenge-146/abigail/awk/ch-2.awk
@@ -0,0 +1,30 @@
+#!/usr/bin/awk
+
+#
+# See ../README.md
+#
+
+#
+# Run as: awk -f ch-2.awk < input-file
+#
+
+BEGIN {
+ FS = "/"
+}
+
+{
+ a = $1; b = $2
+ for (i = 1; i <= 2; i ++) {
+ if (a < b) {
+ b = b - a
+ }
+ else {
+ a = a - b
+ }
+ if (!a || !b) {
+ break
+ }
+ printf "%d/%d ", a, b
+ }
+ printf "\n"
+}
diff --git a/challenge-146/abigail/bash/ch-1.sh b/challenge-146/abigail/bash/ch-1.sh
new file mode 100644
index 0000000000..64ba3a2d29
--- /dev/null
+++ b/challenge-146/abigail/bash/ch-1.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+#
+# See ../README.md
+#
+
+#
+# Run as: bash ch-1.sh
+#
+
+echo "104743" \ No newline at end of file
diff --git a/challenge-146/abigail/bash/ch-2.sh b/challenge-146/abigail/bash/ch-2.sh
new file mode 100644
index 0000000000..5a5ee147f5
--- /dev/null
+++ b/challenge-146/abigail/bash/ch-2.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+#
+# See ../README.md
+#
+
+#
+# Run as: bash ch-2.sh < input-file
+#
+
+set -f
+
+IFS=/
+
+while read a b
+do for ((i = 1; i <= 2; i ++))
+ do if ((a < b))
+ then ((b -= a))
+ else ((a -= b))
+ fi
+ if ((a == 0 || b == 0))
+ then break
+ fi
+ printf "$a/$b "
+ done
+ echo
+done
diff --git a/challenge-146/abigail/basic/ch-1.bas b/challenge-146/abigail/basic/ch-1.bas
new file mode 100644
index 0000000000..0d4fc1fd20
--- /dev/null
+++ b/challenge-146/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 "104743" \ No newline at end of file
diff --git a/challenge-146/abigail/bc/ch-1.bc b/challenge-146/abigail/bc/ch-1.bc
new file mode 100644
index 0000000000..6a298809f8
--- /dev/null
+++ b/challenge-146/abigail/bc/ch-1.bc
@@ -0,0 +1,10 @@
+#
+# See ../README.md
+#
+
+#
+# Run as: bc ch-1.bc
+#
+"104743
+"
+quit \ No newline at end of file
diff --git a/challenge-146/abigail/bc/ch-2.bc b/challenge-146/abigail/bc/ch-2.bc
new file mode 100644
index 0000000000..04f267e202
--- /dev/null
+++ b/challenge-146/abigail/bc/ch-2.bc
@@ -0,0 +1,26 @@
+#
+# See ../README.md
+#
+
+#
+# Run as: bc ch-2.bc < input-file
+#
+
+while (1) {
+ a = read (); if (a == 0) {break}
+ b = read (); if (b == 0) {break}
+ for (i = 1; i <= 2; i ++) {
+ if (a < b) {
+ b = b - a
+ } else {
+ a = a - b
+ }
+ if (a == 0 || b == 0) {
+ break
+ }
+ print a, "/", b, " "
+ }
+ "
+"
+}
+
diff --git a/challenge-146/abigail/befunge-93/ch-1.bf93 b/challenge-146/abigail/befunge-93/ch-1.bf93
new file mode 100644
index 0000000000..2db34c5d84
--- /dev/null
+++ b/challenge-146/abigail/befunge-93/ch-1.bf93
@@ -0,0 +1,2 @@
+< v,_@#:< "104743" +55
+ > ^ \ No newline at end of file
diff --git a/challenge-146/abigail/blog.txt b/challenge-146/abigail/blog.txt
new file mode 100644
index 0000000000..52f0ef8198
--- /dev/null
+++ b/challenge-146/abigail/blog.txt
@@ -0,0 +1 @@
+https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-146-1.html
diff --git a/challenge-146/abigail/blog1.txt b/challenge-146/abigail/blog1.txt
new file mode 100644
index 0000000000..c3d3aa63e3
--- /dev/null
+++ b/challenge-146/abigail/blog1.txt
@@ -0,0 +1 @@
+https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-146-2.html
diff --git a/challenge-146/abigail/c/ch-1.c b/challenge-146/abigail/c/ch-1.c
new file mode 100644
index 0000000000..c2fb69f376
--- /dev/null
+++ b/challenge-146/abigail/c/ch-1.c
@@ -0,0 +1,16 @@
+# include <stdlib.h>
+# include <stdio.h>
+# include <string.h>
+
+/*
+ * See ../README.md
+ */
+
+/*
+ * Run as: cc -o ch-1.o ch-1.c; ./ch-1.o
+ */
+
+int main (void) {
+ printf ("104743\n");
+ exit (0);
+} \ No newline at end of file
diff --git a/challenge-146/abigail/c/ch-2.c b/challenge-146/abigail/c/ch-2.c
new file mode 100644
index 0000000000..ca81789f6f
--- /dev/null
+++ b/challenge-146/abigail/c/ch-2.c
@@ -0,0 +1,33 @@
+# include <stdlib.h>
+# include <stdio.h>
+# include <string.h>
+
+/*
+ * See ../README.md
+ */
+
+/*
+ * Run as: cc -o ch-2.o ch-2.c; ./ch-2.o < input-file
+ */
+
+int main (void) {
+ int a, b;
+
+ while (scanf ("%d/%d", &a, &b) == 2) {
+ for (int i = 1; i <= 2; i ++) {
+ if (a < b) {
+ b -= a;
+ }
+ else {
+ a -= b;
+ }
+ if (!a || !b) {
+ break;
+ }
+ printf ("%d/%d ", a, b);
+ }
+ printf ("\n");
+ }
+
+ return (0);
+}
diff --git a/challenge-146/abigail/cobol/ch-1.cb b/challenge-146/abigail/cobol/ch-1.cb
new file mode 100644
index 0000000000..6769477733
--- /dev/null
+++ b/challenge-146/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 "104743".
+ STOP RUN.
diff --git a/challenge-146/abigail/csh/ch-1.csh b/challenge-146/abigail/csh/ch-1.csh
new file mode 100644
index 0000000000..4997623bf2
--- /dev/null
+++ b/challenge-146/abigail/csh/ch-1.csh
@@ -0,0 +1,11 @@
+#!/bin/csh
+
+#
+# See ../README.md
+#
+
+#
+# Run as: csh ch-1.csh
+#
+
+echo "104743" \ No newline at end of file
diff --git a/challenge-146/abigail/erlang/ch-1.erl b/challenge-146/abigail/erlang/ch-1.erl
new file mode 100644
index 0000000000..978a2ef1b4
--- /dev/null
+++ b/challenge-146/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 ("104743\n"). \ No newline at end of file
diff --git a/challenge-146/abigail/forth/ch-1.fs b/challenge-146/abigail/forth/ch-1.fs
new file mode 100644
index 0000000000..0ee96cf454
--- /dev/null
+++ b/challenge-146/abigail/forth/ch-1.fs
@@ -0,0 +1,5 @@
+\
+\ See ../README.md
+\
+
+.( 104743) \ No newline at end of file
diff --git a/challenge-146/abigail/fortran/ch-1.f90 b/challenge-146/abigail/fortran/ch-1.f90
new file mode 100644
index 0000000000..4cda0b2f0b
--- /dev/null
+++ b/challenge-146/abigail/fortran/ch-1.f90
@@ -0,0 +1,12 @@
+!
+! See ../README.md
+!
+
+!
+! Run as: gfortran -o ch-1.o ch-1.f90; ./ch-1.o
+!
+
+program ch1
+ implicit none
+ write (*, *) "104743"
+end \ No newline at end of file
diff --git a/challenge-146/abigail/go/ch-1.go b/challenge-146/abigail/go/ch-1.go
new file mode 100644
index 0000000000..52cc0af532
--- /dev/null
+++ b/challenge-146/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 ("104743\n")
+} \ No newline at end of file
diff --git a/challenge-146/abigail/go/ch-2.go b/challenge-146/abigail/go/ch-2.go
new file mode 100644
index 0000000000..6aff154b1f
--- /dev/null
+++ b/challenge-146/abigail/go/ch-2.go
@@ -0,0 +1,42 @@
+package main
+
+//
+// See ../README.md
+//
+
+//
+// Run as: go run ch-2.go
+//
+
+import (
+ "fmt"
+ "bufio"
+ "os"
+)
+
+func main () {
+ var reader = bufio . NewReader (os. Stdin)
+ for {
+ var text, err = reader . ReadString ('\n')
+ if (err != nil) {
+ break
+ }
+ var a, b int;
+ var n, err2 = fmt . Sscanf (text, "%d/%d", &a, &b)
+ if (n != 2 || err2 != nil) {
+ continue
+ }
+ for i := 1; i <= 2; i ++ {
+ if a < b {
+ b -= a
+ } else {
+ a -= b
+ }
+ if a == 0 || b == 0 {
+ break
+ }
+ fmt . Printf ("%d/%d ", a, b)
+ }
+ fmt . Println ("")
+ }
+}
diff --git a/challenge-146/abigail/java/ch-1.java b/challenge-146/abigail/java/ch-1.java
new file mode 100644
index 0000000000..33133c5aa1
--- /dev/null
+++ b/challenge-146/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 ("104743\n");
+ }
+} \ No newline at end of file
diff --git a/challenge-146/abigail/java/ch-2.java b/challenge-146/abigail/java/ch-2.java
new file mode 100644
index 0000000000..07ab2feea9
--- /dev/null
+++ b/challenge-146/abigail/java/ch-2.java
@@ -0,0 +1,33 @@
+//
+// See ../README.md
+//
+
+//
+// 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 . hasNextLine ()) {
+ String [] parts = scanner . nextLine () . trim () . split ("/");
+ int a = Integer . parseInt (parts [0]);
+ int b = Integer . parseInt (parts [1]);
+ for (int i = 1; i <= 2; i ++) {
+ if (a < b) {
+ b -= a;
+ }
+ else {
+ a -= b;
+ }
+ if (a == 0 || b == 0) {
+ break;
+ }
+ System . out . printf ("%d/%d ", a, b);
+ }
+ System . out . printf ("\n");
+ }
+ }
+}
diff --git a/challenge-146/abigail/lua/ch-1.lua b/challenge-146/abigail/lua/ch-1.lua
new file mode 100644
index 0000000000..563c4fbf4b
--- /dev/null
+++ b/challenge-146/abigail/lua/ch-1.lua
@@ -0,0 +1,11 @@
+#!/opt/local/bin/lua
+
+--
+-- See ../README.md
+--
+
+--
+-- Run as: lua ch-1.lua
+--
+
+print ("104743") \ No newline at end of file
diff --git a/challenge-146/abigail/lua/ch-2.lua b/challenge-146/abigail/lua/ch-2.lua
new file mode 100644
index 0000000000..7429222642
--- /dev/null
+++ b/challenge-146/abigail/lua/ch-2.lua
@@ -0,0 +1,28 @@
+#!/opt/local/bin/lua
+
+--
+-- See ../README.md
+--
+
+--
+-- Run as: lua ch-2.lua < input-file
+--
+
+for line in io . lines () do
+ local _, _, a, b = line : find ("([0-9]+)/([0-9]+)")
+ a = tonumber (a)
+ b = tonumber (b)
+ for i = 1, 2 do
+ if a < b then
+ b = b - a
+ else
+ a = a - b
+ end
+ if a == 0 or b == 0 then
+ goto out_of_loop
+ end
+ io . write (a .. "/" .. b .. " ")
+ end
+ ::out_of_loop::
+ io . write ("\n")
+end
diff --git a/challenge-146/abigail/m4/ch-1.m4 b/challenge-146/abigail/m4/ch-1.m4
new file mode 100644
index 0000000000..3f5232d9b5
--- /dev/null
+++ b/challenge-146/abigail/m4/ch-1.m4
@@ -0,0 +1 @@
+104743
diff --git a/challenge-146/abigail/mmix/ch-1.mms b/challenge-146/abigail/mmix/ch-1.mms
new file mode 100644
index 0000000000..a5c39532dd
--- /dev/null
+++ b/challenge-146/abigail/mmix/ch-1.mms
@@ -0,0 +1,16 @@
+%
+% See ../README.md
+%
+
+%
+% Run as: mmixal -o ch-1.mmo ch-1.mms; mmix -q ch-1.mmo
+%
+ LOC Data_Segment
+ GREG @
+Text BYTE "104743",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-146/abigail/node/ch-1.js b/challenge-146/abigail/node/ch-1.js
new file mode 100644
index 0000000000..51ce680b89
--- /dev/null
+++ b/challenge-146/abigail/node/ch-1.js
@@ -0,0 +1,11 @@
+#!/usr/local/bin/node
+
+//
+// See ../README.md
+//
+
+//
+// Run as: node ch-1.js
+//
+
+console . log ("104743") \ No newline at end of file
diff --git a/challenge-146/abigail/node/ch-2.js b/challenge-146/abigail/node/ch-2.js
new file mode 100644
index 0000000000..ce7fba74c7
--- /dev/null
+++ b/challenge-146/abigail/node/ch-2.js
@@ -0,0 +1,31 @@
+#!/usr/local/bin/node
+
+//
+// See ../README.md
+//
+
+//
+// Run as: node ch-2.js < input-file
+//
+
+ require ('readline')
+. createInterface ({input: process . stdin})
+. on ('line', line => {
+ let [a, b] = line . trim () . split ("/") . map (x => +x)
+ for (let i = 1; i <= 2; i ++) {
+ if (a < b) {
+ b -= a
+ }
+ else {
+ a -= b
+ }
+ if (a == 0 || b == 0) {
+ break
+ }
+ process . stdout . write (a . toString ())
+ process . stdout . write ("/")
+ process . stdout . write (b . toString ())
+ process . stdout . write (" ")
+ }
+ process . stdout . write ("\n")
+})
diff --git a/challenge-146/abigail/ocaml/ch-1.ml b/challenge-146/abigail/ocaml/ch-1.ml
new file mode 100644
index 0000000000..606c4d6dcc
--- /dev/null
+++ b/challenge-146/abigail/ocaml/ch-1.ml
@@ -0,0 +1,9 @@
+(* *)
+(* See ../README.md *)
+(* *)
+
+(* *)
+(* Run as: ocaml ch-1.ml *)
+(* *)
+
+print_endline "104743"; \ No newline at end of file
diff --git a/challenge-146/abigail/pascal/ch-1.p b/challenge-146/abigail/pascal/ch-1.p
new file mode 100644
index 0000000000..5cbe457fcf
--- /dev/null
+++ b/challenge-146/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 ('104743')
+end. \ No newline at end of file
diff --git a/challenge-146/abigail/pascal/ch-2.p b/challenge-146/abigail/pascal/ch-2.p
new file mode 100644
index 0000000000..983d69379c
--- /dev/null
+++ b/challenge-146/abigail/pascal/ch-2.p
@@ -0,0 +1,42 @@
+Program ch2;
+
+(* *)
+(* See ../README.md *)
+(* *)
+
+(* *)
+(* Run as: fpc -och-2.out ch-2.p; ./ch-2.out < input-file *)
+(* *)
+
+uses
+ sysutils;
+
+var
+ line: string;
+ a, b: integer;
+ i, x: integer;
+
+begin
+ while not eof do begin
+ readln (line);
+ x := pos ('/', line);
+ a := strtoint (copy (line, 1, x - 1));
+ b := strtoint (copy (line, x + 1, length (line) - x));
+ for i := 1 to 2 do begin
+ if a < b then begin
+ b := b - a;
+ end
+ else begin
+ a := a - b;
+ end;
+ if (a = 0) or (b = 0) then begin
+ break;
+ end;
+ write (a);
+ write ('/');
+ write (b);
+ write (' ');
+ end;
+ writeln ('');
+ end
+end.
diff --git a/challenge-146/abigail/perl/ch-1.pl b/challenge-146/abigail/perl/ch-1.pl
new file mode 100644
index 0000000000..1ea427f161
--- /dev/null
+++ b/challenge-146/abigail/perl/ch-1.pl
@@ -0,0 +1,31 @@
+#!/opt/perl/bin/perl
+
+use 5.032;
+
+use strict;
+use warnings;
+no warnings 'syntax';
+
+use experimental 'signatures';
+use experimental 'lexical_subs';
+
+#
+# See Project Euler, task 7.
+#
+
+#
+# Run as: perl ch-1.pl
+#
+
+#
+# Math::Prime::Util::PrimeArray gives us a tied array, so that it's
+# Nth element is the Nth prime. Which is all we need.
+#
+# Still far less efficient (both in loc and run time) than just "say 104743"
+#