Skip to content

Commit a7585a3

Browse files
committed
cleanup immutable lift
GitPrivacy: AmM8iiCB+1Zeqr2OVG9xBqeBioE4IfQYMk6bofZ79Cgm2py7DQNw42oX7cjxHm/kHNkxhhz+sUo= 4qkMA7/hZK54pm9Hb4eSugC4c3mlwll18kbeHIzyltPcT0fMOHzMc80Yk0ibJaCFw2HKBe7zCJ4=
1 parent 1a31815 commit a7585a3

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/main/scala/ScalaPlayground/Lift/Immutable/LiftImmutable.scala

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,15 @@ case class Lift(
4141

4242
inline def nearestPassengerTarget: Option[Floor] =
4343
people.filter(_.matchesDirection(this)).map(_.destination).minByOption(floor => Math.abs(floor - position))
44+
45+
inline def fixDirection(building: Building): Lift =
46+
position match
47+
case 0 => copy(direction = Up)
48+
case p if p == building.floors.length - 1 => copy(direction = Down)
49+
case _ => this
50+
51+
inline def dropOff: Lift =
52+
copy(people = people.filter(_.destination != position))
4453

4554
@tailrec final def pickup(building: Building): (Lift, Building) =
4655
val queue = building.floors(position)
@@ -52,13 +61,6 @@ case class Lift(
5261
val emptierBuilding = building.copy(floors = building.floors.updated(position, emptierQueue))
5362
fullerLift.pickup(emptierBuilding)
5463

55-
inline def fixDirection(building: Building): Lift = position match
56-
case 0 => copy(direction = Up)
57-
case p if p == building.floors.length - 1 => copy(direction = Down)
58-
case _ => this
59-
60-
inline def dropOff: Lift = copy(people = people.filter(_.destination != position))
61-
6264
inline def align(building: Building): Lift =
6365
List(nearestPassengerTarget, building.nearestRequestInSameDirection(this)).flatten
6466
.minByOption(floor => Math.abs(floor - position))

0 commit comments

Comments
 (0)