diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-11-04 20:17:52 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-04 20:17:52 +0000 |
| commit | e70b0509a48e09c26ee52ffca6e0ee4d33e696bf (patch) | |
| tree | b7eca790eb8d33933569df35b178284bac7f2627 | |
| parent | 28d1be0c3868078f8ab1561d493a192c4c22d3ff (diff) | |
| parent | 896f286ee0b88f2a381b5a97cbbbd82bbf4712af (diff) | |
| download | perlweeklychallenge-club-e70b0509a48e09c26ee52ffca6e0ee4d33e696bf.tar.gz perlweeklychallenge-club-e70b0509a48e09c26ee52ffca6e0ee4d33e696bf.tar.bz2 perlweeklychallenge-club-e70b0509a48e09c26ee52ffca6e0ee4d33e696bf.zip | |
Merge pull request #5161 from Abigail/abigail/week-137
Abigail/week 137
43 files changed, 3364 insertions, 5 deletions
diff --git a/challenge-133/abigail/blog.txt b/challenge-133/abigail/blog.txt index db2d358210..347f6c08d1 100644 --- a/challenge-133/abigail/blog.txt +++ b/challenge-133/abigail/blog.txt @@ -1 +1 @@ -https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-133-1.html +https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-137-1.html diff --git a/challenge-133/abigail/blog1.txt b/challenge-133/abigail/blog1.txt index d67cf83760..543d11bcea 100644 --- a/challenge-133/abigail/blog1.txt +++ b/challenge-133/abigail/blog1.txt @@ -1 +1 @@ -https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-133-2.html +https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-137-2.html diff --git a/challenge-137/abigail/README.md b/challenge-137/abigail/README.md index b1b1f2b0ef..6af7507c57 100644 --- a/challenge-137/abigail/README.md +++ b/challenge-137/abigail/README.md @@ -6,12 +6,17 @@ * [Bash](bash/ch-1.sh) * [Bc](bc/ch-1.bc) * [C](c/ch-1.c) +* [Erlang](c/ch-1.erl) * [Go](go/ch-1.go) * [Java](java/ch-1.java) * [Lua](lua/ch-1.lua) -* [Node.js](node/ch-1.js) +* Node.js + * [Using look-up](node/ch-1.js) + * [Using Doomsday values](node/ch-1a.js) * [Pascal](pascal/ch-1.p) -* [Perl](perl/ch-1.pl) +* Perl + * [Using look-up](perl/ch-1.pl) + * [Using Doomsday values](perl/ch-1a.pl) * [Python](python/ch-1.py) * [R](r/ch-1.r) * [Ruby](ruby/ch-1.rb) @@ -21,7 +26,7 @@ ## Part 2 * [AWK](awk/ch-2.awk) -* [Bash](bash/ch-1.sh) +* [Bash](bash/ch-2.sh) * [Bc](bc/ch-2.bc) * [C](c/ch-2.c) * [Go](go/ch-2.go) diff --git a/challenge-137/abigail/awk/ch-1.awk b/challenge-137/abigail/awk/ch-1.awk new file mode 100644 index 0000000000..f0d29a5887 --- /dev/null +++ b/challenge-137/abigail/awk/ch-1.awk @@ -0,0 +1,38 @@ +#!/usr/bin/awk + +# +# See ../README.md +# + +# +# Run as: awk -f ch-1.awk +# + +BEGIN { + m = split ("1600 2000", start_years) + n = split ("004 009 015 020 026 " \ + "032 037 043 048 054 " \ + "060 065 071 076 082 " \ + "088 093 099 " \ + " 105 111 116 122 " \ + "128 133 139 144 150 " \ + "156 161 167 172 178 " \ + "184 189 195 " \ + " 201 207 212 218 " \ + "224 229 235 240 246 " \ + "252 257 263 268 274 " \ + "280 285 291 296 " \ + " 303 308 314 " \ + "320 325 331 336 342 " \ + "348 353 359 364 370 " \ + "376 381 387 392 398", long_year_offsets) + + for (j = 1; j <= m; j ++) { + for (i = 1; i <= n; i ++) { + year = start_years [j] + long_year_offsets [i] + if (1900 <= year && year <= 2100) { + print year + } + } + } +} diff --git a/challenge-137/abigail/awk/ch-2.awk b/challenge-137/abigail/awk/ch-2.awk new file mode 100644 index 0000000000..281b28dc55 --- /dev/null +++ b/challenge-137/abigail/awk/ch-2.awk @@ -0,0 +1,23 @@ +#!/usr/bin/awk + +# +# See ../README.md +# + +# +# Run as: awk -f ch-2.awk < input-file +# + +function reverse (str) { + x = "" + for (i = length (str); i != 0; i --) { + x = x substr (str, i, 1) + } + return x +} + +function ly (n) { + return n >= 10000000 ? 1 : n == reverse(n) ? 0 : ly(n + reverse(n)) +} + +{print ly($1)} diff --git a/challenge-137/abigail/bash/ch-1.sh b/challenge-137/abigail/bash/ch-1.sh new file mode 100644 index 0000000000..667fa0a54d --- /dev/null +++ b/challenge-137/abigail/bash/ch-1.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +# +# See ../README.md +# + +# +# Run as: bash ch-1.sh +# + +set -f + +start_years=(1600 2000) +m=${#start_years[@]} + +long_year_offsets=( 4 9 15 20 26 32 37 43 48 54 \ + 60 65 71 76 82 88 93 99 \ + 105 111 116 122 128 133 139 144 150 \ + 156 161 167 172 178 184 189 195 \ + 201 207 212 218 224 229 235 240 246 \ + 252 257 263 268 274 280 285 291 296 \ + 303 308 314 320 325 331 336 342 \ + 348 353 359 364 370 376 381 387 392 398) +n=${#long_year_offsets[@]} + + +for ((j = 0; j < m; j ++)) +do for ((i = 0; i < n; i ++)) + do year=$((${start_years[$j]} + ${long_year_offsets[$i]})) + if ((1900 <= year && year <= 2100)) + then echo $year + fi + done +done + diff --git a/challenge-137/abigail/bash/ch-2.sh b/challenge-137/abigail/bash/ch-2.sh new file mode 100644 index 0000000000..6776acf025 --- /dev/null +++ b/challenge-137/abigail/bash/ch-2.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +# +# See ../README.md +# + +# +# Run as: bash ch-2.sh < input-file +# + +set -f +shopt -s extglob + +function reverse () { + local str=$1 + local len=${#str} + local rev="" + for ((i = len - 1; i >= 0; i --)) + do rev=$rev${str:$i:1} + done + reverse=$rev +} + +function ly () { + local n=$1 + reverse $n + local rev=${reverse/#+(0)/} + if ((n >= 10000000)) + then ly=1 + elif [[ $n = $rev ]] + then ly=0 + else ly $((n + rev)) + fi +} + +while read number +do ly $number + echo $ly +done diff --git a/challenge-137/abigail/bc/ch-1.bc b/challenge-137/abigail/bc/ch-1.bc new file mode 100644 index 0000000000..5ca2539d46 --- /dev/null +++ b/challenge-137/abigail/bc/ch-1.bc @@ -0,0 +1,93 @@ +# +# See ../README.md +# + +# +# Run as: bc ch-1.bc +# + +s [ 0] = 1600 +s [ 1] = 2000 + +o [ 0] = 4 +o [ 1] = 9 +o [ 2] = 15 +o [ 3] = 20 +o [ 4] = 26 +o [ 5] = 32 +o [ 6] = 37 +o [ 7] = 43 +o [ 8] = 48 +o [ 9] = 54 +o [10] = 60 +o [11] = 65 +o [12] = 71 +o [13] = 76 +o [14] = 82 +o [15] = 88 +o [16] = 93 +o [17] = 99 +o [18] = 105 +o [19] = 111 +o [20] = 116 +o [21] = 122 +o [22] = 128 +o [23] = 133 +o [24] = 139 +o [25] = 144 +o [26] = 150 +o [27] = 156 +o [28] = 161 +o [29] = 167 +o [30] = 172 +o [31] = 178 +o [32] = 184 +o [33] = 189 +o [34] = 195 +o [35] = 201 +o [36] = 207 +o [37] = 212 +o [38] = 218 +o [39] = 224 +o [40] = 229 +o [41] = 235 +o [42] = 240 +o [43] = 246 +o [44] = 252 +o [45] = 257 +o [46] = 263 +o [47] = 268 +o [48] = 274 +o [49] = 280 +o [50] = 285 +o [51] = 291 +o [52] = 296 +o [53] = 303 +o [54] = 308 +o [55] = 314 +o [56] = 320 +o [57] = 325 +o [58] = 331 +o [59] = 336 +o [60] = 342 +o [61] = 348 +o [62] = 353 +o [63] = 359 +o [64] = 364 +o [65] = 370 +o [66] = 376 +o [67] = 381 +o [68] = 387 +o [69] = 392 +o [70] = 398 + +for (i = 0; i < 2; i ++) { + for (j = 0; j < 71; j ++) { + y = s [i] + o [j] + if (1900 <= y && y <= 2100) { + y + } + } +} + +quit diff --git a/challenge-137/abigail/bc/ch-2.bc b/challenge-137/abigail/bc/ch-2.bc new file mode 100644 index 0000000000..b0502d8f7a --- /dev/null +++ b/challenge-137/abigail/bc/ch-2.bc @@ -0,0 +1,32 @@ +# +# See ../README.md +# + +# +# Run as: bc ch-2.bc < input-file +# + +define r (n) { + v = 0 + while (n > 0) { + v *= 10 + v += n % 10 + n /= 10 + } + return (v) +} + + +define l (n) { + if (n >= 10000000) {return (1)} + if (n == r (n)) {return (0)} + return l (n + r (n)) +} + +while (1) { + n = read () + if (n == 0) {break} + l (n) +} + +quit diff --git a/challenge-137/abigail/c/ch-1.c b/challenge-137/abigail/c/ch-1.c new file mode 100644 index 0000000000..356b19321d --- /dev/null +++ b/challenge-137/abigail/c/ch-1.c @@ -0,0 +1,42 @@ +# 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 + */ + +short start_years [] = {1600, 2000}; +short long_year_offsets [] = { + 4, 9, 15, 20, 26, + 32, 37, 43, 48, 54, + 60, 65, 71, 76, 82, + 88, 93, 99, + 105, 111, 116, 122, + 128, 133, 139, 144, 150, + 156, 161, 167, 172, 178, + 184, 189, 195, + 201, 207, 212, 218, + 224, 229, 235, 240, 246, + 252, 257, 263, 268, 274, + 280, 285, 291, 296, + 303, 308, 314, + 320, 325, 331, 336, 342, + 348, 353, 359, 364, 370, + 376, 381, 387, 392, 398 +}; + +int main (void) { + for (size_t i = 0; i < 2; i ++) { + for (size_t j = 0; j < 71; j ++) { + short year = start_years [i] + long_year_offsets [j]; + if (1900 <= year && year <= 2100) { + printf ("%d\n", year); + } + } + } +} diff --git a/challenge-137/abigail/c/ch-2.c b/challenge-137/abigail/c/ch-2.c new file mode 100644 index 0000000000..14f3efecf3 --- /dev/null +++ b/challenge-137/abigail/c/ch-2.c @@ -0,0 +1,37 @@ +# 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 + */ + +long reverse (long number) { + long reverse = 0; + while (number > 0) { + reverse *= 10; + reverse += number % 10; + number /= 10; + } + return reverse; +} + +short ly (long n) { + return n >= 10000000 ? 1 + : n == reverse (n) ? 0 + : ly (n + reverse (n)); +} + +int main (void) { + long n; + + while (scanf ("%ld", &n) == 1) { + printf ("%d\n", ly (n)); + } + + return (0); +} diff --git a/challenge-137/abigail/erlang/ch-1.erl b/challenge-137/abigail/erlang/ch-1.erl new file mode 100644 index 0000000000..dd612e4d0d --- /dev/null +++ b/challenge-137/abigail/erlang/ch-1.erl @@ -0,0 +1,41 @@ +% +% 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]). + + +long_year ([], _) -> ok; +long_year (_, []) -> ok; + +long_year ([Start], [Offset | Offsets]) -> + Year = Start + Offset, + if (1900 =< Year) and (Year =< 2100) -> io:fwrite ("~B~n", [Year]); + true -> ok + end, + long_year ([Start], Offsets); + +long_year ([Start | Starts], Offsets) -> + long_year ([Start], Offsets), + long_year (Starts, Offsets). + +main () -> + Start_years = [1600, 2000], + Long_year_offsets = [ + 4, 9, 15, 20, 26, 32, 37, 43, 48, 54, + 60, 65, 71, 76, 82, 88, 93, 99, + 105, 111, 116, 122, 128, 133, 139, 144, 150, + 156, 161, 167, 172, 178, 184, 189, 195, + 201, 207, 212, 218, 224, 229, 235, 240, 246, + 252, 257, 263, 268, 274, 280, 285, 291, 296, + 303, 308, 314, 320, 325, 331, 336, 342, + 348, 353, 359, 364, 370, 376, 381, 387, 392, 398 + ], + long_year (Start_years, Long_year_offsets). diff --git a/challenge-137/abigail/go/ch-1.go b/challenge-137/abigail/go/ch-1.go new file mode 100644 index 0000000000..2e6c515d0d --- /dev/null +++ b/challenge-137/abigail/go/ch-1.go @@ -0,0 +1,44 @@ +package main + +// +// See ../README.md +// + +// +// Run as: go run ch-1.go +// + +import ( + "fmt" +) + +func main () { + start_years := [] int {1600, 2000} + long_year_offsets := [] int { + 4, 9, 15, 20, 26, + 32, 37, 43, 48, 54, + 60, 65, 71, 76, 82, + 88, 93, 99, + 105, 111, 116, 122, + 128, 133, 139, 144, 150, + 156, 161, 167, 172, 178, + 184, 189, 195, + 201, 207, 212, 218, + 224, 229, 235, 240, 246, + 252, 257, 263, 268, 274, + 280, 285, 291, 296, + 303, 308, 314, + 320, 325, 331, 336, 342, + 348, 353, 359, 364, 370, + 376, 381, 387, 392, 398, + } + + for _, start_year := range start_years { + for _, offset := range long_year_offsets { + year := start_year + offset + if 1900 <= year && year <= 2100 { + fmt . Println (year) + } + } + } +} diff --git a/challenge-137/abigail/go/ch-2.go b/challenge-137/abigail/go/ch-2.go new file mode 100644 index 0000000000..31815d21aa --- /dev/null +++ b/challenge-137/abigail/go/ch-2.go @@ -0,0 +1,40 @@ +package main + +// +// See ../README.md +// + +// +// Run as: go run ch-2.go < input-file +// + +import ( + "fmt" +) + +func reverse (num int) int { + rev := 0 + for num > 0 { + rev *= 10 + rev += num % 10 + num /= 10 + } + return rev +} + +func ly (n int) int { + if n >= 10000000 {return 1} + if n == reverse (n) {return 0} + return ly (n + reverse (n)) +} + +func main () { + for { + var num int + n, err := fmt . Scanf ("%d", &num) + if n != 1 || err != nil { + break + } + fmt . Println (ly (num)) + } +} diff --git a/challenge-137/abigail/java/ch-1.java b/challenge-137/abigail/java/ch-1.java new file mode 100644 index 0000000000..f15167da39 --- /dev/null +++ b/challenge-137/abigail/java/ch-1.java @@ -0,0 +1,42 @@ +// +// See ../README.md +// + +// +// Run as: ln ch-1.java ch1.java; javac ch1.java; java ch1 +// + +import java.util.*; + +public class ch1 { + static int [] start_years = {1600, 2000}; + static int [] long_year_offsets = { + 4, 9, 15, 20, 26, + 32, 37, 43, 48, 54, + 60, 65, 71, 76, 82, + 88, 93, 99, + 105, 111, 116, 122, + 128, 133, 139, 144, 150, + 156, 161, 167, 172, 178, + 184, 189, 195, + 201, 207, 212, 218, + 224, 229, 235, 240, 246, + 252, 257, 263, 268, 274, + 280, 285, 291, 296, + 303, 308, 314, + 320, 325, 331, 336, 342, + 348, 353, 359, 364, 370, + 376, 381, 387, 392, 398, + }; + + public static void main (String [] args) { + for (int start_year: start_years) { + for (int offset: long_year_offsets) { + int year = start_year + offset; + if (1900 <= year && year <= 2100) { + System . out . println (year); + } + } + } + } +} diff --git a/challenge-137/abigail/java/ch-2.java b/challenge-137/abigail/java/ch-2.java new file mode 100644 index 0000000000..20b8034d2b --- /dev/null +++ b/challenge-137/abigail/java/ch-2.java @@ -0,0 +1,34 @@ +// +// See ../README.md +// + +// +// Run as: ln ch-2.java ch2.java; javac ch2.java; java ch2 < input-file +// + +import java.util.*; + +public class ch2 { + static int reverse (int num) { + int rev = 0; + while (num > 0) { + rev *= 10; + rev += num % 10; + num /= 10; + } + return (rev); + } + + static int ly (int n) { + return n >= 10000000 ? 1 + : n == reverse (n) ? 0 + : ly (n + reverse (n)); + } + + public static void main (String [] args) { + Scanner scanner = new Scanner (System . in); + while (scanner . hasNextInt ()) { + System . out . println (ly (scanner . nextInt ())); + } + } +} diff --git a/challenge-137/abigail/lua/ch-1.lua b/challenge-137/abigail/lua/ch-1.lua new file mode 100644 index 0000000000..9f85c39fb4 --- /dev/null +++ b/challenge-137/abigail/lua/ch-1.lua @@ -0,0 +1,38 @@ +#!/opt/local/bin/lua + +-- +-- See ../README.md +-- + +-- +-- Run as: lua ch-1.lua +-- + +local start_years = {1600, 2000} +local long_year_offsets = { + 4, 9, 15, 20, 26, + 32, 37, 43, 48, 54, + 60, 65, 71, 76, 82, + 88, 93, 99, + 105, 111, 116, 122, + 128, 133, 139, 144, 150, + 156, 161, 167, 172, 178, + 184, 189, 195, + 201, 207, 212, 218, + 224, 229, 235, 240, 246, + 252, 257, 263, 268, 274, + 280, 285, 291, 296, + 303, 308, 314, + 320, 325, 331, 336, 342, + 348, 353, 359, 364, 370, + 376, 381, 387, 392, 398 +} + +for i = 1, #start_years do + for j = 1, #long_year_offsets do + local year = start_years [i] + long_year_offsets [j] + if 1900 <= year and year <= 2100 then + print (year) + end + end +end diff --git a/challenge-137/abigail/lua/ch-2.lua b/challenge-137/abigail/lua/ch-2.lua new file mode 100644 index 0000000000..1cfb4f84e9 --- /dev/null +++ b/challenge-137/abigail/lua/ch-2.lua @@ -0,0 +1,34 @@ +#!/opt/local/bin/lua + +-- +-- See ../README.md +-- + +-- +-- Run as: lua ch-2.lua < input-file +-- + +function reverse (num) + local rev = 0 + while num > 0 do + rev = rev * 10 + rev = rev + (num % 10) + num = math . floor (num / 10) + end + return (rev) +end + + +function ly (n) + if n >= 10000000 + then return (1) + elseif n == reverse (n) + then return (0) + else return (ly (n + reverse (n))) + end +end + + +for number in io . lines () do + print (ly (tonumber (number))) +end diff --git a/challenge-137/abigail/node/ch-1.js b/challenge-137/abigail/node/ch-1.js new file mode 100644 index 0000000000..a744551341 --- /dev/null +++ b/challenge-137/abigail/node/ch-1.js @@ -0,0 +1,40 @@ +#!/usr/local/bin/node + +// +// See ../README.md +// + +// +// Run as: node ch-1.js +// + + +let start_years = [1600, 2000] +let long_year_offsets = [ + 4, 9, 15, 20, 26, + 32, 37, 43, 48, 54, + 60, 65, 71, 76, 82, + 88, 93, 99, + 105, 111, 116, 122, + 128, 133, 139, 144, 150, + 156, 161, 167, 172, 178, + 184, 189, 195, + 201, 207, 212, 218, + 224, 229, 235, 240, 246, + 252, 257, 263, 268, 274, + 280, 285, 291, 296, + 303, 308, 314, + 320, 325, 331, 336, 342, + 348, 353, 359, 364, 370, + 376, 381, 387, 392, 398 +] + + +start_years . forEach (start_year => { + long_year_offsets . forEach (offset => { + let year = start_year + offset + if (1900 <= year && year <= 2100) { + console . log (year) + } + }) +}) diff --git a/challenge-137/abigail/node/ch-1a.js b/challenge-137/abigail/node/ch-1a.js new file mode 100644 index 0000000000..e0e8d46341 --- /dev/null +++ b/challenge-137/abigail/node/ch-1a.js @@ -0,0 +1,37 @@ +#!/usr/local/bin/node + +// +// See ../README.md +// + +// |
