aboutsummaryrefslogtreecommitdiff
path: root/challenge-114
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2021-05-26 22:53:24 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2021-05-26 22:53:24 +0100
commitc60a02b90df3d66d63b69db3ade3dafdf40f0db1 (patch)
tree45d371e9e82b6d1af54ef769b7d9c3d7995cf89a /challenge-114
parent581b155cfe4c42c7061b07f9e756ac7ddc3ea56b (diff)
downloadperlweeklychallenge-club-c60a02b90df3d66d63b69db3ade3dafdf40f0db1.tar.gz
perlweeklychallenge-club-c60a02b90df3d66d63b69db3ade3dafdf40f0db1.tar.bz2
perlweeklychallenge-club-c60a02b90df3d66d63b69db3ade3dafdf40f0db1.zip
- Added solutions by Laurent Rosenfeld.
Diffstat (limited to 'challenge-114')
-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/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
7 files changed, 79 insertions, 0 deletions
diff --git a/challenge-114/laurent-rosenfeld/blog.txt b/challenge-114/laurent-rosenfeld/blog.txt
new file mode 100644
index 0000000000..285fb333a3
--- /dev/null
+++ b/challenge-114/laurent-rosenfeld/blog.txt
@@ -0,0 +1 @@
+http://blogs.perl.org/users/laurent_r/2021/05/perl-weekly-challenge-114-next-palindrome-number-and-higher-integer-set-bits.html
diff --git a/challenge-114/laurent-rosenfeld/perl/ch-1.pl b/challenge-114/laurent-rosenfeld/perl/ch-1.pl
new file mode 100644
index 0000000000..d0feb4aa96
--- /dev/null
+++ b/challenge-114/laurent-rosenfeld/perl/ch-1.pl
@@ -0,0 +1,9 @@
+use strict;
+use warnings;
+use feature "say";
+
+my $num = shift // 1234;
+$num =~ s/^0+//; # remove leading 0s just in case
+while (++ $num) {
+ say $num and last if $num eq reverse $num;
+}
diff --git a/challenge-114/laurent-rosenfeld/perl/ch-2.pl b/challenge-114/laurent-rosenfeld/perl/ch-2.pl
new file mode 100644
index 0000000000..866f72a079
--- /dev/null
+++ b/challenge-114/laurent-rosenfeld/perl/ch-2.pl
@@ -0,0 +1,16 @@
+use strict;
+use warnings;
+use feature "say";
+
+sub number_of_1 {
+ my $in = shift;
+ my $count = 0;
+ $count += $_ for split //, sprintf "%b", $in;
+ return $count;
+}
+
+my $num = shift // 3;
+my $target = number_of_1 $num;
+while (++ $num) {
+ say $num and last if $target == number_of_1 $num;
+}
diff --git a/challenge-114/laurent-rosenfeld/raku/ch-1.raku b/challenge-114/laurent-rosenfeld/raku/ch-1.raku
new file mode 100644
index 0000000000..3931165d0c
--- /dev/null
+++ b/challenge-114/laurent-rosenfeld/raku/ch-1.raku
@@ -0,0 +1,8 @@
+use v6;
+
+my $input = @*ARGS[0] // 1234;
+for $input .. Inf -> $candidate {
+ next unless $candidate eq $candidate.flip;
+ say $candidate;
+ last;
+}
diff --git a/challenge-114/laurent-rosenfeld/raku/ch-2.raku b/challenge-114/laurent-rosenfeld/raku/ch-2.raku
new file mode 100644
index 0000000000..9e5957113c
--- /dev/null
+++ b/challenge-114/laurent-rosenfeld/raku/ch-2.raku
@@ -0,0 +1,13 @@
+use v6;
+
+sub number_of_1 (Int $in) {
+ my $count = [+] $in.base(2).comb;
+}
+
+my $input = @*ARGS[0] // 3;
+my $target = number_of_1 $input.Int;
+for $input ^.. Inf -> $candidate {
+ next unless $candidate.Int.&number_of_1 == $target;
+ say $candidate;
+ last;
+}
diff --git a/challenge-114/laurent-rosenfeld/scala/ch-1.scala b/challenge-114/laurent-rosenfeld/scala/ch-1.scala
new file mode 100644
index 0000000000..0b6e900cfc
--- /dev/null
+++ b/challenge-114/laurent-rosenfeld/scala/ch-1.scala
@@ -0,0 +1,11 @@
+object palindrome extends App {
+ var num = 1234
+ var found = 0
+ while (found == 0) {
+ if (num.toString == num.toString.reverse) {
+ println(num)
+ found = 1
+ }
+ num += 1
+ }
+}
diff --git a/challenge-114/laurent-rosenfeld/scala/ch-2.scala b/challenge-114/laurent-rosenfeld/scala/ch-2.scala
new file mode 100644
index 0000000000..1bd7fb90cb
--- /dev/null
+++ b/challenge-114/laurent-rosenfeld/scala/ch-2.scala
@@ -0,0 +1,21 @@
+object nextbin extends App {
+
+ def number_of_1(in: Int): Int = {
+ val binlist = in.toBinaryString.toList
+ var count = 0
+ for (char <- binlist) {
+ if (char == '1') count += 1
+ }
+ return count
+ }
+ var num = 111
+ val target = number_of_1(num)
+ var found = 0
+ while (found == 0) {
+ num += 1
+ if (number_of_1(num) == target) {
+ println(num)
+ found = 1
+ }
+ }
+}