From 4894bf4150e87a883dcc94d1172df4feb4c5e45b Mon Sep 17 00:00:00 2001 From: Abigail Date: Tue, 26 Oct 2021 18:18:25 +0200 Subject: Java solutions for week 136 --- challenge-136/abigail/README.md | 2 ++ challenge-136/abigail/java/ch-1.java | 55 ++++++++++++++++++++++++++++++++++++ challenge-136/abigail/java/ch-2.java | 29 +++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 challenge-136/abigail/java/ch-1.java create mode 100644 challenge-136/abigail/java/ch-2.java 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 ())); + } + } +} -- cgit