A 72x72 méretű tömböt, ahol a cellákban az if( SQαβ = SQγδ ) összehasonlítás eredménye áll. Egy táblázatban tároljuk el. Ahol a cellákban logikai értékek állnak. Ha a két érték egyenlő igaz ha különböző akkor hamis. Két plusz oszloppal kibővítjük a táblázatot. Az id az egyedi azonosításhoz kell. A name pedig a sorhoz tartozó SQαβ szöveget tartalmazza.
CREATE TABLE `sq` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(5) NOT NULL, `SQab` tinyint(1) NOT NULL,
`SQac` tinyint(1) NOT NULL, `SQak` tinyint(1) NOT NULL,
`SQau` tinyint(1) NOT NULL, `SQat` tinyint(1) NOT NULL,
`SQaq` tinyint(1) NOT NULL, `SQas` tinyint(1) NOT NULL,
`SQaw` tinyint(1) NOT NULL, `SQba` tinyint(1) NOT NULL,
`SQbc` tinyint(1) NOT NULL, `SQbk` tinyint(1) NOT NULL,
`SQbu` tinyint(1) NOT NULL, `SQbt` tinyint(1) NOT NULL,
`SQbq` tinyint(1) NOT NULL, `SQbs` tinyint(1) NOT NULL,
`SQbw` tinyint(1) NOT NULL, `SQca` tinyint(1) NOT NULL,
`SQcb` tinyint(1) NOT NULL, `SQck` tinyint(1) NOT NULL,
`SQcu` tinyint(1) NOT NULL, `SQct` tinyint(1) NOT NULL,
`SQcq` tinyint(1) NOT NULL, `SQcs` tinyint(1) NOT NULL,
`SQcw` tinyint(1) NOT NULL, `SQka` tinyint(1) NOT NULL,
`SQkb` tinyint(1) NOT NULL, `SQkc` tinyint(1) NOT NULL,
`SQku` tinyint(1) NOT NULL, `SQkt` tinyint(1) NOT NULL,
`SQkq` tinyint(1) NOT NULL, `SQks` tinyint(1) NOT NULL,
`SQkw` tinyint(1) NOT NULL, `SQua` tinyint(1) NOT NULL,
`SQub` tinyint(1) NOT NULL, `SQuc` tinyint(1) NOT NULL,
`SQuk` tinyint(1) NOT NULL, `SQut` tinyint(1) NOT NULL,
`SQuq` tinyint(1) NOT NULL, `SQus` tinyint(1) NOT NULL,
`SQuw` tinyint(1) NOT NULL, `SQta` tinyint(1) NOT NULL,
`SQtb` tinyint(1) NOT NULL, `SQtc` tinyint(1) NOT NULL,
`SQtk` tinyint(1) NOT NULL, `SQtu` tinyint(1) NOT NULL,
`SQtq` tinyint(1) NOT NULL, `SQts` tinyint(1) NOT NULL,
`SQtw` tinyint(1) NOT NULL, `SQqa` tinyint(1) NOT NULL,
`SQqb` tinyint(1) NOT NULL, `SQqc` tinyint(1) NOT NULL,
`SQqk` tinyint(1) NOT NULL, `SQqu` tinyint(1) NOT NULL,
`SQqt` tinyint(1) NOT NULL, `SQqs` tinyint(1) NOT NULL,
`SQqw` tinyint(1) NOT NULL, `SQsa` tinyint(1) NOT NULL,
`SQsb` tinyint(1) NOT NULL, `SQsc` tinyint(1) NOT NULL,
`SQsk` tinyint(1) NOT NULL, `SQsu` tinyint(1) NOT NULL,
`SQst` tinyint(1) NOT NULL, `SQsq` tinyint(1) NOT NULL,
`SQsw` tinyint(1) NOT NULL, `SQwa` tinyint(1) NOT NULL,
`SQwb` tinyint(1) NOT NULL, `SQwc` tinyint(1) NOT NULL,
`SQwk` tinyint(1) NOT NULL, `SQwu` tinyint(1) NOT NULL,
`SQwt` tinyint(1) NOT NULL, `SQwq` tinyint(1) NOT NULL,
`SQws` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
)
A feltöltéséhez a következő php kódot használjuk:
$inserttorzs="insert into SQ (name,";
foreach($oszlop as $item){ //az oszlop tömbben az SQαβ értékek szerepelnek
$inserttorzs.=$item.",";
}
$inserttorzs=substr($inserttorzs,0, -1);
$inserttorzs.=") values ( ";//megvizsgáljuk az összes lehetséges párosítást (72*72)
foreach($oszlop as $key=> $item1){
$insert=$inserttorzs."'".$item1."',";
//ez máshogy van meg a másik is
$query="select id from math order by ".$order[$key];
$result=mysql_query($query) or die('Query failed1:'.mysql_error());
$kulso=array();
while($proba=mysql_fetch_row($result)){
$kulso[]=$proba[0];
}
foreach($oszlop as $key2 =>$item2){
$query="select id from math order by ".$order[$key2];
$result=mysql_query($query) or die('Query failed2:'.mysql_error());
$belso=array();
while($proba=mysql_fetch_row($result)){
$belso[]=$proba[0];
}
//ha a két tömb egyenlő akkor 1et írunk a táblázatba, ha különböző akkor 0-t
$ered=$belso==$kulso ? "1":"0";
$insert.=$ered.",";
}
$insert=substr($insert,0,-1);
$insert.=");";
$result=mysql_query($insert) or die('Query failed3:'.mysql_error());
}
Klánokat is eltároljuk egy táblázatban, hogyha kellenek ne kelljen minden alkalommal meghatározni őket.
Csak a klán vezért (ő az első elem a klánban, róla nevezzük el a klánt) és a klán egy tagját tároljuk el.
CREATE TABLE `klan` (
`id` int(11) NOT NULL,
`klan` varchar(4) NOT NULL,
`tag` varchar(4) NOT NULL
)
Az előbb előállított sq táblából határozzuk meg a klánokat.
$query="select * from sq"; //lekérjük az sq tábla tartalmát
$result=mysql_query($query) or die('Query failed:'.mysql_error());
majd a $klan nevű mátixba eltároljuk a klánokat. Az egyes sorokat a klán vezér azonosítja.
while($row=mysql_fetch_assoc($result)){
foreach($oszlop as $key=> $item){ //az oszlop tömb az SQαβ értékeket tartalmazza
if($row[$item]==1 ){ //megnézzük, hogy az sq táblában lévő SQαβ helyen milyne érték szerpel. Ha 1es van ott akkor a két átrendezés egyforma, tehát egy klánba tartozik.
if(!isin($item,$klan) ){ //segédfüggvényt vezetünk be, hogy ellenőrizzük szerepel-e a megtalált klán a mátrixban, vagy egy újat kell felvenni.
$klan[$row['name']][]=$item;
}
}
}
}function isin($elem,$klan){ //paraméterben megadjuk az elemet és a klánokat tartalmazó mátrixot
//megnézem, hogy klán vezér-e a keresett elem
foreach(array_keys($klan) as $item){
if($elem==$item ){
return true;
}
}//Ha nem klán vezér akkor egyik klán tagjaként keresem
foreach($klan as $item){
foreach($item as $item1){
if($item1==$elem ){
return true;
}
}
}//Ha egyik keresés sem találta meg az elemet akkro még nem szerepel a mátrixban. Tehát fel kell venni klánvezérnek.
return false;
}