Друзья, подскажите, как решить задачу. Человек забыл пин-код от двери в здание. Клавиатура выглядит следующим образом: ┌───┬───┬───┐ │ 1 │ 2 │ 3 │ ├───┼───┼───┤ │ 4 │ 5 │ 6 │ ├───┼───┼───┤ │ 7 │ 8 │ 9 │ └───┼───┼───┘ │ 0 │ └───┘ Человек вспоминает, что, вроде бы, пин код был 1357, но вероятно каждая цифра должна быть сдвинута по горизонтали или вертикали, но не по диагонали. Например, вместо 1 может быть 2 или 4. Ну а вместо 5 может быть 2, 4, 6 или 8. Помоги человеку попасть в здание. Входные данные Строка с пин-кодом. Длина строки от 1 до 8 цифр, например, 1357. Выходные данные Исходный пин-код и возможные варианты пин-кодов с учетом сдвигов, отсортированные и разделенные запятой. Пример Входн. данные: 11 Выходн. данные: 11,12,14,21,22,24,41,42,44 Входн. данные: 8 Выходн. данные: 0,5,7,8,9 Входн. данные: 46 Выходн. данные: 13,15,16,19,43,45,46,49,53,55,56,59,73,75,76,79 Важно, что пин-коды должны быть строками, так как могут начинаться с 0, и должны быть отсортированы, как строки. PS: Я написал код как будто пользователь ввёл пин 1357, получилось 135 варинатов пинов. Но как сделать так, чтобы прога создавала сама циклы в зависимости от введённых цифр ( от 1 до 8) и потом суммировала элементы строковых массивов (как у меня в примере)? Вот мой код: public class Main { public static void main(String[] args) { String[] ar1 = {"1","2","4"}; String[] ar2 = {"3","2","6"}; String[] ar3 = {"5","2","4","6","8"}; String[] ar4 = {"7","4","8"}; for (int i = 0; i <ar1.length; i++) { for (int j = 0; j < ar2.length; j++) { for (int k = 0; k < ar3.length; k++) { for (int z = 0; z < ar4.length; z++) { String s = ar1[i] + ar2[j] + ar3[k] + ar4[z]; System.out.println(s + " "); } } } } } }