Magische Quadrate

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Magische Quadrate

    Tag zusammen

    Ich hab mal ne etwas ungewöhnliche Frage: Wie kann man Magische Quadrate erzeugen lassen? Wäre an Formeln interressiert, aber besser wären richtige lösungsansätze oder beispiel codes. Aber nicht "nur" ungerade(3x3,5x5,...) sondern auch gerade quadrate! Brute Force is mir zu langsam, da hab ich schonmal nen code gefunden..

    Vielen Dank

  • #2
    warte, ich zieh mir schell ein code ausm armel..
    PHP-Code:
    $n=11;  //n feld
    $feld=array();
    $mitte=(int)(1+($n 2));
    $i=$mitte+1;
    $j=$mitte;
    for(
    $zahler=1;$zahler<$n*$n;++$zahler)
    {
    if (!isset(
    $feld[$i][$j]) $feld[$i][$j]=$zahler;
    else {
    $i++;
    if (
    $i>$n$i=1;
    $j--;
    if(
    $j==0$j=$n;
    $feld[$i,$j]=$zahler;
    }
    $i++;
    if (
    $i>$n$i=1;
    $j++;
    if (
    $j>$n$j=1;

    hoffe des geht so, könnte noch fehler sein
    meine Projekte bestaunen: http://www.kleiza.de

    Kommentar


    • #3
      lass mich raten: du studierst informatik an der fh-rhein-sieg

      Kommentar


      • #4
        achja, $feld ist dann n 2 dimensionales array mit den entschprechenden werten..
        meine Projekte bestaunen: http://www.kleiza.de

        Kommentar


        • #5
          Original geschrieben von beebob
          lass mich raten: du studierst informatik an der fh-rhein-sieg
          wie kommste denn da drauf ? mein erstes semester fängt erst nächste woche an in Bremen
          meine Projekte bestaunen: http://www.kleiza.de

          Kommentar


          • #6
            Schau dir mal die Seite www.magic-squares.de an - die widmet sich allein magischen Quadraten. Dort ist auch eine Konstruktionsmethode nach einem gewissen John R. Hendricks - "einem der weltweit bedeutendsten Experten für magische Quadrate und Würfel" - erklärt (leider hab' ich's nicht geschnallt - hab' aber auch nicht wirklich gelesen, was dort steht).
            [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
            [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
            [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

            © Harald Schmidt

            Kommentar


            • #7
              coole seite, hmm, also mit den algo den in oben da gepostet hab, geh glaube ich ungerade, und gerade. doppergerade glaube ich auch, und bei den zusammengeseztzten musste wahrscheinlich aus 3 er quadraten dann mit 9 stück n grosse erstellen, ( und dabei dann bei der forschleife immer um anfang von $zahler um 3*3 erhöhen und das ende halt mitzählen)
              aber wenn man sich ein grösseres magisches quadrat genau anschaut, kommt man schnell auf den algo (immer quer denken) ..
              meine Projekte bestaunen: http://www.kleiza.de

              Kommentar


              • #8
                hm, ja schön danke erstma. Aber der Code ging net (Parse Errors). Hab die geändert und jetzt gehts nimmer. Oder ich gebs falsch aus. Hier mal mein Code:

                PHP-Code:
                <?php
                $n
                =4;  //n feld
                $feld=array();
                $mitte=(int)(1+($n 2));
                $i=$mitte+1;
                $j=$mitte;
                for(
                $zahler=1;$zahler<$n*$n;++$zahler)
                {
                if (!isset(
                $feld[$i][$j])) $feld[$i][$j]=$zahler;
                else {
                $i++;
                if (
                $i>$n$i=1;
                $j--;
                if(
                $j==0$j=$n;
                $feld[$i][$j]=$zahler;
                }
                $i++;
                if (
                $i>$n$i=1;
                $j++;
                if (
                $j>$n$j=1;
                }

                echo 
                "<table>";
                for(
                $i 0$i Count($feld); $i++){
                    echo 
                "<tr>";
                    for(
                $b 0$b <= $n$b++){
                        echo 
                "<td>$feld[$i][$b]</td>";
                    }
                    echo 
                "</tr>";
                }
                echo 
                "</table>";


                ?>

                Kommentar


                • #9
                  PHP-Code:
                  $n=3;  //n feld geh doch nur mit ungerade
                  $feld=array();
                  $mitte=(int)(1+($n 2));
                  $i=$mitte+1;
                  $j=$mitte;
                  for(
                  $zahler=1;$zahler<=$n*$n;$zahler++)
                  {
                  if (!isset(
                  $feld[$i][$j])) $feld[$i][$j]=$zahler;
                  else {
                  $i++;
                  if (
                  $i>$n$i=1;
                  $j--;
                  if(
                  $j==0$j=$n;
                  $feld[$i][$j]=$zahler;
                  }
                  $i++;
                  if (
                  $i>$n$i=1;
                  $j++;
                  if (
                  $j>$n$j=1;
                  }
                  echo 
                  "<table border=1>";
                  for(
                  $i 1$i<=count($feld);$i++){
                      echo 
                  "<tr>";
                      for(
                  $b 1;$b<=count($feld[$i]); $b++){
                          echo 
                  "<td>".$feld[$i][$b]."</td>";
                      }
                      echo 
                  "</tr>";
                  }
                  echo 
                  "</table>"
                  mehr dimensionale arrays darfe nicht in strings schreiben..

                  leider gehts nur mit ungeraden qudraten..
                  meine Projekte bestaunen: http://www.kleiza.de

                  Kommentar

                  Lädt...
                  X