aboutsummaryrefslogtreecommitdiff
path: root/challenge-147/abigail/java
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-147/abigail/java')
-rw-r--r--challenge-147/abigail/java/ch-1.java54
-rw-r--r--challenge-147/abigail/java/ch-2.java32
2 files changed, 86 insertions, 0 deletions
diff --git a/challenge-147/abigail/java/ch-1.java b/challenge-147/abigail/java/ch-1.java
new file mode 100644
index 0000000000..9b3b57be9e
--- /dev/null
+++ b/challenge-147/abigail/java/ch-1.java
@@ -0,0 +1,54 @@
+//
+// See https://theweeklychallenge.org/blog/perl-weekly-challenge-147
+//
+
+//
+// Run as: ln ch-1.java ch1.java; javac ch1.java; java ch1
+//
+
+import java.util.*;
+import java.util.ArrayList;
+
+public class ch1 {
+ public static boolean is_prime (int p) {
+ if (p == 2) {return true;}
+ if (p % 2 == 0) {return false;}
+ for (int i = 3; i * i <= p; i += 2) {
+ if (p % i == 0) {return false;}
+ }
+ return (true);
+ }
+
+ public static void main (String [] args) {
+ ArrayList <Integer> todo = new ArrayList <Integer> ();
+ todo . add (2);
+ todo . add (3);
+ todo . add (5);
+ todo . add (7);
+ for (int p: todo) {
+ System . out . printf ("%d ", p);
+ }
+ int count = 20 - todo . size ();
+ int pow = 10;
+ main:
+ while (todo . size () > 0) {
+ ArrayList <Integer> new_todo = new ArrayList <Integer> ();
+ for (int d = 1; d <= 9; d ++) {
+ for (int p: todo) {
+ int candidate = d * pow + p;
+ if (is_prime (candidate)) {
+ System . out . printf ("%d ", candidate);
+ new_todo . add (candidate);
+ count --;
+ if (count <= 0) {
+ break main;
+ }
+ }
+ }
+ }
+ pow = pow * 10;
+ todo = new_todo;
+ }
+ System . out . print ("\n");
+ }
+}
diff --git a/challenge-147/abigail/java/ch-2.java b/challenge-147/abigail/java/ch-2.java
new file mode 100644
index 0000000000..5469775b97
--- /dev/null
+++ b/challenge-147/abigail/java/ch-2.java
@@ -0,0 +1,32 @@
+//
+// See https://theweeklychallenge.org/blog/perl-weekly-challenge-147
+//
+
+//
+// Run as: ln ch-2.java ch2.java; javac ch2.java; java ch2
+//
+
+import java.util.*;
+
+public class ch2 {
+ public static void main (String [] args) {
+ int p = 0;
+ int n = 0;
+ Map <Integer, Boolean> pentagon = new Hashtable <Integer, Boolean> ();
+ boolean done = false;
+ while (true) {
+ p += n + n + n + 1;
+ n ++;
+ pentagon . put (p, true);
+ for (Map . Entry <Integer, Boolean> entry: pentagon . entrySet ()) {
+ Integer seen = entry . getKey ();
+ if (seen + seen < p &&
+ pentagon . containsKey (p - seen) &&
+ pentagon . containsKey (p - seen - seen)) {
+ System . out . printf ("%d %d\n", seen, p - seen);
+ return;
+ }
+ }
+ }
+ }
+}