[Newbies] Teaching Smalltalk
Samuel Williams
space.ship.traveller at gmail.com
Tue May 4 04:53:23 UTC 2010
Thanks John.
I don't know Smalltalk syntax, so I can't make the adjustments myself. It isn't that I don't understand functional programming concepts.
Kind regards,
Samuel
On 4/05/2010, at 4:45 PM, John Foster wrote:
> And here we see how someone who doesn't grok smalltalk sees the world. A
> closure could work like a function though.
>
> What I'm trying to work out is how to get rid of all the to:by:do: code -
> I feel as if it should be possible to use inject:into: to get to the
> answer much faster.
>
> John
>
> doorProblem := [ :count |
> a := Array new: count withAll: false.
>
> a withIndexDo: [ :each :index |
> index to: (a size) by: index do: [:this |
> a at: this put: (a at: this) not
> ]
> ].
>
> "output"
> a withIndexDo: [ :each :index |
> each ifTrue: [Transcript show: ('Door ', index asString, ' is
> open') ; cr]
> ].
> Transcript show: 'All the rest are closed';cr.
> ].
>
> doorProblem value: 100.
>
>
>> Dear David,
>>
>> Thanks for this.
>>
>> I'm happy to use idiomatic Scheme concepts.
>>
>> Are you able to make this a function which can work for n doors?
>> Example: http://programming.dojo.net.nz/languages/cpp/index
>>
>> Kind regards,
>> Samuel
>>
>> On 4/05/2010, at 3:31 PM, David Mitchell wrote:
>>
>>> Doh! Was only playing with 10 doors. This makes it 100.
>>>
>>> | count doors |
>>> count := 100.
>>> "Initialize the array of doors to 0 (closed)"
>>> doors := (Array new: count) atAllPut: false.
>>>
>>> "Process the doors"
>>> 1 to: count do:
>>> [ :pass |
>>> pass to: count by: pass do:
>>> [ :door |
>>> doors
>>> at: door
>>> put: (doors at: door) not ] ].
>>>
>>> "Print out the results"
>>> 1 to: count do:
>>> [ :n |
>>> Transcript
>>> show: 'door #', n, ' is ';
>>> show: ((doors at: door) ifTrue: [#open] ifFalse: [#closed]);
>>> cr]
>>> _______________________________________________
>>> Beginners mailing list
>>> Beginners at lists.squeakfoundation.org
>>> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>>
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
More information about the Beginners
mailing list