[Newbies] crossSum

Markus Gaelli gaelli at emergent.de
Thu May 11 13:52:16 UTC 2006


crossSum again...

Here my implementation that now even runs for negative numbers... ;-)
- and comes with pre-/postconditions and some tests.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: crossSumBase.1.cs
Type: application/octet-stream
Size: 1100 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/beginners/attachments/20060511/9974e369/crossSumBase.1.obj
-------------- next part --------------

I posted it also on Mantis, so maybe it might get even included in an  
image >= 3.9 at sometime.



p.s. I also implemented an example to visually compare the outcome  
with the colormap from
http://mathworld.wolfram.com/DigitSum.html (and run all the pre- and  
post-conditions on the way...)

	| aForm aWheel maxNumber maxBase |
	maxNumber := 100.
	maxBase := 100.
	aForm := Form extent: (maxBase+1) @ (maxNumber+1) depth: Display depth.
	aWheel := Color wheel: ((maxNumber ln / maxBase ln) * maxBase)
					saturation: 1.0
					brightness: 1.0.
		to: maxBase
		do: [:aBase | 1
				to: maxNumber
				do: [:aNumber |
						colorAt: aNumber @ (maxBase - aBase)
						put: (aWheel at: (aNumber crossSumBase: aBase))]].
	(aForm scaledToSize: 280 at 280) display

Resulting pic of this code looks like:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: crossSum.png
Type: image/png
Size: 10531 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/beginners/attachments/20060511/9974e369/crossSum.png
-------------- next part --------------

Legend: As I understand the mathematica legend, the base should the  
x, and the number the y.

Bizarre thing is, that I had to swap x and y coordinates to reproduce  
the result, anybody any ideas why?
I assume that
	Form >> colorAt: x at y put: aColor
is the way to use Forms and not
	Form >> colorAt: y at x put: aColor

So is it me or Stephen Wolfram doing a mistake here? ;-)

On May 10, 2006, at 11:00 AM, st?phane ducasse wrote:

> What I suggest also is to write SUnits to document the behavior of  
> your program.
> You will see that when the bar of the test runner will be green  
> after a large change, you
> will get a really powerful feeling.
> I wrote the chapter Sunit Explained only for people starting.
> In 3.9 there is a reallllllly cool SUnit browser.
> Stef
> On 9 mai 06, at 12:30, Enrico Schwass wrote:
>> Hello
>> First of all. The creation of this mailinglist was a very good idea.
>> Reading the original list I always felt wrong, because of the very  
>> high
>> level of questions and ... yes answers. Thanks :)
>> Anyway. I was looking for a crossSum Method for Integers.
>> e.g. 251 crossSum (sometimes called checksum) should return 8
>> 1234 -> 10
>> I couldnt find one with method finder. So I wrote one by myself.
>> And a friend - also a smalltalk newbie - did another one.
>> Probably both are not perfect.
>> The first problem is: Where to put the new method? We decide to  
>> put it
>> directly into Integer (arithmetic). There are no side effects, we  
>> guess.
>> Are we right?
>> Second, we dont know the class library very well. It tooks 20 min to
>> find the smalltalk equivalent to !=
>> Its ~= for other newbies :)
>> So we never know, if we are doing it the smalltalk way.
>> It would be great if others post their solution and it could be a  
>> good
>> example for describing the test first development cycle, too. Another
>> area I am not so familiar with. But I am eager to learn this.
>> BTW: How can I tell method finder to use new implemented methods for
>> example search? 1. 2. 3. 4. 10 didnt show me crossSum.
>> Have a nice day
>> Enno
>> _______________________________________________
>> 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