Я столкнулся с одной проблемой, я должен найти положение робота в сетке, он может двигаться в прямом направлении и может изменить свое направление на север, юг, восток и запад, и ему была предоставлена заданная последовательность команд , Итак, какой будет конечная позиция робота.
Использование любого типа ветвления условия (например, if / else, switch / case) запрещено.
ПРИМЕР-
ГРИД (100 * 500)
Начальная позиция робота - (5,3)
Возможные команды -
N-Север,
E-East,
W-Запад,
S-Юг,
M-движение вперед
Пример ввода - {N, S, M.M, E, W, E, S, M, S, M}
Мой Алго-
Я думаю, что могу использовать карту, где мои ключи будут командами, а значения будут функциями, выполняемыми для этой конкретной команды.
Но я не понимаю, как вызвать функцию через значение HashMap.
Также мы должны принять во внимание конечные случаи, когда у сетки больше не будет возможных движений.
Я попробовал этот код согласно предложению, но не понимал, как давать динамические команды, используя Enum
public class RobotMovesInGrid {
Scanner input = new Scanner(System.in);
String command=input.next();
int commLength = command.length();
static enum Command {
N{@Override public void execute(String g, String r){ System.out.println("do the N move here"); }},
E{@Override public void execute(String g, String r){ System.out.println("do the E move here"); }},
S{@Override public void execute(String g, String r){ System.out.println("do the S move here"); }},
W{@Override public void execute(String g, String r){ System.out.println("do the W move here"); }},
M{@Override public void execute(String g, String r){ System.out.println("do the M move here"); }};
public abstract void execute(String g, String r);
}
public void nextPosition() {
Command c1;
for(int i=0;i<commLength;i++) {
if (command.charAt(i)=='N'||command.charAt(i)=='E'|| command.charAt(i)=='S'|| command.charAt(i)=='W'||command.charAt(i)=='M')
c1= Command.M;// Here instead of M, I am trying to give dynamic commands but it is not taking it
System.out.println("Current position is"+c1);
}
//return c1;
}
}
Может кто-нибудь предложить мне, как вызывать методы Enum, используя команды, заданные в качестве ввода.