aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-125/abigail/README.md2
-rw-r--r--challenge-125/abigail/java/ch-1.java52
-rw-r--r--challenge-125/abigail/pascal/ch-1.p59
3 files changed, 113 insertions, 0 deletions
diff --git a/challenge-125/abigail/README.md b/challenge-125/abigail/README.md
index 85399168ce..edbb6b6ea7 100644
--- a/challenge-125/abigail/README.md
+++ b/challenge-125/abigail/README.md
@@ -32,8 +32,10 @@ Output: -1
* [AWK](awk/ch-1.awk)
* [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)
+* [Pascal](pascal/ch-1.p)
* [Perl](perl/ch-1.pl)
* [Python](python/ch-1.py)
* [Ruby](ruby/ch-1.rb)
diff --git a/challenge-125/abigail/java/ch-1.java b/challenge-125/abigail/java/ch-1.java
new file mode 100644
index 0000000000..722b6d0f81
--- /dev/null
+++ b/challenge-125/abigail/java/ch-1.java
@@ -0,0 +1,52 @@
+//
+// See ../README.md
+//
+
+//
+// Run as: ln ch-1.java ch1.java; javac ch1.java; java ch1 < input-file
+//
+
+import java.util.*;
+
+public class ch1 {
+ public static long introot (long square) {
+ return ((long) Math . floor (Math . sqrt (square)));
+ }
+
+ public static void main (String [] args) {
+ Scanner scanner = new Scanner (System . in);
+ while (scanner . hasNextInt ()) {
+ long n = scanner . nextInt ();
+ if (n <= 2) {
+ System . out . println ("-1");
+ continue;
+ }
+
+ long n_sq = n * n;
+ long c = n + 1;
+ long c_sq = n_sq + 2 * n + 1;
+
+ while (2 * c - 1 <= n_sq) {
+ long b_sq = c_sq - n_sq;
+ long b = introot (b_sq);
+
+ if (b_sq == b * b) {
+ System . out . printf ("%d %d %d\n", n, b, c);
+ }
+
+ c_sq += 2 * c + 1;
+ c += 1;
+ }
+
+ long max_a = (long) Math . floor (n / Math . sqrt (2));
+ long a = 3;
+ for (a = 3; a <= max_a; a ++) {
+ long b_sq = n_sq - a * a;
+ long b = introot (b_sq);
+ if (b_sq == b * b) {
+ System . out . printf ("%d %d %d\n", a, b, n);
+ }
+ }
+ }
+ }
+}
diff --git a/challenge-125/abigail/pascal/ch-1.p b/challenge-125/abigail/pascal/ch-1.p
new file mode 100644
index 0000000000..f6e2d93fb5
--- /dev/null
+++ b/challenge-125/abigail/pascal/ch-1.p
@@ -0,0 +1,59 @@
+Program XXX;
+
+(* *)
+(* See ../README.md *)
+(* *)
+
+(* *)
+(* Run as: fpc -och-1.out ch-1.p; ./ch-1.out < input-file *)
+(* *)
+
+uses
+ math;
+
+var
+ n, n_sq, a, max_a, b, b_sq, c, c_sq: int64;
+
+function introot (square: int64): int64;
+begin
+ introot := round (sqrt (square));
+end;
+
+
+begin
+ while (not eof) do begin
+ readln (n);
+ if n <= 2 then begin
+ writeln (-1);
+ continue;
+ end;
+
+ n_sq := n * n;
+ c := n + 1;
+ c_sq := n_sq + 2 * n + 1;
+
+ while (2 * c - 1 <= n_sq) do begin
+ b_sq := c_sq - n_sq;
+ b := introot (b_sq);
+ if b_sq = b * b then begin
+ writeln (n, ' ', b, ' ', c);
+ end;
+ c_sq := c_sq + 2 * c + 1;
+ c := c + 1;
+ end;
+
+ max_a := floor (n / sqrt (2));
+ for a := 3 to max_a do begin
+ b_sq := n_sq - a * a;
+ if b_sq < 0 then begin
+ writeln ('n = ', n, '; a = ', a, '; b_sq = ', b_sq);
+ continue;
+ end;
+
+ b := introot (b_sq);
+ if b_sq = b * b then begin
+ writeln (a, ' ', b, ' ', n);
+ end;
+ end;
+ end;
+end.