Hi

First, I think your code is readable and easy to understand.

I think the problem does not lend itself too much towards having “an object
oriented solution”, as such.

If you are looking for a one-liner using smalltalk libraries, you could do:
({10 -> 0. 5 -> 1. 1 -> 5. 0 -> 10} detect: [ :dist | dist key < distance
]) value

but I really think your code is easier to read, which is what I appreciate
the most.

Best,

Kasper

On 27 December 2019 at 20.18.38, Roelof Wobben via Pharo-users (
pharo-users@lists.pharo.org) wrote:

Hello,

Im trying to solve a challenge from exercism where  I have to calculate the
points somehow gets on a very simple darts board.

I solved it like this :


scoreX: anInteger y: anInteger2
    | distance |
    distance := (anInteger squared + anInteger2 squared) sqrt.
    distance > 10
        ifTrue: [ ^ 0 ].
    distance > 5
        ifTrue: [ ^ 1 ].
    distance > 1
        ifTrue: [ ^ 5 ].
    ^ 10


but now I use three if then and I think it's ugly code.

Is there a way I can make it more the smalltalk way ?


Regards,

Roelof

Reply via email to