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

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