[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