Formel für das berechnen eines optimalen Felds

Von: , Frage gestellt am Mi, 24. Apr 2002

Hallo

Ich programmiere gerade ein Kartenspiel. Der User kann angeben mit wivielen karten er spielen will (Gerade Zahl). Jetzt will ich die Karten auf den Bildschirm zeichnen und zwar in einem Optimalen Verhältnis. Beispiel:

Der User entscheidet sich mit 20 Karten zu spielen jetzt muss ich ein Optimales Feld Zeichnen (X,Y) optimal sieht für eine Bildschirmausgabe sieht X=5 Y=4 aus. ungünstig wäre z.b. X=2 Y=10. Man kann also sagen, dass X und Y möglich nahe zueinander sein sollten.


Gibt es dafür eine mathematische Formel/Algorithmus ?

Besten Dank
Giuseppe

3 Antworten zu dieser Frage

  1. Antwort von nach 27 Minuten 0 hilfreich
    Re: Formel für das berechnen eines optimalen Felds

    Gibt es dafür eine mathematische Formel/Algorithmus ?
    Man kann natürlich einen großen mathematischen Wirbel entfachen, indem man beispielsweise die Anzahl der karten in ihre Primfaktoren zerlegt und diese dann zu den zwei kleinstmöglichen Faktoren zusammenfaßt, aber da es ja nicht mehr als 32 Karten werden können, besteht die einfachste, schnellst und speicherschonnendste Methode darin alle 32 Möglichkeiten per Hand zu optimieren und die Ergebnisse in einem 32x2-Array zu speichern.

  2. Antwort von nach 14 Stunden 1 hilfreich
    Re: Formel für das berechnen eines optimalen Felds

    Hi.

    Wenn ich schnell recht richtig überlegt habe, könnte es so funktionieren: Du teilst die Anzahl der gewünschten Karten durch i (i ab 2 (da Zahl ja gerade), i schrittweise um 1 erhöhen) und speicherst das Ergebnis in y. Sobald i>=y ist, hast Du Deine gewünschte Lösung, da sich dann die Faktoren sozusagen nur wiederholen...
    Bsp: 20
    i y
    2 10
    4 5
    5 4
    10 2

    (Das Gleicheitszeichen gilt bei Quadratzahlen)
    Im Prinzip suchst Du alle Teiler und hörst auf, wenn Du alle gefunden hast.
    Geht sicherlich auch optimierter...

    gruss, tafp

    • Antwort von nach 15 Stunden 0 hilfreich
      Kein schlechter Ansatz. :-) *sterngib* o.T.

      lang lebe mathe

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!