mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 26.04.2024 03:35 Benutzername: Passwort: Auto-Login

Thema: Bingokarte generieren vom 01.04.2013


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Bingokarte generieren
Autor Nachricht
labrar
Threadersteller

Dabei seit: 04.04.2006
Ort: -
Alter: 49
Geschlecht: Männlich
Verfasst Mo 01.04.2013 15:59
Titel

Bingokarte generieren

Antworten mit Zitat Zum Seitenanfang

Hallo. Ich suche nach einer Lösung für folgendes Problem:

Ich habe auf einer Karte drei Reihen mit jeweils 9 Feldern.

Von diesen 9 Feldern muss ich jetzt 5 Zahlen aus 90 per Reihe platzieren. Und zwar so, dass in jeder Reihe logischerweise dann 4 Felder leer bleiben, in jeder Vertikalen Reihe maximal 2 Felder, minimum 1 Feld besetzt sind.

Kleines Beispiel wie sowas dann aussehen soll:

1|leer| 20|leer| 43|leer| 60|leer| 80
leer| 14|leer| 33| 44| 55|leer| 73|leer
9|leer| 24| 36|leer|leer| 68|leer| 89

Es funktioniert auch alles allerdings umständlich, da ich momentan 7 verschiedene Anordnungen habe und diese via rand auswähle. Ich hätte es aber gerne dynamisch.

Zum besseren Verständis:
Code:

//Erstmal die schon geholten Zufallszahlen in die drei Arrays packen, die später die drei Reihen bilden.
//Hierbei werden erstmal 9 Zhalen hinterlegt von denen ich dann jeweils 4 herausslice.
//$row1-$row9 sind Arrays mit den Zufallszahlen von 1 - 90. Keine davon kommt zweimal vor und für jedes Array enthält nur 10 Zahlen innerhalb eines Zehnerbereiches. Also $row1 könnt zB. so aussehen 25,21,20,27,29,28,22,23,24,23
// $row2 dann zB so 30,31,32,33,35,34,36,37,39,38 aussehen usw. usw.

$brow1=array($row1[0],$row2[0],$row3[0],$row4[0],$row5[0],$row6[0],$row7[0],$row8[0],$row9[0]);
   $brow2=array($row1[1],$row2[1],$row3[1],$row4[1],$row5[1],$row6[1],$row7[1],$row8[1],$row9[1]);
   $brow3=array($row1[2],$row2[2],$row3[2],$row4[2],$row5[2],$row6[2],$row7[2],$row8[2],$row9[2]);
   sort($brow1); sort($brow2); sort($brow3);

//Hier werden die Kartenmasken generiert. Und genau dafür suche ich nach einer Lösung und komme nicht drauf
   $call=rand(1,7);
   
   if($call==1){
   array_splice($brow1,7,1); array_splice($brow1,5,1); array_splice($brow1,3,1); array_splice($brow1,1,1);
   array_splice($brow2,8,1); array_splice($brow2,6,1); array_splice($brow2,2,1); array_splice($brow2,0,1);
   array_splice($brow3,7,1); array_splice($brow3,5,1); array_splice($brow3,4,1); array_splice($brow3,1,1);
   }
   if($call==2){
   array_splice($brow1,8,1); array_splice($brow1,6,1); array_splice($brow1,4,1); array_splice($brow1,1,1);
   array_splice($brow2,8,1); array_splice($brow2,7,1); array_splice($brow2,2,1); array_splice($brow2,0,1);
   array_splice($brow3,6,1); array_splice($brow3,5,1); array_splice($brow3,3,1); array_splice($brow3,0,1);
   }
   if($call==3){
   array_splice($brow1,5,1); array_splice($brow1,4,1); array_splice($brow1,3,1); array_splice($brow1,1,1);
   array_splice($brow2,5,1); array_splice($brow2,3,1); array_splice($brow2,2,1); array_splice($brow2,1,1);
   array_splice($brow3,8,1); array_splice($brow3,7,1); array_splice($brow3,6,1); array_splice($brow3,0,1);
   }
   if($call==4){
   array_splice($brow1,5,1); array_splice($brow1,4,1); array_splice($brow1,2,1); array_splice($brow1,1,1);
   array_splice($brow2,7,1); array_splice($brow2,5,1); array_splice($brow2,3,1); array_splice($brow2,0,1);
   array_splice($brow3,8,1); array_splice($brow3,6,1); array_splice($brow3,2,1); array_splice($brow3,1,1);
   }
   if($call==5){
   array_splice($brow1,7,1); array_splice($brow1,5,1); array_splice($brow1,3,1); array_splice($brow1,1,1);
   array_splice($brow2,8,1); array_splice($brow2,6,1); array_splice($brow2,4,1); array_splice($brow2,2,1);
   array_splice($brow3,6,1); array_splice($brow3,4,1); array_splice($brow3,2,1); array_splice($brow3,0,1);
   }
   if($call==6){
   array_splice($brow1,7,1); array_splice($brow1,2,1); array_splice($brow1,1,1); array_splice($brow1,0,1);
   array_splice($brow2,5,1); array_splice($brow2,3,1); array_splice($brow2,2,1); array_splice($brow2,0,1);
   array_splice($brow3,8,1); array_splice($brow3,6,1); array_splice($brow3,4,1); array_splice($brow3,1,1);
   }
   if($call==7){
   array_splice($brow1,7,1); array_splice($brow1,3,1); array_splice($brow1,2,1); array_splice($brow1,1,1);
   array_splice($brow2,6,1); array_splice($brow2,4,1); array_splice($brow2,3,1); array_splice($brow2,2,1);
   array_splice($brow3,8,1); array_splice($brow3,5,1); array_splice($brow3,4,1); array_splice($brow3,0,1);
   }


Danke


Zuletzt bearbeitet von labrar am Mo 01.04.2013 16:03, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
bacon

Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Mi 03.04.2013 12:34
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
Ich hätte es aber gerne dynamisch.


Und was sind Deine Ideen dazu?
  View user's profile Private Nachricht senden
Anzeige
Anzeige
ChrisKam

Dabei seit: 01.07.2009
Ort: Hattingen
Alter: 38
Geschlecht: Männlich
Verfasst Mi 03.04.2013 13:50
Titel

Antworten mit Zitat Zum Seitenanfang

Ich würde erst einmal die Logik sauber aufdröseln, mit einem 2-dimensionalen Array für das Raster arbeiten und mir ein paar Helferfunktionen bauen, wie z.B. reihe() oder zeile() die Dir zurückliefern, wie viele Felder dort schon besetzt sind. Dann solange Zufallszahlen erzeugen und zufällig in Reihe 1-3 einsortieren bis 15 Felder erfolgreich eingetragen wurden. So schwer sollte das nicht sein * Keine Ahnung... *

Was da momentan steht ist kein Programm, sondern eher sowas wie ein Makro...
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
labrar
Threadersteller

Dabei seit: 04.04.2006
Ort: -
Alter: 49
Geschlecht: Männlich
Verfasst Mi 03.04.2013 15:42
Titel

Antworten mit Zitat Zum Seitenanfang

Naja. Es ist nicht so, dass ich nicht zunächst selbst nach ewig einer Lösung gesucht habe. Hätte ich Lösungsansätze oder Ideen, hätte ich diese Frage hier nicht gepostet.
Deswegen habe ich es ja im Moment so gelöst. Natürlich funktioniert das. Aber eben nur mit 7 verschiedenen Masken. Was mir ums verrecken nicht einfallen wollte war eben eine Lösung wie ich das ganze dynamisch, bzw. irgendiwe per Random lösen kann.

ChrisKam hat geschrieben:
Ich würde erst einmal die Logik sauber aufdröseln, mit einem 2-dimensionalen Array für das Raster arbeiten und mir ein paar Helferfunktionen bauen, wie z.B. reihe() oder zeile() die Dir zurückliefern, wie viele Felder dort schon besetzt sind. Dann solange Zufallszahlen erzeugen und zufällig in Reihe 1-3 einsortieren bis 15 Felder erfolgreich eingetragen wurden. So schwer sollte das nicht sein * Keine Ahnung... *

Was da momentan steht ist kein Programm, sondern eher sowas wie ein Makro...


Vom Verständnis her suche ich auch genau sowas. Ich habe nur absolut keine Ahnung wie ich da vorgehen kann. Alles was ich in der Richtung versuchte ging über mehrere for Schleifen und zog somit an der Perf.


Zuletzt bearbeitet von labrar am Mi 03.04.2013 15:44, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
DEKONSTRUKTIV

Dabei seit: 22.06.2009
Ort: bln
Alter: -
Geschlecht: -
Verfasst Mi 03.04.2013 15:45
Titel

Antworten mit Zitat Zum Seitenanfang

dann mach dich grundlegend mit algorithmen und datenstrukturen vertraut. dein problem ist wirklich handwerkszeug.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
ChrisKam

Dabei seit: 01.07.2009
Ort: Hattingen
Alter: 38
Geschlecht: Männlich
Verfasst Mi 03.04.2013 16:16
Titel

Antworten mit Zitat Zum Seitenanfang

Darf ich fragen, warum Performance ein Kriterium sein sollte? Solange keine x-tausend Karten pro Sekunde generiert werden müssen, sollten ein paar überflüssige Calls wohl kein Problem sein bei meiner Lösung ->> "Dann solange Zufallszahlen erzeugen und zufällig in Reihe 1-3 einsortieren bis 15 Felder erfolgreich eingetragen wurden."

..denn falls Performance wirklich so wichtig ist, dann ist PHP wohl ohnehin nicht die richtige Plattform. Schreib' mal etwas zu Deinem use case.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen Weiterleitungsnummern generieren
Seitenstruktur generieren
Aus Indesign HTMLText generieren ?
Passwörter in Excel generieren
SWF mit Acrobat dynamisch als PDF generieren?
[PDF] PDF aus Datenbank generieren (offline)
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.