Not an answer to your specific question, but your #move... methods
look very odd.  I think you meant something like
    moveUpAFloor
      floor := floor + 1.
    moveDownAFloat
      floor := floor - 1.
    hasReachedBasement
      ^floor = -1

AH!  Now I see it.  You are reporting the LAST time that the lift
reached the basement, but you were suppose to report the FIRST time.
You want
    reachedBasement: input
      input withIndexDo: [:element :index |
        element = $( ifTrue: [self moveUpAFloor].
        element = $) ifTrue: [self moveDownAFloor].
        self hasReachedBasement ifTrue: [^index]]. "HERE"
      ^0
Or using a standard linear-search method,
    reachedBasement: input
      |floor|
      floor := 0. "ground"
      ^input findFirst: [:each |
         each = $( ifTrue: [floor := floor + 1]. "up"
         each = $) ifTrue: [floor := floor - 1]. "down"
         floor = -1 "basement"]

On Tue, 18 Dec 2018 at 09:49, Roelof Wobben <[email protected]> wrote:

> hello
>
> I have this code
>
> hasReachedBasement: aFloor
>      "comment stating purpose of message"
>
>      ^ aFloor = -1
>
> initialize
>      "comment stating purpose of message"
>
>      super initialize.
>      position := 1.
>      floor := 0
>
> moveFloorDown: aFloor
>      "comment stating purpose of message"
>
>      ^ floor := aFloor - 1
>
> moveFloorUp: aFloor
>      "comment stating purpose of message"
>
>      ^ floor := aFloor + 1
>
> reachedBasement: input2
>      input2
>          withIndexDo: [ :element :index |
>              element = $(
>                  ifTrue: [ self moveFloorUp: floor ]
>                  ifFalse: [ self moveFloorDown: floor ].
>              (self hasReachedBasement: floor)
>                  ifTrue: [ position := index ] ].
>      position ifNotNil: [ ^ position ]
>
> This works very fine with test input given by the challenge
> but as soon as I do it with this :
> https://gist.github.com/RoelofWobben/3be69976a6dd3531f01558b0ac563556
>
> I see as answer : 6111 where I expect to see 1797
>
> Anyone who can see what I did wrong ?
>
> Roelof
>
>
>

Reply via email to