aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-117/abigail/README.md4
-rw-r--r--challenge-117/abigail/go/ch-1.go50
-rw-r--r--challenge-117/abigail/go/ch-2.go34
-rw-r--r--challenge-117/abigail/java/ch-1.java43
-rw-r--r--challenge-117/abigail/java/ch-2.java31
5 files changed, 162 insertions, 0 deletions
diff --git a/challenge-117/abigail/README.md b/challenge-117/abigail/README.md
index 7a565610d2..7db94b7f39 100644
--- a/challenge-117/abigail/README.md
+++ b/challenge-117/abigail/README.md
@@ -27,6 +27,8 @@ Write a script to find the missing row number.
* [AWK](awk/ch-1.awk)
* [Bash](bash/ch-1.sh)
* [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)
@@ -75,6 +77,8 @@ Output: R, LH
* [AWK](awk/ch-2.awk)
* [Bash](bash/ch-2.sh)
* [C](c/ch-2.c)
+* [Go](go/ch-2.go)
+* [Java](java/ch-1.java)
* [Lua](lua/ch-2.lua)
* [Node.js](node/ch-2.js)
* [Perl](perl/ch-2.pl)
diff --git a/challenge-117/abigail/go/ch-1.go b/challenge-117/abigail/go/ch-1.go
new file mode 100644
index 0000000000..70da9a07bd
--- /dev/null
+++ b/challenge-117/abigail/go/ch-1.go
@@ -0,0 +1,50 @@
+package main
+
+//
+// See ../README.md
+//
+
+//
+// Run as: go run ch-1.go
+//
+
+import (
+ "fmt"
+ "bufio"
+ "os"
+)
+
+func main () {
+ var i int
+ var sum int = 0
+ var SUM_15 int = 120
+
+ var reader = bufio . NewReader (os. Stdin)
+ for {
+ var text, err1 = reader . ReadString ('\n')
+ if (err1 != nil) {
+ //
+ // Break the loop on error -- EOF is an error
+ //
+ break
+ }
+ //
+ // Atoi isn't like atoi in C, so we use Sscanf
+ //
+ var n, err2 = fmt . Sscanf (text, "%d", &i)
+ if (n < 1 || err2 != nil) {
+ //
+ // If we can't scan, ignore the line
+ //
+ continue
+ }
+ //
+ // Tally the line numbers
+ //
+ sum += i
+ }
+ //
+ // Missing line number is 120 minus the tally
+ //
+ fmt . Printf ("%d\n", SUM_15 - sum)
+}
diff --git a/challenge-117/abigail/go/ch-2.go b/challenge-117/abigail/go/ch-2.go
new file mode 100644
index 0000000000..02d2dc2e91
--- /dev/null
+++ b/challenge-117/abigail/go/ch-2.go
@@ -0,0 +1,34 @@
+package main
+
+//
+// See ../README.md
+//
+
+//
+// Run as: go run ch-2.go
+//
+
+import (
+ "fmt"
+)
+
+func steps (x int, y int, path string) {
+ if (x == 0 && y == 0) {
+ fmt . Println (path)
+ }
+ if (x > 0) {
+ steps (x - 1, y + 1, path + "L")
+ steps (x - 1, y, path + "R")
+ }
+ if (y > 0) {
+ steps (x, y - 1, path + "H")
+ }
+}
+
+func main () {
+ var x int
+ var n, err = fmt . Scanf ("%d", &x)
+ if (n == 1 && err == nil) {
+ steps (x, 0, "")
+ }
+}
diff --git a/challenge-117/abigail/java/ch-1.java b/challenge-117/abigail/java/ch-1.java
new file mode 100644
index 0000000000..6a03391c2e
--- /dev/null
+++ b/challenge-117/abigail/java/ch-1.java
@@ -0,0 +1,43 @@
+//
+// 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 void main (String [] args) {
+ Scanner scanner = new Scanner (System . in);
+ int sum = 0;
+ int SUM_15 = 120;
+ try {
+ while (true) {
+ String line = scanner . nextLine ();
+ //
+ // Googling suggest Java has a gazillion methods to
+ // convert string to integers -- and they all crap
+ // out if the string starts with a number, and has
+ // anything trailing. None of them actually similate atoi.
+ //
+ // So, handrolling it is!
+ //
+ int i, n = 0;
+ for (i = 0; i < line . length (); i ++) {
+ if (line . charAt (i) < "0" . charAt (0) ||
+ line . charAt (i) > "9" . charAt (0)) {
+ break;
+ }
+ n *= 10;
+ n += line . charAt (i) - "0" . charAt (0);
+ }
+ sum += n;
+ }
+ }
+ catch (Exception e) {
+ System . out . println (SUM_15 - sum);
+ }
+ }
+}
diff --git a/challenge-117/abigail/java/ch-2.java b/challenge-117/abigail/java/ch-2.java
new file mode 100644
index 0000000000..05ebce2e86
--- /dev/null
+++ b/challenge-117/abigail/java/ch-2.java
@@ -0,0 +1,31 @@
+//
+// See ../README.md
+//
+
+//
+// Run as: ln ch-2.java ch2.java; javac ch2.java; java ch2 < input-file
+//
+
+import java.util.*;
+
+
+public class ch2 {
+ static void steps (int x, int y, String path) {
+ if (x == 0 && y == 0) {
+ System . out . println (path);
+ }
+ if (x > 0) {
+ steps (x - 1, y + 1, path + "L");
+ steps (x - 1, y, path + "R");
+ }
+ if (y > 0) {
+ steps (x, y - 1, path + "H");
+ }
+ }
+
+ public static void main (String [] args) {
+ Scanner scanner = new Scanner (System . in);
+ int size = scanner . nextInt ();
+ steps (size, 0, "");
+ }
+}