dedlfix: Haskell Lösung

Beitrag lesen

Tach!

Eine Anmerkung hätte ich.

for ($i = 0; $i < $n; $i++) :
  $list[$i]= $i + 1;
endfor;

$list ist hier (und auch vorher) nicht grundlegend initialisiert worden. Wenn in zeitlich vorhergehendem Code $list ein Array war, dann werden in der Schleife die Werte nur überschrieben, wenn es einen gleichnamigen Schlüssel gibt, nicht vorhandene Schlüssel werden angehängt und überzählige bleiben drin. Die Reihenfolge wird dabei auch nicht numerisch sortiert, sondern beibehalten wie sie war. Damit läuft dann auch der nachfolgende Code nicht mehr intentionsgemäß.

Ebenso unangenehm ist es, wenn $list ein String wäre, denn die Array-Zugriffssyntax ist dieselbe wie beim Zugreifen auf einzelnen Zeichen eines Strings. Besser ist, die Arbeit PHP zu überlassen und das Ergebnis als Schreibzugriff zuzuweisen, dann sind eventuelle vorherige Werte garantiert weg.

$list = range(1, $n);

Wenn es range() nicht gäbe, wäre außerdem semantisch besser, die Schleife nicht von 0 bis < $n laufen zu lassen, und dann im inneren eine 1 zu addieren, sondern gleich mit den richtigen Werten, also 1 bis <= $n. Und $list = []; vor der Schleife erstellt ein garantiert leeres Array in $list.

dedlfix.