From f3712555d5d9c9614366ed1998e8e4c8751674a2 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Sun, 18 Nov 2012 07:50:09 -0500 Subject: [PATCH] Go Euclid! --- algs4/Makefile | 20 +++++++++++ algs4/src/meatballhat.com/algs4-gcd/main.go | 38 +++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 algs4/Makefile create mode 100644 algs4/src/meatballhat.com/algs4-gcd/main.go diff --git a/algs4/Makefile b/algs4/Makefile new file mode 100644 index 0000000..7df9fa2 --- /dev/null +++ b/algs4/Makefile @@ -0,0 +1,20 @@ +CLEAN_GOPATH := $(shell echo $(GOPATH) | tr ":" "\n" | grep -v '^$$' | grep -v $(PWD) | tr "\n" ":") +GOPATH := $(PWD):$(CLEAN_GOPATH) +PACKAGES := meatballhat.com/algs4-gcd + +test: build + go test $(PACKAGES) + +build: deps + go install $(PACKAGES) + +fmt: + go fmt $(PACKAGES) + +deps: + go get $(PACKAGES) + +clean: + rm -v bin/* + +.PHONY: test build clean fmt diff --git a/algs4/src/meatballhat.com/algs4-gcd/main.go b/algs4/src/meatballhat.com/algs4-gcd/main.go new file mode 100644 index 0000000..c7fa5f1 --- /dev/null +++ b/algs4/src/meatballhat.com/algs4-gcd/main.go @@ -0,0 +1,38 @@ +package main + +import ( + "fmt" + "os" + "strconv" +) + +const USAGE string = `Usage: algs4-gcd ` + +func gcd(p, q uint64) uint64 { + if q == 0 { + return p + } + r := p % q + return gcd(q, r) +} + +func main() { + if len(os.Args) < 3 { + fmt.Println(USAGE) + os.Exit(1) + } + + p, err := strconv.ParseUint(os.Args[1], 10, 0) + if err != nil { + fmt.Println("Wherps: ", err) + os.Exit(1) + } + + q, err := strconv.ParseUint(os.Args[2], 10, 0) + if err != nil { + fmt.Println("Wherps: ", err) + os.Exit(1) + } + + fmt.Println(gcd(p, q)) +}