aboutsummaryrefslogtreecommitdiff
path: root/challenge-114
diff options
context:
space:
mode:
authorDavid Schwartz <dms061@bucknell.edu>2021-05-30 23:35:14 -0400
committerDavid Schwartz <dms061@bucknell.edu>2021-05-30 23:35:14 -0400
commitf7817d4f601fb7f039b610162ce4cdf7a3c2297a (patch)
tree7811179d2b5e47797813a5387589b5b35489e735 /challenge-114
parentdc32df28d7c1a41694b16b97325407751bdb8a8b (diff)
parentaa519f5a1be2a316fe104086fc1eb52e3a819dcc (diff)
downloadperlweeklychallenge-club-f7817d4f601fb7f039b610162ce4cdf7a3c2297a.tar.gz
perlweeklychallenge-club-f7817d4f601fb7f039b610162ce4cdf7a3c2297a.tar.bz2
perlweeklychallenge-club-f7817d4f601fb7f039b610162ce4cdf7a3c2297a.zip
Merge remote-tracking branch 'upstream/master' into challenge114
Diffstat (limited to 'challenge-114')
-rw-r--r--challenge-114/aaronreidsmith/blog.txt1
-rw-r--r--challenge-114/aaronreidsmith/raku/ch-1.raku24
-rw-r--r--challenge-114/aaronreidsmith/raku/ch-2.raku30
-rw-r--r--challenge-114/abigail/README.md70
-rw-r--r--challenge-114/abigail/awk/ch-1.awk44
-rw-r--r--challenge-114/abigail/awk/ch-2.gawk47
-rw-r--r--challenge-114/abigail/bash/ch-1.sh62
-rw-r--r--challenge-114/abigail/bash/ch-2.sh39
-rw-r--r--challenge-114/abigail/blog.txt1
-rw-r--r--challenge-114/abigail/blog1.txt1
-rw-r--r--challenge-114/abigail/c/ch-1.c97
-rw-r--r--challenge-114/abigail/c/ch-2.c69
-rw-r--r--challenge-114/abigail/perl/ch-1.pl50
-rw-r--r--challenge-114/abigail/perl/ch-2.pl27
-rw-r--r--challenge-114/abigail/t/ctest.ini11
-rw-r--r--challenge-114/abigail/t/input-1-12
-rw-r--r--challenge-114/abigail/t/input-1-26
-rw-r--r--challenge-114/abigail/t/input-1-310
-rw-r--r--challenge-114/abigail/t/input-2-12
-rw-r--r--challenge-114/abigail/t/input-2-21024
-rw-r--r--challenge-114/abigail/t/output-1-1.exp2
-rw-r--r--challenge-114/abigail/t/output-1-2.exp6
-rw-r--r--challenge-114/abigail/t/output-1-3.exp10
-rw-r--r--challenge-114/abigail/t/output-2-1.exp2
-rw-r--r--challenge-114/abigail/t/output-2-2.exp1024
-rw-r--r--challenge-114/adam-russell/blog.txt1
-rw-r--r--challenge-114/adam-russell/blog1.txt1
-rw-r--r--challenge-114/adam-russell/perl/ch-1.pl23
-rw-r--r--challenge-114/adam-russell/perl/ch-2.pl36
-rw-r--r--challenge-114/adam-russell/prolog/ch-1.p18
-rw-r--r--challenge-114/adam-russell/prolog/ch-2.p26
-rw-r--r--challenge-114/arne-sommer/blog.txt1
-rw-r--r--challenge-114/arne-sommer/misc/tree1.svg119
-rw-r--r--challenge-114/arne-sommer/misc/tree2.svg109
-rw-r--r--challenge-114/arne-sommer/misc/tree3.svg119
-rwxr-xr-xchallenge-114/arne-sommer/perl/ch-1.pl25
-rwxr-xr-xchallenge-114/arne-sommer/perl/ch-2.pl34
-rwxr-xr-xchallenge-114/arne-sommer/perl/higher-integer-set-bits-perl34
-rwxr-xr-xchallenge-114/arne-sommer/perl/next-palindrome-number-perl25
-rwxr-xr-xchallenge-114/arne-sommer/raku/ch-1.raku14
-rwxr-xr-xchallenge-114/arne-sommer/raku/ch-2.raku22
-rwxr-xr-xchallenge-114/arne-sommer/raku/higher-integer-set-bits22
-rwxr-xr-xchallenge-114/arne-sommer/raku/next-palindrome-number14
-rw-r--r--challenge-114/athanasius/perl/ch-1.pl160
-rw-r--r--challenge-114/athanasius/perl/ch-2.pl201
-rw-r--r--challenge-114/athanasius/raku/ch-1.raku139
-rw-r--r--challenge-114/athanasius/raku/ch-2.raku183
-rw-r--r--challenge-114/cheok-yin-fung/perl/ch-1.pl61
-rw-r--r--challenge-114/cheok-yin-fung/perl/ch-2.pl66
-rw-r--r--challenge-114/christian-jaeger/blog.txt1
-rw-r--r--challenge-114/christian-jaeger/haskell/Makefile2
-rwxr-xr-xchallenge-114/christian-jaeger/perl/ch-1.pl212
-rw-r--r--challenge-114/colin-crain/blog.txt1
-rw-r--r--challenge-114/colin-crain/perl/ch-1.pl116
-rw-r--r--challenge-114/colin-crain/perl/ch-2.pl182
-rw-r--r--challenge-114/colin-crain/raku/ch-1.raku38
-rw-r--r--challenge-114/colin-crain/raku/ch-2.raku67
-rw-r--r--challenge-114/duncan-c-white/README62
-rw-r--r--challenge-114/duncan-c-white/perl/bintree.eg8
-rwxr-xr-xchallenge-114/duncan-c-white/perl/ch-1.pl49
-rwxr-xr-xchallenge-114/duncan-c-white/perl/ch-2.pl66
-rw-r--r--challenge-114/james-smith/README.md417
-rw-r--r--challenge-114/james-smith/blog.txt1
-rw-r--r--challenge-114/james-smith/perl/ch-1.pl69
-rw-r--r--challenge-114/james-smith/perl/ch-2.pl128
-rwxr-xr-xchallenge-114/jo-37/perl/ch-1.pl95
-rwxr-xr-xchallenge-114/jo-37/perl/ch-2.pl107
-rw-r--r--challenge-114/lance-wicks/perl/ch-1.pl12
-rw-r--r--challenge-114/lance-wicks/perl/lib/Palindrome.pm13
-rw-r--r--challenge-114/lance-wicks/perl/t/00-palindrome.t12
-rw-r--r--challenge-114/laurent-rosenfeld/blog.txt1
-rw-r--r--challenge-114/laurent-rosenfeld/perl/ch-1.pl9
-rw-r--r--challenge-114/laurent-rosenfeld/perl/ch-2.pl16
-rw-r--r--challenge-114/laurent-rosenfeld/python/ch-1.py8
-rw-r--r--challenge-114/laurent-rosenfeld/raku/ch-1.raku8
-rw-r--r--challenge-114/laurent-rosenfeld/raku/ch-2.raku13
-rw-r--r--challenge-114/laurent-rosenfeld/scala/ch-1.scala11
-rw-r--r--challenge-114/laurent-rosenfeld/scala/ch-2.scala21
-rw-r--r--challenge-114/mark-anderson/raku/ch-1.raku8
-rw-r--r--challenge-114/mark-anderson/raku/ch-2.raku10
-rw-r--r--challenge-114/mimosinnet/raku/ch-1.raku25
-rw-r--r--challenge-114/mimosinnet/raku/ch-2.raku25
-rw-r--r--challenge-114/pete-houston/perl/ch-1.pl48
-rw-r--r--challenge-114/pete-houston/perl/ch-2.pl83
-rw-r--r--challenge-114/polettix/blog.txt1
-rw-r--r--challenge-114/polettix/blog1.txt1
-rw-r--r--challenge-114/polettix/perl/ch-1.pl29
-rw-r--r--challenge-114/polettix/perl/ch-2.pl17
-rw-r--r--challenge-114/polettix/raku/ch-1.raku28
-rw-r--r--challenge-114/polettix/raku/ch-2.raku16
-rw-r--r--challenge-114/richard-park/apl/ch-1.aplf1
-rw-r--r--challenge-114/richard-park/apl/ch-2.aplf7
-rw-r--r--challenge-114/roger-bell-west/blog.txt1
-rw-r--r--challenge-114/tyler-wardhaugh/clojure/src/tw/weekly/c114/core.clj12
-rw-r--r--challenge-114/tyler-wardhaugh/clojure/src/tw/weekly/c114/t1.clj21
-rw-r--r--challenge-114/tyler-wardhaugh/clojure/src/tw/weekly/c114/t2.clj21
-rw-r--r--challenge-114/tyler-wardhaugh/clojure/test/tw/weekly/c114_test.clj14
-rw-r--r--challenge-114/wambash/raku/ch-1.raku22
-rw-r--r--challenge-114/wambash/raku/ch-2.raku26
-rw-r--r--challenge-114/wanderdoc/perl/ch-1.pl99
100 files changed, 5677 insertions, 697 deletions
diff --git a/challenge-114/aaronreidsmith/blog.txt b/challenge-114/aaronreidsmith/blog.txt
new file mode 100644
index 0000000000..8bb2dc2414
--- /dev/null
+++ b/challenge-114/aaronreidsmith/blog.txt
@@ -0,0 +1 @@
+https://aaronreidsmith.github.io/blog/perl-weekly-challenge-114/
diff --git a/challenge-114/aaronreidsmith/raku/ch-1.raku b/challenge-114/aaronreidsmith/raku/ch-1.raku
new file mode 100644
index 0000000000..5e67985a5f
--- /dev/null
+++ b/challenge-114/aaronreidsmith/raku/ch-1.raku
@@ -0,0 +1,24 @@
+#!/usr/bin/env raku
+
+sub challenge(Int $N) returns Int {
+ ($N^..Inf).first(-> $num { $num == $num.flip }, :v);
+}
+
+multi sub MAIN(Int $N) {
+ say challenge($N);
+}
+
+multi sub MAIN(Bool :$test) {
+ use Test;
+
+ my @tests = (
+ (1234, 1331),
+ (999, 1001)
+ );
+
+ for @tests -> ($N, $expected) {
+ is(challenge($N), $expected);
+ }
+
+ done-testing;
+}
diff --git a/challenge-114/aaronreidsmith/raku/ch-2.raku b/challenge-114/aaronreidsmith/raku/ch-2.raku
new file mode 100644
index 0000000000..20d191d790
--- /dev/null
+++ b/challenge-114/aaronreidsmith/raku/ch-2.raku
@@ -0,0 +1,30 @@
+#!/usr/bin/env raku
+
+sub bits(Int $base-ten) returns Int {
+ $base-ten.base(2).comb.grep(* eq '1').elems;
+}
+
+sub challenge(Int $N where $N > 0) returns Int {
+ my $bits = bits($N);
+ ($N^..Inf).first(-> $num { bits($num) == $bits }, :v);
+}
+
+multi sub MAIN(Int $N) {
+ say challenge($N);
+}
+
+multi sub MAIN(Bool :$test) {
+ use Test;
+
+ my @tests = (
+ (1, 2),
+ (3, 5),
+ (12, 17)
+ );
+
+ for @tests -> ($N, $expected) {
+ is(challenge($N), $expected);
+ }
+
+ done-testing;
+}
diff --git a/challenge-114/abigail/README.md b/challenge-114/abigail/README.md
index a026cb8bf7..7548aee37d 100644
--- a/challenge-114/abigail/README.md
+++ b/challenge-114/abigail/README.md
@@ -1,76 +1,58 @@
# Solutions by Abigail
-## [Represent Integer](https://perlweeklychallenge.org/blog/perl-weekly-challenge-113/#TASK1)
+## [Next Palindrome Number](https://perlweeklychallenge.org/blog/perl-weekly-challenge-114/#TASK1)
-> You are given a positive integer `$N` and a digit `$D`.
+> You are given a positive integer `$N`.
>
-> Write a script to check if `$N` can be represented as a sum
-> of positive integers having `$D` at least once. If check passes
-> print `1` otherwise `0`.
+> Write a script to find out the next Palindrome Number higher than
+> the given integer `$N`.
### Example
~~~~
-Input: $N = 25, $D = 7
-Output: 0 as there are 2 numbers between 1 and 25 having the digit 7
- i.e. 7 and 17. If we add up both we don't get 25.
+Input: $N = 1234
+Output: 1331
-Input: $N = 24, $D = 7
-Output: 1
+Input: $N = 999
+Output: 1001
~~~~
### Solutions
* [AWK](awk/ch-1.awk)
* [Bash](bash/ch-1.sh)
* [C](c/ch-1.c)
-* [Lua](lua/ch-1.lua)
-* [Node.js](node/ch-1.js)
* [Perl](perl/ch-1.pl)
-* [Python](python/ch-1.py)
-* [Ruby](ruby/ch-1.rb)
### Blog
-[Perl Weekly Challenge 113: Represent
-Integer](https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-113-1.html)
+[Next Palindrome Number](https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-114-1.html)
-## [Recreate Binary Tree](https://perlweeklychallenge.org/blog/perl-weekly-challenge-113/#TASK2)
+## [Higher Integer Set Bits](https://perlweeklychallenge.org/blog/perl-weekly-challenge-114/#TASK2)
-> You are given a Binary Tree.
+> You are given a positive integer `$N`.
>
-> Write a script to replace each node of the tree with the sum of
-> all the remaining nodes
+> Write a script to find the next higher integer having the same number of
+> `1` bits in binary representation as `$N`.
-### Example
-#### Input
+### Examples
~~~~
- 1
- / \
- 2 3
- / / \
- 4 5 6
- \
- 7
+Input: $N = 3
+Output: 5
~~~~
-#### Output
+
+Binary representation of `$N` is `011`. There are two `1` bits. So the next
+higher integer is `5` having the same the number of `1` bits i.e. `101`.
+
~~~~
- 27
- / \
- 26 25
- / / \
- 24 23 22
- \
- 21
+Input: $N = 12
+Output: 17
~~~~
+Binary representation of `$N` is `1100`. There are two `1` bits. So the next
+higher integer is `17` having the same number of `1` bits i.e. `10001`.
### Solutions
-* [AWK](awk/ch-2.awk)
+* [GNU AWK](awk/ch-2.gawk)
* [Bash](bash/ch-2.sh)
* [C](c/ch-2.c)
-* [Lua](lua/ch-2.lua)
-* [Node.js](node/ch-2.js)
* [Perl](perl/ch-2.pl)
-* [Python](python/ch-2.py)
-* [Ruby](ruby/ch-2.rb)
### Blog
-[Perl Weekly Challenge 113: Recreate Binary
-Tree](https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-113-2.html)
+[Higher Integet Set Bits](https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-114-2.html)
diff --git a/challenge-114/abigail/awk/ch-1.awk b/challenge-114/abigail/awk/ch-1.awk
new file mode 100644
index 0000000000..3d1822ea29
--- /dev/null
+++ b/challenge-114/abigail/awk/ch-1.awk
@@ -0,0 +1,44 @@
+#!/usr/bin/awk
+
+#
+# See ../README.md
+#
+
+#
+# Run as: awk -f ch-1.awk < input-file
+#
+
+function reverse (word, out, i) {
+ for (i = length (word); i > 0; i --) {
+ out = out substr (word, i, 1)
+ }
+ return out
+}
+
+
+
+/^9+$/ {
+ print $1 + 2
+ next
+}
+
+length ($1) == 1 {
+ print $1 + 1
+ next
+}
+
+{
+ part1 = substr ($1, 1, int (length ($1) / 2))
+ part2 = substr ($1, 1 + int (length ($1) / 2), length ($1) % 2)
+ part3 = substr ($1, 1 + int (length ($1) / 2) + length ($1) % 2)
+
+ if (reverse(part1) <= part3) {
+ part1 = (part1 part2) + 1
+ if (length (part2)) {
+ part2 = substr (part1, length (part1), 1)
+ part1 = substr (part1, 1, length (part1) - 1)
+ }
+ }
+
+ print part1 part2 reverse(part1)
+}
diff --git