aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2021-10-26 18:18:25 +0200
committerAbigail <abigail@abigail.be>2021-10-26 18:18:25 +0200
commit4894bf4150e87a883dcc94d1172df4feb4c5e45b (patch)
treecd72172025e898ab50d0a91ce6ff90969c083989
parent6f22a777308b07dcd433baf9ce525ba9dd95eedb (diff)
downloadperlweeklychallenge-club-4894bf4150e87a883dcc94d1172df4feb4c5e45b.tar.gz
perlweeklychallenge-club-4894bf4150e87a883dcc94d1172df4feb4c5e45b.tar.bz2
perlweeklychallenge-club-4894bf4150e87a883dcc94d1172df4feb4c5e45b.zip
Java solutions for week 136
-rw-r--r--challenge-136/abigail/README.md2
-rw-r--r--challenge-136/abigail/java/ch-1.java55
-rw-r--r--challenge-136/abigail/java/ch-2.java29
3 files changed, 86 insertions, 0 deletions
diff --git a/challenge-136/abigail/README.md b/challenge-136/abigail/README.md
index ecd34dfa17..3989f056f3 100644
--- a/challenge-136/abigail/README.md
+++ b/challenge-136/abigail/README.md
@@ -7,6 +7,7 @@
* [Bc](bc/ch-1.bc)
* [C](c/ch-1.c)
* [Go](go/ch-1.go)
+* [Java](java/ch-1.java)
* [Lua](lua/ch-1.lua)
* [Node.js](node/ch-1.js)
* [Perl](perl/ch-1.pl)
@@ -21,6 +22,7 @@
* [Bc](bc/ch-2.bc)
* [C](c/ch-2.c)
* [Go](go/ch-2.go)
+* [Java](java/ch-2.java)
* [Lua](lua/ch-2.lua)
* [Node.js](node/ch-2.js)
* [Perl](perl/ch-2.pl)
diff --git a/challenge-136/abigail/java/ch-1.java b/challenge-136/abigail/java/ch-1.java
new file mode 100644
index 0000000000..4fbc1db180
--- /dev/null
+++ b/challenge-136/abigail/java/ch-1.java
@@ -0,0 +1,55 @@
+//
+// See ../README.md
+//
+
+//
+// Run as: ln ch-1.java ch1.java; javac ch1.java; java ch1 < input-file
+//
+
+import java.util.*;
+
+public class ch1 {
+ //
+ // Find the GCD, using Stein's algorithm
+ // (https://en.wikipedia.org/wiki/Binary_GCD_algorithm)
+ //
+ public static int gcd (int u, int v) {
+ boolean u_odd = u % 2 != 0;
+ boolean v_odd = v % 2 != 0;
+
+ return u == v || v == 0 ? u
+ : u == 0 ? v
+ : !u_odd && !v_odd ? gcd (u >> 1, v >> 1) << 1
+ : !u_odd && v_odd ? gcd (u >> 1, v)
+ : u_odd && !v_odd ? gcd (u, v >> 1)
+ : u > v ? gcd (u - v, v)
+ : gcd (v - u, u);
+ }
+
+ //
+ // Return true if number is a power of n, that is, number == n ^ p
+ // for some non-negative integer p. Return false otherwise.
+ //
+ public static boolean is_power_of_n (int number, int n) {
+ return number < 1 ? false
+ : number == 1 ? true
+ : number % n != 0 ? false
+ : is_power_of_n (number / n, n);
+ }
+
+ public static boolean is_power_of_2 (int number) {
+ return is_power_of_n (number, 2);
+ }
+
+ public static void main (String [] args) {
+ Scanner scanner = new Scanner (System . in);
+ while (scanner . hasNextInt ()) {
+ int n = scanner . nextInt ();
+ int m = scanner . nextInt ();
+
+ int r = gcd (n, m);
+
+ System . out . println (r > 1 && is_power_of_2 (r) ? 1 : 0);
+ }
+ }
+}
diff --git a/challenge-136/abigail/java/ch-2.java b/challenge-136/abigail/java/ch-2.java
new file mode 100644
index 0000000000..f08384cf95
--- /dev/null
+++ b/challenge-136/abigail/java/ch-2.java
@@ -0,0 +1,29 @@
+//
+// 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 int count (int target, int this_fib, int prev_fib) {
+ return target < this_fib ? 0
+ : target == this_fib ? 1
+ : count (target - this_fib, this_fib + prev_fib, this_fib) +
+ count (target, this_fib + prev_fib, this_fib);
+ }
+
+ public static int count (int target) {
+ return count (target, 1, 1);
+ }
+
+ public static void main (String [] args) {
+ Scanner scanner = new Scanner (System . in);
+ while (scanner . hasNextInt ()) {
+ System . out . println (count (scanner . nextInt ()));
+ }
+ }
+}