R: Long method
This commit is contained in:
parent
bedefaba94
commit
ab064c71f7
3 changed files with 33 additions and 27 deletions
|
|
@ -1,9 +1,9 @@
|
||||||
# TODO
|
# TODO
|
||||||
|
|
||||||
# RPP
|
|
||||||
- [ ] Complexity
|
- [ ] Complexity
|
||||||
- [ ] long method
|
- [ ] long method
|
||||||
- [ ] duplicated code
|
- [ ] duplicated code
|
||||||
|
|
||||||
|
# RPP
|
||||||
- [ ] Reorder Responsibilities
|
- [ ] Reorder Responsibilities
|
||||||
- [ ] long class
|
- [ ] long class
|
||||||
- [ ] feature envy
|
- [ ] feature envy
|
||||||
|
|
|
||||||
|
|
@ -13,34 +13,40 @@ class Rover {
|
||||||
fun go(instructions: String) {
|
fun go(instructions: String) {
|
||||||
for (instruction in instructions) {
|
for (instruction in instructions) {
|
||||||
when (instruction) {
|
when (instruction) {
|
||||||
COMMAND_TURN_LEFT -> {
|
COMMAND_TURN_LEFT -> turnLeft()
|
||||||
when (state.heading) {
|
COMMAND_TURN_RIGHT -> turnRight()
|
||||||
HEADING_EAST -> state.heading = HEADING_NORTH
|
COMMAND_MOVE -> move()
|
||||||
HEADING_NORTH -> state.heading = HEADING_WEST
|
|
||||||
HEADING_WEST -> state.heading = HEADING_SOUTH
|
|
||||||
HEADING_SOUTH -> state.heading = HEADING_EAST
|
|
||||||
}
|
|
||||||
}
|
|
||||||
COMMAND_TURN_RIGHT -> {
|
|
||||||
when (state.heading) {
|
|
||||||
HEADING_EAST -> state.heading = HEADING_SOUTH
|
|
||||||
HEADING_SOUTH -> state.heading = HEADING_WEST
|
|
||||||
HEADING_WEST -> state.heading = HEADING_NORTH
|
|
||||||
HEADING_NORTH -> state.heading = HEADING_EAST
|
|
||||||
}
|
|
||||||
}
|
|
||||||
COMMAND_MOVE -> {
|
|
||||||
when (state.heading) {
|
|
||||||
HEADING_EAST -> state.positionX++
|
|
||||||
HEADING_SOUTH -> state.positionY--
|
|
||||||
HEADING_WEST -> state.positionX--
|
|
||||||
HEADING_NORTH -> state.positionY++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun move() {
|
||||||
|
when (state.heading) {
|
||||||
|
HEADING_EAST -> state.positionX++
|
||||||
|
HEADING_SOUTH -> state.positionY--
|
||||||
|
HEADING_WEST -> state.positionX--
|
||||||
|
HEADING_NORTH -> state.positionY++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun turnRight() {
|
||||||
|
when (state.heading) {
|
||||||
|
HEADING_EAST -> state.heading = HEADING_SOUTH
|
||||||
|
HEADING_SOUTH -> state.heading = HEADING_WEST
|
||||||
|
HEADING_WEST -> state.heading = HEADING_NORTH
|
||||||
|
HEADING_NORTH -> state.heading = HEADING_EAST
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun turnLeft() {
|
||||||
|
when (state.heading) {
|
||||||
|
HEADING_EAST -> state.heading = HEADING_NORTH
|
||||||
|
HEADING_NORTH -> state.heading = HEADING_WEST
|
||||||
|
HEADING_WEST -> state.heading = HEADING_SOUTH
|
||||||
|
HEADING_SOUTH -> state.heading = HEADING_EAST
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val position: String
|
val position: String
|
||||||
get() = "${state.positionX} ${state.positionY} ${state.heading}"
|
get() = "${state.positionX} ${state.positionY} ${state.heading}"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue