aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-01-23 19:46:16 +0000
committerGitHub <noreply@github.com>2022-01-23 19:46:16 +0000
commita3ef8061e8b28fd26ff9aa4ee3fc9f39ceb55dc1 (patch)
treee65b7cbfb63e9b6bbcdb6b173bfec9215e70151d
parent919e4948116f4a0f1c1c2580b856dd221568dcb0 (diff)
parent895121c6f016a222efcfe4a99df34b8138fb2055 (diff)
downloadperlweeklychallenge-club-a3ef8061e8b28fd26ff9aa4ee3fc9f39ceb55dc1.tar.gz
perlweeklychallenge-club-a3ef8061e8b28fd26ff9aa4ee3fc9f39ceb55dc1.tar.bz2
perlweeklychallenge-club-a3ef8061e8b28fd26ff9aa4ee3fc9f39ceb55dc1.zip
Merge pull request #5552 from Abigail/abigail/week-148
Abigail/week 148
-rw-r--r--challenge-148/abigail/awk/ch-1.awk19
-rw-r--r--challenge-148/abigail/awk/ch-2.awk113
-rw-r--r--challenge-148/abigail/bash/ch-1.sh16
-rw-r--r--challenge-148/abigail/bash/ch-2.sh15
-rw-r--r--challenge-148/abigail/basic/ch-1.bas9
-rw-r--r--challenge-148/abigail/basic/ch-2.bas13
-rw-r--r--challenge-148/abigail/bc/ch-1.bc24
-rw-r--r--challenge-148/abigail/bc/ch-2.bc105
-rw-r--r--challenge-148/abigail/befunge-93/ch-1.bf932
-rw-r--r--challenge-148/abigail/befunge-93/ch-2.bf932
-rw-r--r--challenge-148/abigail/blog.txt1
-rw-r--r--challenge-148/abigail/blog1.txt1
-rw-r--r--challenge-148/abigail/c/ch-1.c24
-rw-r--r--challenge-148/abigail/c/ch-2.c145
-rw-r--r--challenge-148/abigail/cobol/ch-1.cb14
-rw-r--r--challenge-148/abigail/cobol/ch-2.cb18
-rw-r--r--challenge-148/abigail/csh/ch-1.csh11
-rw-r--r--challenge-148/abigail/csh/ch-2.csh15
-rw-r--r--challenge-148/abigail/erlang/ch-1.erl15
-rw-r--r--challenge-148/abigail/erlang/ch-2.erl15
-rw-r--r--challenge-148/abigail/forth/ch-1.fs5
-rw-r--r--challenge-148/abigail/forth/ch-2.fs9
-rw-r--r--challenge-148/abigail/fortran/ch-1.f9012
-rw-r--r--challenge-148/abigail/fortran/ch-2.f9016
-rw-r--r--challenge-148/abigail/go/ch-1.go26
-rw-r--r--challenge-148/abigail/go/ch-2.go122
-rw-r--r--challenge-148/abigail/java/ch-1.java24
-rw-r--r--challenge-148/abigail/java/ch-2.java105
-rw-r--r--challenge-148/abigail/lua/ch-1.lua21
-rw-r--r--challenge-148/abigail/lua/ch-2.lua109
-rw-r--r--challenge-148/abigail/m4/ch-1.m41
-rw-r--r--challenge-148/abigail/m4/ch-2.m45
-rw-r--r--challenge-148/abigail/mmix/ch-1.mms17
-rw-r--r--challenge-148/abigail/mmix/ch-2.mms20
-rw-r--r--challenge-148/abigail/node/ch-1.js17
-rw-r--r--challenge-148/abigail/node/ch-2.js101
-rw-r--r--challenge-148/abigail/ocaml/ch-1.ml9
-rw-r--r--challenge-148/abigail/ocaml/ch-2.ml9
-rw-r--r--challenge-148/abigail/pascal/ch-1.p26
-rw-r--r--challenge-148/abigail/pascal/ch-2.p121
-rw-r--r--challenge-148/abigail/perl/ch-1.pl61
-rw-r--r--challenge-148/abigail/perl/ch-2.pl167
-rw-r--r--challenge-148/abigail/php/ch-1.php11
-rw-r--r--challenge-148/abigail/php/ch-2.php11
-rw-r--r--challenge-148/abigail/postscript/ch-1.ps10
-rw-r--r--challenge-148/abigail/postscript/ch-2.ps10
-rw-r--r--challenge-148/abigail/python/ch-1.py19
-rw-r--r--challenge-148/abigail/python/ch-2.py80
-rw-r--r--challenge-148/abigail/r/ch-1.r11
-rw-r--r--challenge-148/abigail/r/ch-2.r95
-rw-r--r--challenge-148/abigail/rexx/ch-1.rexx9
-rw-r--r--challenge-148/abigail/rexx/ch-2.rexx13
-rw-r--r--challenge-148/abigail/ruby/ch-1.rb11
-rw-r--r--challenge-148/abigail/ruby/ch-2.rb95
-rw-r--r--challenge-148/abigail/scheme/ch-1.scm22
-rw-r--r--challenge-148/abigail/scheme/ch-2.scm12
-rw-r--r--challenge-148/abigail/sed/ch-1.sed12
-rw-r--r--challenge-148/abigail/sed/ch-2.sed16
-rw-r--r--challenge-148/abigail/sql/ch-1.sql9
-rw-r--r--challenge-148/abigail/sql/ch-2.sql13
-rw-r--r--challenge-148/abigail/t/ctest.ini11
-rw-r--r--challenge-148/abigail/t/input-1-11
-rw-r--r--challenge-148/abigail/t/input-2-11
-rw-r--r--challenge-148/abigail/t/output-1-1.exp1
-rw-r--r--challenge-148/abigail/t/output-2-1.exp5
-rw-r--r--challenge-148/abigail/tcl/ch-1.tcl17
-rw-r--r--challenge-148/abigail/tcl/ch-2.tcl95
67 files changed, 2170 insertions, 0 deletions
diff --git a/challenge-148/abigail/awk/ch-1.awk b/challenge-148/abigail/awk/ch-1.awk
new file mode 100644
index 0000000000..547cd72064
--- /dev/null
+++ b/challenge-148/abigail/awk/ch-1.awk
@@ -0,0 +1,19 @@
+#!/usr/bin/awk
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-148
+#
+
+#
+# Run as: awk -f ch-1.awk
+#
+
+BEGIN {
+ for (i = 0; i <= 100; i ++) {
+ if (! match (i, /^0$|[1789]|^2.|[35]$/)) {
+ printf ("%d ", i)
+ }
+ }
+ printf ("\n")
+}
+
diff --git a/challenge-148/abigail/awk/ch-2.awk b/challenge-148/abigail/awk/ch-2.awk
new file mode 100644
index 0000000000..7bbedf00a9
--- /dev/null
+++ b/challenge-148/abigail/awk/ch-2.awk
@@ -0,0 +1,113 @@
+#!/usr/bin/awk
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-148
+#
+
+#
+# Run as: awk -f ch-2.awk
+#
+
+
+BEGIN {
+ COUNT = 5
+ #
+ # Initialize out with high values.
+ # [1, 2, 3] will be values of the triples, [4] will be the sum
+ #
+ for (i = 1; i <= COUNT; i ++) {
+ out [i, 4] = 0
+ for (j = 1; j <= 3; j ++) {
+ out [i, j] = 999999
+ out [i, 4] += out [i, j]
+ }
+ }
+
+ max_index = 1 # Index of largest sum
+
+ for (k = 0; 3 * k + 2 <= out [max_index, 4]; k ++) {
+ a = 3 * k + 2
+ f1 = k + 1
+ f2 = 8 * k + 5
+
+ d1c = 0
+ d2c = 0
+
+ #
+ # Find divisors of f1
+ #
+ for (i = 1; i * i <= f1; i ++) {
+ if (f1 % i == 0) {
+ d1c = d1c + 1
+ d1 [d1c] = i
+ if (i != f1 / i) {
+ d1c = d1c + 1
+ d1 [d1c] = f1 / i
+ }
+ }
+ }
+
+ #
+ # Find divisors for f2, which are squares
+ #
+ for (i = 1; i * i <= f2; i ++) {
+ if (f2 % i == 0) {
+ s1 = sqrt (i)
+ s2 = sqrt (f2 / i)
+ if (s1 == int (s1)) {
+ d2c = d2c + 1
+ d2 [d2c] = s1
+ }
+ if (s2 == int (s2) && s1 != s2) {
+ d2c = d2c + 1
+ d2 [d2c] = s2
+ }
+ }
+ }
+
+ for (i = 1; i <= d1c; i ++) {
+ for (j = 1; j <= d2c; j ++) {
+ b = d1 [i] * d2 [j]
+ c = f1 * f1 * f2 / (b * b)
+ if (a + b + c < out [max_index, 4]) {
+ #
+ # Skip duplicates
+ #
+ seen = 0
+ for (m = 1; m <= COUNT; m ++) {
+ if (out [m, 1] == a && out [m, 2] == b) {
+ seen = 1
+ }
+ }
+ if (seen) {
+ break
+ }
+
+ out [max_index, 1] = a
+ out [max_index, 2] = b
+ out [max_index, 3] = c
+ out [max_index, 4] = a + b + c
+
+ #
+ # Find the new max_index
+ #
+ max_index = 1
+ max_sum = out [max_index, 4]
+ for (l = 2; l <= COUNT; l ++) {
+ if (out [l, 4] > max_sum) {
+ max_sum = out [l, 4]
+ max_index = l
+ }
+ }
+ }
+ }
+ }
+ }
+
+ #
+ # Print the array
+ #
+ for (i = 1; i <= COUNT; i ++) {
+ printf ("%d %d %d\n", out [i, 1], out [i, 2], out [i, 3])
+ }
+}
diff --git a/challenge-148/abigail/bash/ch-1.sh b/challenge-148/abigail/bash/ch-1.sh
new file mode 100644
index 0000000000..8c2a94a75b
--- /dev/null
+++ b/challenge-148/abigail/bash/ch-1.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-148
+#
+
+#
+# Run as: bash ch-1.sh
+#
+
+for ((i = 0; i <= 100; i ++))
+do if [[ !($i =~ ^0$|[1789]|^2.|[35]$) ]]
+ then printf "%d " $i
+ fi
+done
+echo
diff --git a/challenge-148/abigail/bash/ch-2.sh b/challenge-148/abigail/bash/ch-2.sh
new file mode 100644
index 0000000000..fa387eb448
--- /dev/null
+++ b/challenge-148/abigail/bash/ch-2.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-148
+#
+
+#
+# Run as: bash ch-2.sh
+#
+
+echo "2 1 5"
+echo "5 2 13"
+echo "8 3 21"
+echo "17 18 5"
+echo "11 4 29"
diff --git a/challenge-148/abigail/basic/ch-1.bas b/challenge-148/abigail/basic/ch-1.bas
new file mode 100644
index 0000000000..b61a009a03
--- /dev/null
+++ b/challenge-148/abigail/basic/ch-1.bas
@@ -0,0 +1,9 @@
+010 REM
+020 REM See https://theweeklychallenge.org/blog/perl-weekly-challenge-148
+030 REM
+
+040 REM
+050 REM Run as: basic ch-1.bas
+060 REM
+
+100 PRINT "2 4 6 30 32 34 36 40 42 44 46 50 52 54 56 60 62 64 66"
diff --git a/challenge-148/abigail/basic/ch-2.bas b/challenge-148/abigail/basic/ch-2.bas
new file mode 100644
index 0000000000..0e5a057e3b
--- /dev/null
+++ b/challenge-148/abigail/basic/ch-2.bas
@@ -0,0 +1,13 @@
+010 REM
+020 REM See https://theweeklychallenge.org/blog/perl-weekly-challenge-148
+030 REM
+
+040 REM
+050 REM Run as: basic ch-2.bas
+060 REM
+
+100 PRINT "2 1 5"
+110 PRINT "5 2 13"
+120 PRINT "8 3 21"
+130 PRINT "17 18 5"
+140 PRINT "11 4 29"
diff --git a/challenge-148/abigail/bc/ch-1.bc b/challenge-148/abigail/bc/ch-1.bc
new file mode 100644
index 0000000000..ae79ba0e77
--- /dev/null
+++ b/challenge-148/abigail/bc/ch-1.bc
@@ -0,0 +1,24 @@
+#!/usr/bin/bc
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-148
+#
+
+#
+# Run as: bc ch-1.bc
+#
+
+for (i = 0; i <= 100; i ++) {
+ t = i / 10
+ u = i % 10
+ if (!(i == 0 || t == 1 || u == 1 || t == 7 || u == 7 \
+ || t == 8 || u == 8 || t == 9 || u == 9 \
+ || t == 2 || u == 3 || u == 5 || i == 100)) {
+ print i, " "
+ }
+}
+
+"
+"
+
+halt
diff --git a/challenge-148/abigail/bc/ch-2.bc b/challenge-148/abigail/bc/ch-2.bc
new file mode 100644
index 0000000000..cb9280ebb2
--- /dev/null
+++ b/challenge-148/abigail/bc/ch-2.bc
@@ -0,0 +1,105 @@
+#!/usr/bin/bc
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-148
+#
+
+#
+# Run as: bc ch-2.bc
+#
+
+count = 5
+for (i = 1; i <= count; i ++) {
+ out_a [i] = 999999
+ out_b [i] = 999999
+ out_c [i] = 999999
+ out_sum [i] = out_a [i] + out_b [i] + out_c [i]
+}
+
+max_index = 1
+
+for (k = 0; 3 * k + 2 <= out_sum [max_index]; k ++) {
+ a = 3 * k + 2
+ f1 = k + 1
+ f2 = 8 * k + 5
+
+ d1c = 0
+ d2c = 0
+
+ #
+ # Find divisors of f1
+ #
+ for (i = 1; i * i <= f1; i ++) {
+ if (f1 % i == 0) {
+ d1c = d1c + 1
+ d1 [d1c] = i
+ if (i != f1 / i) {
+ d1c = d1c + 1
+ d1 [d1c] = f1 / i
+ }
+ }
+ }
+
+ #
+ # Find divisors of f2 which are squares
+ #
+ for (i = 1; i * i <= f2; i ++) {
+ if (f2 % i == 0) {
+ s1 = sqrt (i)
+ s2 = sqrt (f2 / i)
+ if (s1 * s1 == i) {
+ d2c = d2c + 1
+ d2 [d2c] = s1
+ }
+ if (s2 * s2 == f2 / i && s1 != s2) {
+ d2c = d2c + 1
+ d2 [d2c] = s2
+ }
+ }
+ }
+
+ for (i = 1; i <= d1c; i ++) {
+ for (j = 1; j <= d2c; j ++) {
+ b = d1 [i] * d2 [j]
+ c = f1 * f1 * f2 / (b * b)
+ if (a + b + c < out_sum [max_index]) {
+ seen = 0
+ for (m = 1; m <= count; m ++) {
+ if (out_a [m] == a && out_b [m] == b) {
+ seen = 1
+ }
+ }
+ if (seen == 1) {
+ break
+ }
+
+ out_a [max_index] = a
+ out_b [max_index] = b
+ out_c [max_index] = c
+ out_sum [max_index] = a + b + c
+ #
+ # Find the new max_index
+ #
+ max_index = 1
+ max_sum = out_sum [max_index]
+ for (l = 2; l <= count; l ++) {
+ if (out_sum [l] > max_sum) {
+ max_sum = out_sum [l]
+ max_index = l
+ }
+ }
+ }
+ }
+ }
+}
+
+#
+# Print the array
+#
+for (i = 1; i <= count; i ++) {
+ print out_a [i], " ", out_b [i], " ", out_c [i], "
+"
+}
+
+
+halt
diff --git a/challenge-148/abigail/befunge-93/ch-1.bf93 b/challenge-148/abigail/befunge-93/ch-1.bf93
new file mode 100644
index 0000000000..20f34afd4b
--- /dev/null
+++ b/challenge-148/abigail/befunge-93/ch-1.bf93
@@ -0,0 +1,2 @@
+< v,_@#:< "2 4 6 30 32 34 36 40 42 44 46 50 52 54 56 60 62 64 66" +55
+ > ^
diff --git a/challenge-148/abigail/befunge-93/ch-2.bf93 b/challenge-148/abigail/befunge-93/ch-2.bf93
new file mode 100644
index 0000000000..bf95c014c6
--- /dev/null
+++ b/challenge-148/abigail/befunge-93/ch-2.bf93
@@ -0,0 +1,2 @@
+< v,_@#:< "2 1 5" +55 "5 2 13" +55 "8 3 21" +55 "17 18 5" +55 "11 4 29" +55
+ > ^
diff --git a/challenge-148/abigail/blog.txt b/challenge-148/abigail/blog.txt
new file mode 100644
index 0000000000..045de8d1d2
--- /dev/null
+++ b/challenge-148/abigail/blog.txt
@@ -0,0 +1 @@
+https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-148-1.html
diff --git a/challenge-148/abigail/blog1.txt b/challenge-148/abigail/blog1.txt
new file mode 100644
index 0000000000..49faafc044
--- /dev/null
+++ b/challenge-148/abigail/blog1.txt
@@ -0,0 +1 @@
+https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-148-2.html
diff --git a/challenge-148/abigail/c/ch-1.c b/challenge-148/abigail/c/ch-1.c
new file mode 100644
index 0000000000..231a5efade
--- /dev/null
+++ b/challenge-148/abigail/c/ch-1.c
@@ -0,0 +1,24 @@
+# include <stdlib.h>
+# include <stdio.h>
+# include <string.h>
+
+/*
+ * See https://theweeklychallenge.org/blog/perl-weekly-challenge-148
+ */
+
+/*
+ * Run as: cc -o ch-1.o ch-1.c; ./ch-1.o
+ */
+
+int main (void) {
+ for (int i = 0; i <= 100; i ++) {
+ int u = i % 10;
+ int t = i / 10;
+ if (!(i == 0 || t == 1 || u == 1 || t == 7 || u == 7
+ || t == 8 || u == 8 || t == 9 || u == 9
+ || t == 2 || u == 3 || u == 5 || i == 100)) {
+ printf ("%d ", i);
+ }
+ }
+ printf ("\n");
+}
diff --git a/challenge-148/abigail/c/ch-2.c b/challenge-148/abigail/c/ch-2.c
new file mode 100644
index 0000000000..63e2db46e1
--- /dev/null
+++ b/challenge-148/abigail/c/ch-2.c
@@ -0,0 +1,145 @@
+# include <stdlib.h>
+# include <stdio.h>
+# include <string.h>
+# include <stdbool.h>
+# include <math.h>
+
+/*
+ * See https://theweeklychallenge.org/blog/perl-weekly-challenge-148
+ */
+
+/*
+ * Run as: cc -o ch-2.o ch-2.c; ./ch-2.o
+ */
+
+# define COUNT 5
+# define A 0
+# define B 1
+# define C 2
+# define SUM 3
+/* Overkill, but this will do */
+# define MAX_DIVISOR 100
+
+int main (void) {
+ int ** out;
+ int k = 0;
+
+ if ((out = (int **) malloc (COUNT * sizeof (int *))) == NULL) {
+ perror ("Malloc failed");
+ return (1);
+ }
+ for (size_t i = 0; i < COUNT; i ++) {
+ if ((out [i] = (int *) malloc (SUM * sizeof (int))) == NULL) {
+ perror ("Malloc failed");
+ return (1);
+ }
+ out [i] [A] = 999999;
+ out [i] [B] = 999999;
+ out [i] [C] = 999999;
+ out [i] [SUM] = out [i] [A] + out [i] [B] + out [i] [C];
+ }
+
+ size_t max_index = 0;
+
+
+ while (3 * k + 2 <= out [max_index] [SUM]) {
+ int a = 3 * k + 2;
+ int f1 = k + 1;
+ int f2 = 8 * k + 5;
+
+ int * d1;
+ int * d2;
+
+ if ((d1 = (int *) malloc (MAX_DIVISOR * sizeof (int))) == NULL) {
+ perror ("Malloc failed");
+ return (1);
+ }
+ if ((d2 = (int *) malloc (MAX_DIVISOR * sizeof (int))) == NULL) {
+ perror ("Malloc failed");
+ return (1);
+ }
+
+ size_t d1c = 0;
+ size_t d2c = 0;
+
+ /*
+ * Get the divisors for f1
+ */
+ for (int i = 1; i * i <= f1; i ++) {
+ if (f1 % i == 0) {
+ d1 [d1c ++] = i;
+ if (i != f1 / i) {
+ d1 [d1c ++] = f1 / i;
+ }
+ }
+ }
+
+ /*
+ * Get the square divisors of f2
+ */
+ for (int i = 1; i * i <= f2; i ++) {
+ if (f2 % i == 0) {
+ int s1 = (int) sqrt (i);
+ int s2 = (int) sqrt (f2 / i);
+ if (s1 * s1 == i) {
+ d2 [d2c ++] = s1;
+ }
+ if (s2 * s2 == f2 / i && s2 != s1) {
+ d2 [d2c ++] = s2;
+ }
+ }
+ }
+
+ for (size_t i = 0; i < d1c; i ++) {
+ for (size_t j = 0; j < d2c; j ++) {
+ int b = d1 [i] * d2 [j];
+ int c = f1 * f1 * f2 / (b * b);
+ if (a + b + c < out [max_index] [SUM]) {
+ /*
+ * Avoid duplicates
+ */
+ bool seen = false;
+ for (size_t i = 0; i < COUNT; i ++) {
+ if (out [i] [A] == a && out [i] [B] == b) {
+ seen = true;
+ break;
+ }
+ }
+ if (seen) {
+ break;
+ }
+
+ out [max_index] [A] = a;
+ out [max_index] [B] = b;
+ out [max_index] [C] = c;
+ out [max_index] [SUM] = a + b + c;
+
+ /*
+ * Find the next max index
+ */
+ max_index = 0;
+ int max_sum = out [max_index] [SUM];
+ for (size_t l = 1; l < COUNT; l ++) {
+ if (out [l] [SUM] > max_sum) {
+ max_sum = out [l] [SUM];
+ max_index = l;
+ }
+ }
+ }
+ }
+ }
+ free (d1);
+ free (d2);
+ k ++;