summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anderson <ejona86@gmail.com>2014-07-03 19:34:38 -0700
committerEric Anderson <ejona86@gmail.com>2014-07-03 19:51:55 -0700
commit4cbd7844ced1d1da19f7470e556a3fbf426e9ca1 (patch)
tree48dc0cf11ac53f2891b9f70e299451ad8ee76b90
parent459fac21019be383c7892228959fc234d29b2dc3 (diff)
downloadcapset-4cbd7844ced1d1da19f7470e556a3fbf426e9ca1.tar.gz
capset-4cbd7844ced1d1da19f7470e556a3fbf426e9ca1.zip
Add flags and improve usage message
-rw-r--r--capset.go65
1 files changed, 43 insertions, 22 deletions
diff --git a/capset.go b/capset.go
index 421f7f1..c0b9bbe 100644
--- a/capset.go
+++ b/capset.go
@@ -312,53 +312,74 @@ func (cs *Capset) GetTableau() []Card {
return cs.tableau
}
-func loadFromSave(d *Deck) *Capset {
- savefile, err := os.Open("./capset.out")
+func loadFromSave(d *Deck, saveFile string, initialMaxim int) (*Capset, error) {
+ savefile, err := os.Open(saveFile)
if err != nil {
- return nil
+ return nil, err
}
defer savefile.Close()
scanner := bufio.NewScanner(savefile)
for scanner.Scan() {
}
- cs := NewCapset(d, -1)
- _, err = fmt.Sscanln(scanner.Text(), cs)
- if err != nil {
- return nil
+ if err := scanner.Err(); err != nil {
+ return nil, err
+ }
+ cs := NewCapset(d, initialMaxim)
+ if _, err := fmt.Sscanln(scanner.Text(), cs); err != nil {
+ return nil, err
}
- return cs
+ fmt.Print("Loaded save file\n")
+ return cs, nil
}
func main() {
+ flag.Usage = func() {
+ fmt.Fprintf(os.Stderr, "Usage: %s [OPTIONS] DIMENSIONS\n", os.Args[0])
+ fmt.Fprintf(os.Stderr, "Calculate cards that do not contain a set.\n\n")
+ flag.PrintDefaults()
+ }
+ initialMaxim := flag.Int("maxim", -1, "initial maxim to use; -1 for auto")
+ saveFile := flag.String("save-file", "", "file to save progress to")
+
flag.Parse()
args := flag.Args()
if len(args) != 1 {
- fmt.Println("Usage: capset dim\n\tdim int := number of dimensions/attributes")
- log.Fatal("Improper Usage")
+ flag.Usage()
+ os.Exit(1)
}
dim, err := strconv.Atoi(args[0])
if err != nil {
log.Fatal(err)
}
d := NewDeck(dim)
- cs := loadFromSave(d)
+ var cs *Capset
+ var outfile *os.File
+ if *saveFile != "" {
+ var err error
+ cs, err = loadFromSave(d, *saveFile, *initialMaxim)
+ if err != nil && !os.IsNotExist(err) {
+ log.Fatal(err)
+ }
+
+ outfile, err = os.OpenFile(*saveFile,
+ os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer outfile.Close()
+ }
if cs == nil {
- cs = NewCapset(d, -1)
+ cs = NewCapset(d, *initialMaxim)
}
fmt.Println("Starting processing with", cs.tableau)
- outfile, err := os.OpenFile("./capset.out",
- os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
- if err != nil {
- log.Fatal(err)
- }
- defer outfile.Close()
-
for cs.FindNextCapset() {
fmt.Println(cs.GetTableau())
- _, err = fmt.Fprintln(outfile, cs.GetTableau())
- if err != nil {
- log.Println(err)
+ if outfile != nil {
+ _, err = fmt.Fprintln(outfile, cs.GetTableau())
+ if err != nil {
+ log.Println(err)
+ }
}
}
}