On Thu, Apr 18, 2019 at 10:33 AM Roelof Wobben <r.wob...@home.nl> wrote:
> oke > > Maybe I understand something not right, > > Lets say we have this scenario. > > Robot is on position (0,0) > now it turns left so the robot faces East > I don't understand what position has to do with direction nor why that would be a problem. They are two distinct attributes. Point and Dictionary are sufficient classes to model the limited requirements of this exercise. You could model a new class DirectionVector which internalizes the Point used to provide the direction and provides its own name, eliminating the need for a look up of any kind. > or this scenario > > Robot is on position (0,0) > now it turns right so the robot faces west. > > it looks that dictionary cannot provide this answer. > or do I overlook something > > Roelof > > > > Op 18-4-2019 om 19:17 schreef Richard Sargent: > > On Thu, Apr 18, 2019 at 10:01 AM 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 >> >> 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) >> > > If you have previously defined a "representation map", you would be golden. > > e.g. > Dictionary new > at: self northDirectionVector put: 'north'; > at: self eastDirectionVector put: 'east'; > at: self southDirectionVector put: 'south'; > at: self westDirectionVector put: 'west'; > yourself. > > Then: > (Dictionary new > add: 'direction' -> (self directionRepresentationMap at: > self directionVector); > ... > > >> >> 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 >>> >>> >> >