[Funktion] rekursion

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

  • [Funktion] rekursion

    hallo community,

    dies heir ist mein 1ter post

    also...ich hab folgendes problem...

    input_array
    1 => array(x=1, y=2, z=3)
    2 => array(x=1, y=2, z=2)
    3 => array(x=2, y=3, z=4)
    4 => array(x=2, y=3, z=5)
    5 => array(x=2, y=4, z=6)
    6 => array(x=2, y=4, z=7)
    7 => array(x=3, y=5, z=8)

    output_array

    1 => array( 2 => array(3,2))
    2 => array( 3 => array(4,5), 4 => array(6,7))
    3 => array( 5 => array(8))


    so soll es aussehen, also hab den input_array gegeben und rauskommen soll das output_array wobei der "top-level" key das X aus dem input array ist.
    die Ordnungselemente weiss ich auch also ( x=> y => z)
    mein problem ist jetzt, das die elemente eine unbekannte tiefe erreichen können.
    also muss ich mittels rekursion an die sache ran, zerbrech mir jetzt schon eub paar stunden den kopf aber komm nicht drauf.
    vielleicht hat hier ja jemand einen lösungansatz (am besten natürlich ein code-snippet)

    mfg
    digitalkaoz
    Zuletzt geändert von digitalkaoz; 01.09.2006, 16:39.

  • #2
    ich verstehe die idee nicht, vielleicht kannst du richtige arrays vorbereiten (so wie man sie in php deklarieren dürfte).

    aber so auf die schnelle:
    PHP-Code:
    foreach( $input_array as $k )
    {
       
    $output_array[$k['x']][$k['y']][] = $k['z'];

    evtl. über eine zwischenzuweisung, um das zweite verschachtelte array richtig anzusprechen.

    Kommentar


    • #3
      Hi,

      ich such nach einer lösung für das problem. Das ist gar nicht so einfach.
      Falls du zwischenzeitlich etwas gefunden hast, lass es uns wissen.

      Die erste reduktion ist ja kein problem. Was probleme bereitet sind die weiteren.
      Die rekursive lösung ist nach meinem jetzigen empfinden jedenfalls nicht trivial.

      Man ich hasse es wenn ich ein problem nicht ohne weiteres lösen kann.
      Das sieht auf den ersten blick wie eine einfache aufgabe aus, aber man kann
      sich echt das gehirn verknoten damit.


      greets

      Stay tuned....
      (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

      Kommentar


      • #4
        dann definiere das problem präziser.
        wenn keine skalierbarkeit benötigt ist, reicht eine iterative lösung in der art, wie ich es vorgeschlagen habe.

        Kommentar

        Lädt...
        X