Thread X zwischen laufzeitabhängig viele Arrays
(2 answers)
Opened by Sven_123 at 2011-07-05 14:23
Kurz: Ist es möglich, sämtliche 1D-Arrays, die in einem 2D-Array stehen durch ein X zu kombinieren? Sowas wie
was nicht geht, weil [] ja immer eine Reduktion zu einem skalaren Wert darstellt (oder?).
Lang: Ich hab einen 2D-Array, bei dem jeder 1D-Array verschiedene Möglichkeiten für die Stelle in der er im Gesamtarray steht repräsentiert. (Z.B. auf Platz 0 liegt ein Apfel, auf Platz 1 ein Apfel, oder eine Pflaume,... -> ['Apfel'],['Apfel','Pflaume'],...) Jetzt will ich in einer Funktion die "beste" Kombination von Obst rausfinden, d.h. sämtliche Kombinationen erstellen und vergleichen. Mein gedachtes Script sähe so aus: Code (perl): (dl
)
1 2 3 4 5 6 my @x = [1,2],[0,1,2],3,[2,3]; my $alte_bewertung = 0; for [X]@x -> @kombination { my $aktuell = funktion(@kombination); if $aktuell > $alte_bewertung {@x = @kombination; $alte_bewertung = $aktuell} } Zum einen stimmt das [X] nicht. Ich weiß nicht, ob es überhaupt möglich ist, das so zusammenzufassen, vorerst werd ich es mal umgehen. Zum anderen weiß ich nicht genau, ob ich das @x in der for-Schleife ändern dürfte, ohne, dass es sich auf die Schleife auswirkt - ich denke, aber schon, über welche Elemente iteriert wird, wird bestimmt nur einmal, am Anfang festgelegt. Wär ziemlich hübsch, das so kurz schreiben zu können. :) Nebenbei - warum ist man in perl6 von der Unterscheidung von Arrays und Skalaren durch @ und $ abgerückt? In perl5 war einem (mir) dadurch oft viel bewusster, was eigentlich grad passiert. In perl6 ist das manchmal etwas schwammig - generell scheint es oft ganz egal, ob man ein $, oder ein @ nimmt, wenn die gespeicherte Referenz eh fast immer (gefühlsmäßig) automatisch als Array benutzt wird. |