Improved parameter handling.
This commit is contained in:
parent
c02aea543c
commit
6cd8deed23
@ -31,17 +31,15 @@ func (solver *Solver) parse_flags() {
|
|||||||
flag.StringVar(&row8, "row8", "000000000", "8th row of the sudoku puzzle.")
|
flag.StringVar(&row8, "row8", "000000000", "8th row of the sudoku puzzle.")
|
||||||
flag.StringVar(&row9, "row9", "000000000", "9th row of the sudoku puzzle.")
|
flag.StringVar(&row9, "row9", "000000000", "9th row of the sudoku puzzle.")
|
||||||
|
|
||||||
// Print additional help data
|
|
||||||
flag.Usage = func() {
|
|
||||||
fmt.Fprintf(flag.CommandLine.Output(), "Usages of %s:\n", os.Args[0])
|
|
||||||
fmt.Fprintf(flag.CommandLine.Output(), "\nPut every row of a Sudoku puzzle as paramters.\nUse '0' for what is currently blank in the puzzle you wish to solve.\n\n")
|
|
||||||
fmt.Fprintf(flag.CommandLine.Output(), "Example: %s -row1 ... -row2 ... -row3 ... (etc)\n\n", os.Args[0])
|
|
||||||
flag.PrintDefaults()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Parse the flags
|
// Parse the flags
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
|
if row1 == "000000000" || row2 == "000000000" || row3 == "000000000" || row4 == "000000000" || row5 == "000000000" || row6 == "000000000" || row7 == "000000000" || row8 == "000000000" || row9 == "000000000" {
|
||||||
|
log.Printf("ERROR: All parameters must be entered.\n\n")
|
||||||
|
solver.print_Usage()
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
// Validate the row (never trust user input)
|
// Validate the row (never trust user input)
|
||||||
solver.validate_row("row1", row1)
|
solver.validate_row("row1", row1)
|
||||||
solver.validate_row("row2", row2)
|
solver.validate_row("row2", row2)
|
||||||
@ -74,7 +72,8 @@ func (solver *Solver) validate_row(name string, row string) {
|
|||||||
|
|
||||||
// 1. Make sure the row is 9 in length
|
// 1. Make sure the row is 9 in length
|
||||||
if len(row) != 9 {
|
if len(row) != 9 {
|
||||||
log.Printf("ERROR: Invalid length of %s; %s must be 9 numbers", name, row)
|
log.Printf("ERROR: Invalid length of %s (%s), must be 9 numbers\n\n", name, row)
|
||||||
|
solver.print_Usage()
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,7 +83,8 @@ func (solver *Solver) validate_row(name string, row string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !found {
|
if !found {
|
||||||
log.Printf("ERROR: Invalid character of %s; %s must be 9 numbers", name, row)
|
log.Printf("ERROR: Invalid character of %s (%s), must be 9 numbers\n\n", name, row)
|
||||||
|
solver.print_Usage()
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,7 +100,8 @@ func (solver *Solver) validate_row(name string, row string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if double {
|
if double {
|
||||||
log.Printf("ERROR: Double character of %s; %s numbers between 1 and 9 may only be entered once", name, row)
|
log.Printf("ERROR: Double character of %s (%s), numbers between 1 and 9 may only be entered once\n\n", name, row)
|
||||||
|
solver.print_Usage()
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,3 +119,10 @@ func (solver *Solver) valid_char(char rune) bool {
|
|||||||
|
|
||||||
return valid
|
return valid
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (solver *Solver) print_Usage() {
|
||||||
|
fmt.Fprintf(flag.CommandLine.Output(), "Usage of %s:\n", os.Args[0])
|
||||||
|
fmt.Fprintf(flag.CommandLine.Output(), "\nPut every row of a Sudoku puzzle as paramters.\nUse '0' for what is currently blank in the puzzle you wish to solve.\n\n")
|
||||||
|
fmt.Fprintf(flag.CommandLine.Output(), "Example: %s -row1 ... -row2 ... -row3 ... (etc)\n\n", os.Args[0])
|
||||||
|
flag.PrintDefaults()
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user