Created
June 9, 2013 23:42
-
-
Save ayoformayo/5745738 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# row coordinate logic | |
ROW_1 = MY_BOARD[0] | |
ROW_2 = MY_BOARD[1] | |
ROW_3 = MY_BOARD[2] | |
ROW_4 = MY_BOARD[3] | |
ROW_5 = MY_BOARD[4] | |
ROW_6 = MY_BOARD[5] | |
ROW_7 = MY_BOARD[6] | |
ROW_8 = MY_BOARD[7] | |
ROW_9 = MY_BOARD[8] | |
# column coordinate logic | |
COLUMN_1 = [ | |
MY_BOARD[0][0],MY_BOARD[1][0],MY_BOARD[2][0], | |
MY_BOARD[3][0],MY_BOARD[4][0],MY_BOARD[5][0], | |
MY_BOARD[6][0],MY_BOARD[7][0],MY_BOARD[8][0] | |
] | |
COLUMN_2 = [ | |
MY_BOARD[0][1],MY_BOARD[1][1],MY_BOARD[2][1], | |
MY_BOARD[3][1],MY_BOARD[4][1],MY_BOARD[5][1], | |
MY_BOARD[6][1],MY_BOARD[7][1],MY_BOARD[8][1] | |
] | |
COLUMN_3 = [ | |
MY_BOARD[0][2],MY_BOARD[1][2],MY_BOARD[2][2], | |
MY_BOARD[3][2],MY_BOARD[4][2],MY_BOARD[5][2], | |
MY_BOARD[6][2],MY_BOARD[7][2],MY_BOARD[8][2] | |
] | |
COLUMN_4 = [ | |
MY_BOARD[0][3],MY_BOARD[1][3],MY_BOARD[2][3], | |
MY_BOARD[3][3],MY_BOARD[4][3],MY_BOARD[5][3], | |
MY_BOARD[6][3],MY_BOARD[7][3],MY_BOARD[8][3] | |
] | |
COLUMN_5 = [ | |
MY_BOARD[0][4],MY_BOARD[1][4],MY_BOARD[2][4], | |
MY_BOARD[3][4],MY_BOARD[4][4],MY_BOARD[5][4], | |
MY_BOARD[6][4],MY_BOARD[7][4],MY_BOARD[8][4] | |
] | |
COLUMN_6 = [ | |
MY_BOARD[0][5],MY_BOARD[1][5],MY_BOARD[2][5], | |
MY_BOARD[3][5],MY_BOARD[4][5],MY_BOARD[5][5], | |
MY_BOARD[6][5],MY_BOARD[7][5],MY_BOARD[8][5] | |
] | |
COLUMN_7 = [ | |
MY_BOARD[0][6],MY_BOARD[1][6],MY_BOARD[2][6], | |
MY_BOARD[3][6],MY_BOARD[4][6],MY_BOARD[5][6], | |
MY_BOARD[6][6],MY_BOARD[7][6],MY_BOARD[8][6] | |
] | |
COLUMN_8 = [ | |
MY_BOARD[0][7],MY_BOARD[1][7],MY_BOARD[2][7], | |
MY_BOARD[3][7],MY_BOARD[4][7],MY_BOARD[5][7], | |
MY_BOARD[6][7],MY_BOARD[7][7],MY_BOARD[8][7] | |
] | |
COLUMN_9 = [ | |
MY_BOARD[0][8],MY_BOARD[1][8],MY_BOARD[2][8], | |
MY_BOARD[3][8],MY_BOARD[4][8],MY_BOARD[5][8], | |
MY_BOARD[6][8],MY_BOARD[7][8],MY_BOARD[8][8] | |
] | |
#SECTOR_ coordinate logic | |
SECTOR_1 = [ | |
MY_BOARD[0][0],MY_BOARD[0][1],MY_BOARD[0][2], | |
MY_BOARD[1][0],MY_BOARD[1][1],MY_BOARD[1][2], | |
MY_BOARD[2][0],MY_BOARD[2][1],MY_BOARD[2][2] | |
] | |
SECTOR_2 = [ | |
MY_BOARD[0][3],MY_BOARD[0][4],MY_BOARD[0][5], | |
MY_BOARD[1][3],MY_BOARD[1][4],MY_BOARD[1][5], | |
MY_BOARD[2][3],MY_BOARD[2][4],MY_BOARD[2][5] | |
] | |
SECTOR_3 = [ | |
MY_BOARD[0][6],MY_BOARD[0][7],MY_BOARD[0][8], | |
MY_BOARD[1][6],MY_BOARD[1][7],MY_BOARD[1][8], | |
MY_BOARD[2][6],MY_BOARD[2][7],MY_BOARD[2][8] | |
] | |
SECTOR_4 = [ | |
MY_BOARD[3][0],MY_BOARD[3][1],MY_BOARD[3][2], | |
MY_BOARD[4][0],MY_BOARD[4][1],MY_BOARD[4][2], | |
MY_BOARD[5][0],MY_BOARD[5][1],MY_BOARD[5][2] | |
] | |
SECTOR_5 = [ | |
MY_BOARD[3][3],MY_BOARD[3][4],MY_BOARD[3][5], | |
MY_BOARD[4][3],MY_BOARD[4][4],MY_BOARD[4][5], | |
MY_BOARD[5][3],MY_BOARD[5][4],MY_BOARD[5][5] | |
] | |
SECTOR_6 = [ | |
MY_BOARD[3][6],MY_BOARD[3][7],MY_BOARD[3][8], | |
MY_BOARD[4][6],MY_BOARD[4][7],MY_BOARD[4][8], | |
MY_BOARD[5][6],MY_BOARD[5][7],MY_BOARD[5][8] | |
] | |
SECTOR_7 = [ | |
MY_BOARD[6][0],MY_BOARD[6][1],MY_BOARD[6][2], | |
MY_BOARD[7][0],MY_BOARD[7][1],MY_BOARD[7][2], | |
MY_BOARD[8][0],MY_BOARD[8][1],MY_BOARD[8][2] | |
] | |
SECTOR_8 = [ | |
MY_BOARD[6][3],MY_BOARD[6][4],MY_BOARD[6][5], | |
MY_BOARD[7][3],MY_BOARD[7][4],MY_BOARD[7][5], | |
MY_BOARD[8][3],MY_BOARD[8][4],MY_BOARD[8][5] | |
] | |
SECTOR_9 = [ | |
MY_BOARD[6][6],MY_BOARD[6][7],MY_BOARD[6][8], | |
MY_BOARD[7][6],MY_BOARD[7][7],MY_BOARD[7][8], | |
MY_BOARD[8][6],MY_BOARD[8][7],MY_BOARD[8][8] | |
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
board_string = File.readlines('sample.unsolved.txt').first.chomp | |
initial_board_array = board_string.split("") | |
def to_number(board) | |
board.map! do |number| | |
number.to_i | |
end | |
end | |
def create_rows(board) | |
rows = [] | |
x = board.each_slice(9) {|row| rows << row} | |
return rows | |
end | |
def inject_possibilities(board) | |
board = to_number(board) | |
board_with_rows = create_rows(board) | |
board_with_rows.map! do |rows| | |
rows.map! do |tile| | |
tile_array = [] | |
tile == 0 ? (tile_array = [1,2,3,4,5,6,7,8,9]) : (tile_array << tile) | |
end | |
end | |
end | |
MY_BOARD = inject_possibilities(initial_board_array) | |
load './board_coords.rb' | |
def solve!(array) | |
8.times do | |
array.each do |tile| | |
if tile.length == 1 | |
array.each do |box| | |
if box.length > 1 | |
box.delete_if { |num| num == tile[0] } | |
end | |
end | |
end | |
end | |
end | |
solver_2(array) | |
end | |
def solver_2(array) | |
array.each do |tile| | |
if tile.length > 1 | |
tile.each_with_index do |element, i| | |
if array.flatten.count(element) == 1 | |
tile.map! { element }.uniq! | |
end | |
end | |
end | |
end | |
end | |
def print_board(board) | |
board.each do |row| | |
row.each do |tile| | |
print tile.to_s.ljust(2) | |
end | |
print ("\n") | |
end | |
end | |
9.times do | |
solve!(ROW_1) | |
solve!(ROW_2) | |
solve!(ROW_3) | |
solve!(ROW_4) | |
solve!(ROW_5) | |
solve!(ROW_6) | |
solve!(ROW_7) | |
solve!(ROW_8) | |
solve!(ROW_9) | |
solve!(COLUMN_1) | |
solve!(COLUMN_2) | |
solve!(COLUMN_3) | |
solve!(COLUMN_4) | |
solve!(COLUMN_5) | |
solve!(COLUMN_6) | |
solve!(COLUMN_7) | |
solve!(COLUMN_8) | |
solve!(COLUMN_9) | |
solve!(SECTOR_1) | |
solve!(SECTOR_2) | |
solve!(SECTOR_3) | |
solve!(SECTOR_4) | |
solve!(SECTOR_5) | |
solve!(SECTOR_6) | |
solve!(SECTOR_7) | |
solve!(SECTOR_8) | |
solve!(SECTOR_9) | |
end | |
print_board(MY_BOARD) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
096040001100060004504810390007950043030080000405023018010630059059070830003590007 | |
105802000090076405200400819019007306762083090000061050007600030430020501600308900 | |
005030081902850060600004050007402830349760005008300490150087002090000600026049503 | |
096040001100060004504810390007950043030080000405023018010630059059070830003590007 | |
105802000090076405200400819019007306762083090000061050007600030430020501600308900 | |
005030081902850060600004050007402830349760005008300490150087002090000600026049503 | |
290500007700000400004738012902003064800050070500067200309004005000080700087005109 | |
080020000040500320020309046600090004000640501134050700360004002407230600000700450 | |
608730000200000460000064820080005701900618004031000080860200039050000100100456200 | |
370000001000700005408061090000010000050090460086002030000000000694005203800149500 | |
000689100800000029150000008403000050200005000090240801084700910500000060060410000 | |
030500804504200010008009000790806103000005400050000007800000702000704600610300500 | |
000075400000000008080190000300001060000000034000068170204000603900000020530200000 | |
300000000050703008000028070700000043000000000003904105400300800100040000968000200 | |
302609005500730000000000900000940000000000109000057060008500006000000003019082040 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment