>> e.g. if you align the compass with a Cartesian plane, 0@1 is North, 0@-1 is 
>> South, 1@0 is East, and -1@0 is West.

On Fri, 19 Apr 2019 at 01:01, Roelof Wobben <r.wob...@home.nl> wrote:
>
> yep, I have read that one
> but I never gets a answer how I can "convert"  a point to something like 
> north, east

Maybe you are looking for something like this...
    map := Dictionary newFromPairs: {
        'north'.  0 @  1 .
        'south'.  0 @ -1 .
        'east'.   1 @  0 .
        'west' . -1 @  0 }.
    (map at: 'north') inspect.
    (map keyAtValue: 0 @ -1) inspect.

cheers -ben

>
> because the challenge wants this to be the answer :
>
> (Dictionary new
>                 add: 'direction' -> 'north';
>                 add:
>                     'position'
>                         ->
>                             (Dictionary new
>                                 add: 'x' -> 0;
>                                 add: 'y' -> 0;
>                                 yourself);
>                 yourself)
>
>
> and I think I need then to use if then , which I try to avoid as much as 
> possible.
>
> Roelof
>
>
>
> Op 18-4-2019 om 18:33 schreef Richard Sargent:
>
> On Thu, Apr 18, 2019 at 8:57 AM Roelof Wobben <r.wob...@home.nl> wrote:
>>
>> Hello,
>>
>> I know I have asked earlier but im still stuck on this one : 
>> https://github.com/exercism/problem-specifications/blob/master/exercises/robot-simulator/description.md
>>
>> I tried with all double dispatch but that will be a lot of duplicate classes
>>
>> The problem I cannot solve right is that a robot can move or turn. when a 
>> robot turns only the direction the robot is facing changes and the position 
>> not. when a robot moves the facing direction stays the same but the position 
>> changes. but the change is dependend on the facing. Also the new facing 
>> direction is dependend on the old facing direction/
>> How can I model this the best.
>>
>> I already have a object Robot that contains the facing direction and the 
>> current position
>> or tried without it but then I use a lot of if then's
>>
>>
>> so it  there  a better way to model this problem so it will be all nice and 
>> readable code.
>
>
> If I remember correctly, Richard O'Keefe gave you a viable design. 1) Use a 
> Point for your direction vector. 2) Use a second Point for your position.
>
> e.g. if you align the compass with a Cartesian plane, 0@1 is North, 0@-1 is 
> South, 1@0 is East, and -1@0 is West. When you move, you add the direction 
> vector to your current position. If you allow movements of greater than a 
> single unit, you multiply the direction vector by the distance before adding 
> that product to the position.
>
>>
>> Roelof
>>
>

Reply via email to