Archive for November 15th, 2009
Nov
15
Sudoku – Recursive Subquery Factoring
2 Comments
Incepand cu versiunea 11 Release 2 Oracle introduce un nou feature in RDBMS lor, Recursive Subquery Factoring. Prima aplicatie practica la care s-a gandit Anton Scheffer este cum sa rezolve SUDOKU
<pre>with x( s, ind ) as ( select sud, instr( sud, ' ' ) from ( select '53 7 6 195 98 6 8 6 34 8 3 17 2 6 6 28 419 5 8 79' sud from dual ) union all select substr( s, 1, ind - 1 ) || z || substr( s, ind + 1 ) , instr( s, ' ', ind + 1 ) from x , ( select to_char( rownum ) z from dual connect by rownum < = 9 ) z where ind > 0 and not exists ( select null from ( select rownum lp from dual connect by rownum < = 9 ) where z = substr( s, trunc( ( ind - 1 ) / 9 ) * 9 + lp, 1 ) or z = substr( s, mod( ind - 1, 9 ) - 8 + lp * 9, 1 ) or z = substr( s, mod( trunc( ( ind - 1 ) / 3 ), 3 ) * 3 + trunc( ( ind - 1 ) / 27 ) * 27 + lp + trunc( ( lp - 1 ) / 3 ) * 6 , 1 ) ) ) select s from x where ind = 0 /</pre>



