[Squeak-ev] Re: Eulerprobleme mit Squeak
Guido Stepken
gstepken at googlemail.com
Mon Nov 8 13:49:58 UTC 2010
Bert Freudenberg schrieb:
> On 06.11.2010, at 12:04, Enrico Schwass wrote:
>
>> Ich erwarte deine Einsendung zu Lösung B :)
>>
>
> Du meinst, weil Lösung B auf unserer Website falsch ist? Demonstriert sehr schön die Gefahr, unnötigerweise mit Indizes rumzuhantieren.
>
> Von diesem Fehler abgesehen kann man das auch kompakter schreiben:
>
> (1 to: 999) inject: 0 into: [:sum :i |
> (i \\ 3 = 0) | (i \\ 5 = 0)
> ifTrue: [sum + i]
> ifFalse: [sum]]
>
> Das vermeidet trotzdem den exorbitanten Speicherverbrauch von Lösung A.
>
> Noch knapper:
>
> (1 to: 999) detectSum: [:i | (i \\ 3 = 0) | (i \\ 5 = 0) ifTrue: [i] ifFalse: [0]]
>
> Und wenn man Kontrollstrukturen vermeiden mag:
>
> (1 to: 999) detectSum: [:i | i * (#(0 0 1 0 1 1 0 0 1 1 0 1 0 0 1) atWrap: i)]
>
> Macht Spaß :)
>
> - Bert
Hat was! ;-) Wie messe ich denn am elegantesten den Speicherverbrauch
deiner Lösungen?
Apropos: Muss dich nachträglich doch sehr loben für die Portierung von
EToys auf iPad ... klasse Arbeit, hat mich begeistert! Ist das schon im
Appstore oder hat Apple damit auch Probleme?
Have fun, Guido Stepken