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(&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
|
||||
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)
|
||||
solver.validate_row("row1", row1)
|
||||
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
|
||||
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)
|
||||
}
|
||||
|
||||
@ -84,7 +83,8 @@ func (solver *Solver) validate_row(name string, row string) {
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
@ -100,7 +100,8 @@ func (solver *Solver) validate_row(name string, row string) {
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
@ -118,3 +119,10 @@ func (solver *Solver) valid_char(char rune) bool {
|
||||
|
||||
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