Waarschijnlijk is het een tabel waar een piloot meerder vlieguren(vluchten) kan maken.quote:Op zondag 10 april 2011 23:11 schreef boem-dikkie het volgende:
[..]
Waarom helemaal met een SUM? Je kunt toch gewoon sorteren op 'flighttime'?
Uit mijn mouw komt dan:quote:Op zondag 10 april 2011 23:10 schreef KomtTijd... het volgende:
Ik heb een tabel met: pilot_id, flighttime
Nu wil ik een soort van ranglijst maken, met welke piloot de meeste vlieguren heeft. Dus voor iedere pilot_id moet een SUM(flighttime) uitgevoerd worden, en dan moeten de pilot_id's op volgorde van SUM(flighttime) weergegeven worden...
Schudt iemand zo'n query zo uit zijn mouw?
1 2 3 4 | SELECT pilot_id, SUM(flighttime) AS sum_flighttime FROM table GROUP BY pilot_id ORDER BY sum_flighttime ASC |
een preg_match in een while of for loop?quote:Op maandag 11 april 2011 15:03 schreef erikkll het volgende:
Vraagje! Ik heb een waardes in een array. Een voorbeeldwaarde is:
Dit is een test [[klantnaam]]
Wat is de makkelijkste manier om alle klantnamen te achterhalen? Ze staan dus altijd in blokhaakjes. Iets van een filtermethode?
ah! Dat lijkt me een goeie. Ga ik mee experimenteren!quote:Op maandag 11 april 2011 15:05 schreef GlowMouse het volgende:
preg_match_all met regexp /\[\[(.*)\]\]/U
Als je gewoon aangeeft welk probleem je ermee hebt, krijg je vast sneller een oplossing dan wanneer je alleen vraagt of iemand er verstand van heeft.quote:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 | <?php error_reporting(0); $map = 'fotoalbum'; $afbeeldingen = array(); $hoogte_klein = 100; $breedte_klein = 150; $hoogte_groot = 400; $breedte_groot = 600; $perpagina = 6; if(isset($_GET['album']) && !empty($_GET['album'])) { $tmp = explode('/',$_GET['album']); if($tmp[0] == $map) { $map = str_replace(array('.', '\\', ':'), '', $_GET['album']); } } if(isset($_GET['paginanr']) && !empty($_GET['paginanr']) && ctype_digit($_GET['paginanr'])) { $paginanr = $_GET['paginanr']; }else{ $paginanr = 1; } if(isset($_GET['afbeelding']) && !empty($_GET['afbeelding'])) { $afbeelding = $_GET['afbeelding']; }else{ $afbeelding = NULL; } function thumbnail($afbeelding, $type) { $map = $afbeelding['dirname']; $bestandsnaam = $afbeelding['basename']; list($type, $hoogte, $breedte) = $type; list($breedte_origineel, $hoogte_origineel, $extensie) = getimagesize($map.'/'.$bestandsnaam); if(!is_dir($map.'/thumbs/')) { mkdir($map.'/thumbs/', 0777); chmod($map.'/thumbs/', 0777); } if (($breedte_origineel < $hoogte_origineel) && ($breedte > $hoogte)) { $breedte = ($hoogte / $hoogte_origineel) * $breedte_origineel; }else{ $hoogte = ($breedte / $breedte_origineel) * $hoogte_origineel; } $afbeelding = imagecreatetruecolor($breedte, $hoogte); switch($extensie) { case 1: //gif $afbeelding_origineel = imagecreatefromgif($map.'/'.$bestandsnaam); imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel); imagegif($afbeelding, $map.'/thumbs/'.$type.'_'.$bestandsnaam); break; case 2: //jpg $afbeelding_origineel = imagecreatefromjpeg($map.'/'.$bestandsnaam); imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel); imagejpeg($afbeelding, $map.'/thumbs/'.$type.'_'.$bestandsnaam, 80); break; case 3: //png $afbeelding_origineel = imagecreatefrompng($map.'/'.$bestandsnaam); $background = imagecolorallocate($afbeelding, 0, 0, 0); imagecolortransparent($afbeelding, $background); // make the new temp image all transparent imagealphablending($afbeelding, false); // turn off the alpha blending to keep the alpha channel imagesavealpha($afbeelding, true); imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel); imagepng($afbeelding, $map.'/thumbs/'.$type.'_'.$bestandsnaam); break; } chmod($map.'/thumbs/'.$type.'_'.$bestandsnaam, 0777); return TRUE; } $tmp = NULL; foreach(explode('/',$map) as $tmp2) { echo ' <a href="?pagina=fotoalbum&album='.$tmp.$tmp2.'">'.ucfirst($tmp2).'</a> '; $tmp = $tmp.$tmp2.'/'; } echo '<br><br>'.PHP_EOL; if(!$bestanden = glob($map.'/*.*')) { $bestanden = array(); } foreach($bestanden as $bestand) { $gegevens = getimagesize($bestand); $extensie = $gegevens['mime']; if($extensie == 'image/jpeg' || $extensie == 'image/gif' || $extensie == 'image/png') { $afbeeldingen[] = $bestand; } } $aantalfotos = count($afbeeldingen); if(isset($afbeelding)) { foreach($afbeeldingen as $id => $naam) { if(basename($naam) == $afbeelding) { $fotonr = $id; } } if(isset($fotonr)) { $afbeelding = pathinfo($afbeeldingen[$fotonr]); if($fotonr > 0) { $vorige_afbeelding = pathinfo($afbeeldingen[$fotonr-1]); echo '<a href="?pagina=fotoalbum&album='.$map.'&afbeelding='.$vorige_afbeelding['basename'].'" title="Ga naar foto '.$vorige_afbeelding['basename'].'"><< Vorige</a>'; }else{ echo '<< Vorige'; } echo ' Foto '.($fotonr +1).' van '.$aantalfotos.' '; if($fotonr < $aantalfotos -1) { $volgende_afbeelding = pathinfo($afbeeldingen[$fotonr+1]); echo '<a href="?pagina=fotoalbum&album='.$map.'&afbeelding='.$volgende_afbeelding['basename'].'" title="Ga naar foto '.$volgende_afbeelding['basename'].'">Volgende >></a><br>'; }else{ echo 'Volgende >><br>'.PHP_EOL; } if(!file_exists($afbeelding['dirname'].'/thumbs/groot_'.$afbeelding['basename'])) { if(thumbnail($afbeelding, array('groot', $hoogte_groot, $breedte_groot))) { echo '<a href="'.$afbeelding['dirname'].'/'.$afbeelding['basename'].'" target="_BLANK"><img src="'.$afbeelding['dirname'].'/thumbs/groot_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL; } }else{ echo '<a href="'.$afbeelding['dirname'].'/'.$afbeelding['basename'].'" target="_BLANK"><img src="'.$afbeelding['dirname'].'/thumbs/groot_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL; } }else{ echo '<p>Sorry, deze foto bestaat niet!</p>'; } }else{ if(!$mappen = glob($map.'/*', GLOB_ONLYDIR)) { $mappen = array(); } foreach($mappen as $album) { if(basename($album) != 'thumbs') { echo '<a href="?pagina=fotoalbum&album='.$album.'">'.ucfirst(basename($album)).'</a><br>'.PHP_EOL; } } if($aantalfotos > $perpagina) { if ($paginanr > 1) { echo '<a href="?pagina=fotoalbum&album='.$map.'&paginanr='.($paginanr - 1).'" title="Ga naar pagina '.($paginanr - 1).'"><< Vorige</a>'; }else{ echo '<< Vorige'; } echo ' Pagina '.$paginanr.' van '.ceil($aantalfotos/$perpagina).' '; if ($paginanr < ceil(($aantalfotos)/$perpagina)) { echo '<a href="?pagina=fotoalbum&album='.$map.'&paginanr='.($paginanr + 1).'" title="Ga naar pagina '.($paginanr + 1).'">Volgende >></a><br>'; }else{ echo 'Volgende >><br>'.PHP_EOL; } } for($fotonr = (($paginanr -1) * $perpagina); $fotonr <= ((($paginanr -1) * $perpagina) + ($perpagina - 1)) && $fotonr < count($bestanden); $fotonr += 1) { $afbeelding = pathinfo($afbeeldingen[$fotonr]); if(!file_exists($afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename'])) { if(thumbnail($afbeelding, array('klein', $hoogte_klein, $breedte_klein))) { echo '<a href="?pagina=fotoalbum&album='.$map.'&afbeelding='.$afbeelding['basename'].'"><img src="'.$afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL; } }else{ echo '<a href="?pagina=fotoalbum&album='.$map.'&afbeelding='.$afbeelding['basename'].'"><img src="'.$afbeelding['dirname'].'/thumbs/klein_'.$afbeelding['basename'].'" title="'.$afbeelding['basename'].'" alt="'.$afbeelding['basename'].'" class="thumbs"></a>'.PHP_EOL; } } } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | set TABLES; set DAYS; set PERSONS; var location{p in PERSONS, t in TABLES, d in DAYS}, binary; var peoplemeet{p1 in PERSONS, p2 in PERSONS, t in TABLES, d in DAYS}, binary; minimize find_feasible: 1; subject to nevermorethantwiceatsameplace{p in PERSONS, t in TABLES}: sum{d in DAYS} location[p,t,d] <= 2; subject to alwaysatoneplace{p in PERSONS, d in DAYS}: sum{t in TABLES} location[p,t,d] = 1; subject to meeting{p1 in PERSONS, p2 in PERSONS, d in DAYS, t in TABLES : p1<p2}: 2*peoplemeet[p1,p2,t,d] <= location[p1,t,d]+location[p2,t,d]; subject to everybodymeets{p1 in PERSONS, p2 in PERSONS : p1<p2}: sum{t in TABLES, d in DAYS} peoplemeet[p1,p2,t,d] >= 1; subject to maxtablesize{d in DAYS, t in TABLES}: sum{p in PERSONS} location[p,t,d] = 2; solve; for{p in PERSONS} { for{d in DAYS} { for{t in TABLES : location[p,t,d] == 1} { printf "Persoon %s op dag %s aan tafel %s\n", p, d, t; } } } data; set TABLES := 1 2 3 4; set DAYS := 1 2 3 4 5 6 7; set PERSONS := 1 2 3 4 5 6 7 8; end; |
1 | C:\glpk\bin>glpsol.exe --math file.txt |
Ik ben het aan het proberen, hopelijk komt er iets moois uit. Wat is 'even'?quote:Op woensdag 13 april 2011 19:44 schreef GlowMouse het volgende:
Deze post heb ik eerder eens gemaakt voor een vergelijkbaar probleem:
Het model zet je in een tekstbestand (zeg file.txt)
[ code verwijderd ]
Daarna krijg je met dit commando na een tijdje of er een dergelijk eetschema bestaat. Kan even duren overigens
[ code verwijderd ]
Dan speelt niet iedereen tegen iedereen.quote:
Ik denk niet dat je lang hoeft te wachten.quote:Op woensdag 13 april 2011 19:51 schreef Habork het volgende:
[..]
Ik ben het aan het proberen, hopelijk komt er iets moois uit. Wat is 'even'?
Hij draait nu, 300.0 secs. Heb de tijd nog dus. Als ik zo naar de code kijk begrijp ik dat het algoritme gewoon blijft proberen totdat hij een goed schema heeft?quote:Op woensdag 13 april 2011 19:57 schreef GlowMouse het volgende:
[..]
Dan speelt niet iedereen tegen iedereen.
[..]
Ik denk niet dat je lang hoeft te wachten.
Dezelfde als jij gegeven hebt alleen het aantal tafels aangepast:quote:Op woensdag 13 april 2011 20:04 schreef GlowMouse het volgende:
Hij doet het wel iets slimmer; de theorie staat oa. in http://www.rpi.edu/~mitchj/papers/mitche2.pdf
Welke inputfile heb je gemaakt?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | set TABLES; set DAYS; set PERSONS; var location{p in PERSONS, t in TABLES, d in DAYS}, binary; var peoplemeet{p1 in PERSONS, p2 in PERSONS, t in TABLES, d in DAYS}, binary; minimize find_feasible: 1; subject to nevermorethantwiceatsameplace{p in PERSONS, t in TABLES}: sum{d in DAYS} location[p,t,d] <= 2; subject to alwaysatoneplace{p in PERSONS, d in DAYS}: sum{t in TABLES} location[p,t,d] = 1; subject to meeting{p1 in PERSONS, p2 in PERSONS, d in DAYS, t in TABLES : p1<p2}: 2*peoplemeet[p1,p2,t,d] <= location[p1,t,d]+location[p2,t,d]; subject to everybodymeets{p1 in PERSONS, p2 in PERSONS : p1<p2}: sum{t in TABLES, d in DAYS} peoplemeet[p1,p2,t,d] >= 1; subject to maxtablesize{d in DAYS, t in TABLES}: sum{p in PERSONS} location[p,t,d] = 2; solve; for{p in PERSONS} { for{d in DAYS} { for{t in TABLES : location[p,t,d] == 1} { printf "Persoon %s op dag %s aan tafel %s\n", p, d, t; } } } data; set TABLES := 1 2 3 4 5 6 7; set DAYS := 1 2 3 4 5 6 7; set PERSONS := 1 2 3 4 5 6 7 8; end; |
In de 8e speelronde speelt ieder team tegen een team waar ze al een keer tegen gespeeld hebben. Ik begreep uit de constraints dat dit geen mogelijkheid is dus dat kan ik er zelf naderhand makkelijk bij verzinnen.quote:Op woensdag 13 april 2011 20:30 schreef GlowMouse het volgende:
even de vertaling maken:
-8 teams PERSONS
-8 speelrondes DAYS
-8 verschillende spellen TABLES
Voor de overzichtelijkheid hernoem je alles. Ik snap niet waarom je TABLES en DAYS maar tot 7 laat lopen.
En nu de constraints aflopen:
subject to nevermorethantwiceatsameplace{p in PERSONS, t in TABLES}:
sum{d in DAYS} location[p,t,d] <= 2;
dit zou =1 moeten zijn.
Je eist nu dat ze in de eerste 7 rondes telkens tegen iemand anders spelen. Dat is een sterkere eis dan aanvankelijk gesteld.quote:In de 8e speelronde speelt ieder team tegen een team waar ze al een keer tegen gespeeld hebben.
if ($_SESSION['G_name']=="empty") { ???quote:if(iets wat waar is als iemand niet is ingelogd) {
include('file.inc.php');
}
Eh, wat snap je niet aan wat hij zei?quote:Op woensdag 13 april 2011 20:55 schreef MrNiles het volgende:
[..]
if ($_SESSION['G_name']=="empty") { ???
zoiets maar dan goed
Ergen op je pagina bepaal je of iemand is ingelogd de ja of de nee. Waarschijnlijk komt daar een boolean uitgerold. Bijvoorbeeld $loginquote:Op woensdag 13 april 2011 20:55 schreef MrNiles het volgende:
[..]
if ($_SESSION['G_name']=="empty") { ???
zoiets maar dan goed
iets wat waar is, is dat $_session['G_name'] empty isquote:Op woensdag 13 april 2011 20:57 schreef Tegan het volgende:
[..]
Eh, wat snap je niet aan wat hij zei?
http://lmgtfy.com?q=php+emptyquote:Op woensdag 13 april 2011 20:59 schreef MrNiles het volgende:
[..]
iets wat waar is, is dat $_session['G_name'] empty is
maar hoe schrijf ik dat op dat php dat snapt
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |