Matthew Desmarais
12/9/2005 9:54:00 PM
StarLion wrote:
>def MakeBoard
> rcount = 0
> puts "Push enter, then begin input. (For Input Format Compliance, extra
>enter key is necessary)"
> gets
> board = [0,0,0,0,0,0,0,0,0]
> 9.times do
> instr = gets
> board[rcount] =
>[instr[0],instr[1],instr[2],instr[3],instr[4],instr[5],instr[6],instr[7],instr[8]]
> rcount += 1
> end
> return board
>end
>
>def CheckBoard(board)
> complete = 1 #Is the puzzle complete?
> problems = 0 #Are there any problems?
>
> #first, rows.
> h = 0
> 9.times do
> g = 0
> group = [0,0,0,0,0,0,0,0,0]
> 9.times do
> if board[h][g] == "."
> group[g] = 0
> complete = 0
> else
> group[g] = board[h][g]
> end
> end
> problems = VerifyGroup(group)
>
> #puts "Row " + h.to_s + " Problems? " + problems.to_s
>end
> #end Row Check
>
> #next, columns.
> h = 0
> 9.times do
> g = 0
> group = [0,0,0,0,0,0,0,0,0]
> 9.times do
> if board[g][h] == "."
> group[g] = 0
> complete = 0
> else
> group[g] = board[g][h]
> end
> end
> problems = VerifyGroup(group)
> #puts "Col " + h.to_s + " Problems? " + problems.to_s
> end
> ##end Col Check
>
> ##Finally, the tricky one... the Boxes..
> startx = 0
> starty = 0
> curx = 0
> cury = 0
> count = 0
> group = [0,0,0,0,0,0,0,0,0]
> 3.times do #Row Blocks
> 3.times do #Cols Blocks
> 3.times do #Rows of Block
> 3.times do #Cols of Block
> if board[curx][cury] == "."
> group[count] = 0
> else
> group[count] = board[curx][cury]
> end
> curx += 1
> end
> curx = startx
> cury += 1
> end #We now have a 3x3 block. Verify Data.
> problems = VerifyGroup(group)
> #puts "Box " + startx.to_s + "," + starty.to_s + " Problems? " +
>problems.to_s
> count = 0
> startx += 3
> cury = starty
> curx = startx
> end
> starty += 3
> startx = 0
> cury = starty
> curx = startx
> end
>
>#Resolve the output.
>if problems == 0
> if complete == 1
> $output = $output + "You've done it!\n"
> else
> $output = $output + "Looking good so far...\n"
> end
>else
> $output = $output + "You've got a problem.\n"
>end
>end #FINALLY!
>
>def VerifyGroup(group)
> #logic for Check
> flag = 0
> check = [0,0,0,0,0,0,0,0,0,0]
> group.each do |num|
> if check[num] == 0 && num != 0
> check[num] = 1
> else if num == 0
> check[0] = 0
> else
> flag = 1
> end
> num += 1
> end
> return flag
>end
>
>
>$output = ""
>n = gets
>n.to_i.times do
>board = MakeBoard()
>CheckBoard(board)
>puts $output
>end
>
>
>Throws unspecified "Syntax Error" on 126 (last line of the code -
>'end')... no idea what's going wrong?
>
>
Hi -
For starters, you're gonna want to replace "else if" with "elsif". The
"else if" starts a second if, so using "else if" will leave you one
"end" short. That'll get you a syntax error for sure.
Regards,
Matthew J Desmarais