Differences
This shows you the differences between two versions of the page.
tech:others:color_coordination_puzzle_solution_by_sql [2014/11/15 09:13] |
tech:others:color_coordination_puzzle_solution_by_sql [2014/11/15 09:13] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | Found an interesting way to solve [[tech:others:color_coordination_puzzle|the color coordination puzzle]]. This puzzle, like most other, can be solved with a computer program, and I did just that. However, with an approach, that I doubt if anyone has ever taken to solving puzzles. \\ | ||
+ | |||
+ | Without any more rhetoric here goes: I solved this puzzle using a database SQL, and here are the steps leading up to it (the solution took only milliseconds to process): \\ | ||
+ | |||
+ | <code> | ||
+ | Create a table called circles: | ||
+ | create table circles | ||
+ | ( | ||
+ | blk_num number not null, | ||
+ | color_position number not null, | ||
+ | color_cd char(1) not null | ||
+ | ); | ||
+ | </code> | ||
+ | |||
+ | Although Primary key needs to be only the 1st two columns I made all three as Primary Key for efficiency. \\ | ||
+ | |||
+ | Create the data with: \\ | ||
+ | |||
+ | <code> | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (1, 0, 'Y'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (1, 1, 'B'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (1, 2, 'R'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (1, 3, 'X'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (1, 4, 'W'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (1, 5, 'G'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (2, 0, 'Y'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (2, 1, 'G'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (2, 2, 'R'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (2, 3, 'W'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (2, 4, 'B'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (2, 5, 'X'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (3, 0, 'Y'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (3, 1, 'X'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (3, 2, 'B'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (3, 3, 'W'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (3, 4, 'R'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (3, 5, 'G'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (4, 0, 'Y'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (4, 1, 'R'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (4, 2, 'W'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (4, 3, 'X'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (4, 4, 'G'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (4, 5, 'B'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (5, 0, 'Y'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (5, 1, 'R'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (5, 2, 'W'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (5, 3, 'G'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (5, 4, 'X'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (5, 5, 'B'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (6, 0, 'Y'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (6, 1, 'G'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (6, 2, 'X'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (6, 3, 'R'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (6, 4, 'W'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (6, 5, 'B'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (0, 0, 'Y'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (0, 1, 'W'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (0, 2, 'B'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (0, 3, 'G'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (0, 4, 'R'); | ||
+ | Insert into CIRCLES (BLK_NUM, COLOR_POSITION, COLOR_CD) Values (0, 5, 'X'); | ||
+ | COMMIT; | ||
+ | </code> | ||
+ | |||
+ | |||
+ | And finally run the SQL: \\ | ||
+ | <code> | ||
+ | select c11.*,c12.*,c13.*,c14.*,c15.*,c16.*,cc1.* | ||
+ | from | ||
+ | circles c11, circles c12, circles c13, circles c14, circles c15, circles c16, | ||
+ | circles c21, circles c22, circles c23, circles c24, circles c25, circles c26, | ||
+ | circles c31, circles c32, circles c33, circles c34, circles c35, circles c36, | ||
+ | circles cc1, circles cc2, circles cc3, circles cc4, circles cc5, circles cc6 | ||
+ | where | ||
+ | c11.blk_num not in (c12.blk_num, c13.blk_num, c14.blk_num, c15.blk_num, c16.blk_num, cc1.blk_num) and | ||
+ | c12.blk_num not in (c11.blk_num, c13.blk_num, c14.blk_num, c15.blk_num, c16.blk_num, cc1.blk_num) and | ||
+ | c13.blk_num not in (c11.blk_num, c12.blk_num, c14.blk_num, c15.blk_num, c16.blk_num, cc1.blk_num) and | ||
+ | c14.blk_num not in (c11.blk_num, c12.blk_num, c13.blk_num, c15.blk_num, c16.blk_num, cc1.blk_num) and | ||
+ | c15.blk_num not in (c11.blk_num, c12.blk_num, c13.blk_num, c14.blk_num, c16.blk_num, cc1.blk_num) and | ||
+ | c16.blk_num not in (c11.blk_num, c12.blk_num, c13.blk_num, c14.blk_num, c15.blk_num, cc1.blk_num) and | ||
+ | cc1.blk_num not in (c11.blk_num, c12.blk_num, c13.blk_num, c14.blk_num, c15.blk_num, c16.blk_num) and | ||
+ | -- | ||
+ | c11.blk_num = c21.blk_num and c11.blk_num = c31.blk_num and | ||
+ | c12.blk_num = c22.blk_num and c12.blk_num = c32.blk_num and | ||
+ | c13.blk_num = c23.blk_num and c13.blk_num = c33.blk_num and | ||
+ | c14.blk_num = c24.blk_num and c14.blk_num = c34.blk_num and | ||
+ | c15.blk_num = c25.blk_num and c15.blk_num = c35.blk_num and | ||
+ | c16.blk_num = c26.blk_num and c16.blk_num = c36.blk_num and | ||
+ | -- | ||
+ | cc1.blk_num = cc2.blk_num and | ||
+ | cc1.blk_num = cc3.blk_num and | ||
+ | cc1.blk_num = cc4.blk_num and | ||
+ | cc1.blk_num = cc5.blk_num and | ||
+ | cc1.blk_num = cc6.blk_num and | ||
+ | -- | ||
+ | mod(c11.color_position+1,6) = c21.color_position and mod(c11.color_position+5,6) = c31.color_position and | ||
+ | mod(c12.color_position+1,6) = c22.color_position and mod(c12.color_position+5,6) = c32.color_position and | ||
+ | mod(c13.color_position+1,6) = c23.color_position and mod(c13.color_position+5,6) = c33.color_position and | ||
+ | mod(c14.color_position+1,6) = c24.color_position and mod(c14.color_position+5,6) = c34.color_position and | ||
+ | mod(c15.color_position+1,6) = c25.color_position and mod(c15.color_position+5,6) = c35.color_position and | ||
+ | mod(c16.color_position+1,6) = c26.color_position and mod(c16.color_position+5,6) = c36.color_position and | ||
+ | -- | ||
+ | cc1.color_cd = c11.color_cd and cc1.color_position < cc2.color_position and | ||
+ | cc2.color_cd = c12.color_cd and cc2.color_position < cc3.color_position and | ||
+ | cc3.color_cd = c13.color_cd and cc3.color_position < cc4.color_position and | ||
+ | cc4.color_cd = c14.color_cd and cc4.color_position < cc5.color_position and | ||
+ | cc5.color_cd = c15.color_cd and cc5.color_position < cc6.color_position and | ||
+ | cc6.color_cd = c16.color_cd and | ||
+ | -- | ||
+ | c21.color_cd = c36.color_cd and | ||
+ | c22.color_cd = c31.color_cd and | ||
+ | c23.color_cd = c32.color_cd and | ||
+ | c24.color_cd = c33.color_cd and | ||
+ | c25.color_cd = c34.color_cd and | ||
+ | c26.color_cd = c35.color_cd | ||
+ | ; | ||
+ | ----------- | ||
+ | </code> | ||
+ | |||
+ | |||
+ | [[http://www.greylabyrinth.com/discussion/viewtopic.php?p=297857 | Solution posted in forum, search for cmsenthil]]\\ | ||
+ | \\ | ||
+ | [[tech:others:color_coordination_puzzle_solution_explanation|Puzzle Solution Explanation]] | ||