R: Readability (magic strings/numbers)

This commit is contained in:
Paul Hameteman 2025-10-14 21:07:36 +02:00
commit 75e1b9cb00
2 changed files with 37 additions and 21 deletions

View file

@ -2,7 +2,8 @@
- [ ] Readability - [ ] Readability
- [x] comments - [x] comments
- [x] dead code - [x] dead code
- [ ] magic strings/numbers - [x] magic strings/numbers
- [ ] bad naming
- [ ] scopes - [ ] scopes
# RPP # RPP

View file

@ -3,38 +3,38 @@ package org.example
class Rover { class Rover {
constructor(p: String) { constructor(p: String) {
val s = p.split(' ') val s = p.split(' ')
if (s.size >= 3) { if (s.size >= ROVER_MINIMUM_NEEDED_COMMANDS) {
rs.xx = s[0].toInt() rs.xx = s[ROVER_STARTING_POSITION_X].toInt()
rs.yy = s[1].toInt() rs.yy = s[ROVER_STARTING_POSITION_Y].toInt()
rs.dd = s[2][0] rs.dd = s[ROVER_COMMANDLIST][ROVER_COMMANDLIST_FIRST_COMMAND]
} }
} }
fun go(cms: String) { fun go(cms: String) {
for (c in cms) { for (c in cms) {
when (c) { when (c) {
'L' -> { COMMAND_TURN_LEFT -> {
when (rs.dd) { when (rs.dd) {
'E' -> rs.dd = 'N' DIRECTION_EAST -> rs.dd = DIRECTION_NORTH
'N' -> rs.dd = 'W' DIRECTION_NORTH -> rs.dd = DIRECTION_WEST
'W' -> rs.dd = 'S' DIRECTION_WEST -> rs.dd = DIRECTION_SOUTH
'S' -> rs.dd = 'E' DIRECTION_SOUTH -> rs.dd = DIRECTION_EAST
} }
} }
'R' -> { COMMAND_TURN_RIGHT -> {
when (rs.dd) { when (rs.dd) {
'E' -> rs.dd = 'S' DIRECTION_EAST -> rs.dd = DIRECTION_SOUTH
'S' -> rs.dd = 'W' DIRECTION_SOUTH -> rs.dd = DIRECTION_WEST
'W' -> rs.dd = 'N' DIRECTION_WEST -> rs.dd = DIRECTION_NORTH
'N' -> rs.dd = 'E' DIRECTION_NORTH -> rs.dd = DIRECTION_EAST
} }
} }
'M' -> { COMMAND_MOVE -> {
when (rs.dd) { when (rs.dd) {
'E' -> rs.xx++ DIRECTION_EAST -> rs.xx++
'S' -> rs.yy-- DIRECTION_SOUTH -> rs.yy--
'W' -> rs.xx-- DIRECTION_WEST -> rs.xx--
'N' -> rs.yy++ DIRECTION_NORTH -> rs.yy++
} }
} }
} }
@ -54,5 +54,20 @@ class Rover {
class RoverState { class RoverState {
var xx: Int = 0 var xx: Int = 0
var yy: Int = 0 var yy: Int = 0
var dd: Char = 'N' var dd: Char = DIRECTION_NORTH
} }
private const val ROVER_MINIMUM_NEEDED_COMMANDS = 3
private const val ROVER_STARTING_POSITION_X = 0
private const val ROVER_STARTING_POSITION_Y = 1
private const val ROVER_COMMANDLIST = 2
private const val ROVER_COMMANDLIST_FIRST_COMMAND = 0
private const val COMMAND_TURN_LEFT = 'L'
private const val COMMAND_TURN_RIGHT = 'R'
private const val COMMAND_MOVE = 'M'
private const val DIRECTION_EAST = 'E'
private const val DIRECTION_NORTH = 'N'
private const val DIRECTION_WEST = 'W'
private const val DIRECTION_SOUTH = 'S'