как сделать генератор автомобильного номера?
нужно сделать генератор автомобильных номеров в таком формате:
XYZ - различные буквы, N - цифры, R - регион (от 01 до 199)
XNNNYZR - пример, A111BC197, Y777HC66
получилось только вот так:
public class Main {
public static void main(String[] args) {
String[] chars = new String[]{"А", "В","Е", "К", "М", "Н", "О", "Р", "С", "Т", "У", "Х", };
for (int i = 0; i < chars.length; i++) {
for (int j = 1; j < 10; j++) {
String currChar = chars[i];
String number = String.format("%s(%d%d%d)(%s%s)(%d%d%d)", currChar, j, j, j, currChar, currChar, j, j,j);
System.out.println(number);
}
}
}
}
выдает следующее:
А(111)(АА)(111)
А(222)(АА)(222)
А(333)(АА)(333)
А(444)(АА)(444)
А(555)(АА)(555)
А(666)(АА)(666)
А(777)(АА)(777)
А(888)(АА)(888)
А(999)(АА)(999)
В(111)(ВВ)(111)
В(222)(ВВ)(222)
В(333)(ВВ)(333)
В(444)(ВВ)(444)
В(555)(ВВ)(555)
В(666)(ВВ)(666)
В(777)(ВВ)(777)
В(888)(ВВ)(888)
etc
пожалуйста, помогите кто чем может)
Ответы (2 шт):
Автор решения: Vladimir Yarovoy
→ Ссылка
Прям все комбинации перебрать надо? Можно вот так, например:
IntStream.range(1, 200).forEach(
region -> Arrays.stream(chars).forEach(
letterA -> Arrays.stream(chars).forEach(
letterB -> Arrays.stream(chars).forEach(
letterC -> IntStream.range(1, 1000).forEach(
num -> System.out.println(String.format("%s %03d %s%s %03d", letterA, num, letterB, letterC, region))
)
)
)
)
);
Автор решения: Олег П
→ Ссылка
Я попробовал решить так. Проверил, совпадений в этом "листе" нет.
ArrayList<String> coolNumbersList = new ArrayList<>();
ArrayList<String> coolNumbersListWithoutRegion = new ArrayList<>();
String numberplate = "";
String numberplateWithoutRegion = "";
char x; // первая буква
char z; // вторая буква
char y; // третья буква
ArrayList<Character> allowedLetters = new ArrayList<>(){{
add('А');
add('В');
add('Е');
add('К');
add('М');
add('Н');
add('О');
add('Р');
add('С');
add('Т');
add('У');
add('Х');
}};
for(Character firstLetter : allowedLetters){
x = firstLetter;
for (int n = 0; n < 10; n++){
for (Character secondLetter : allowedLetters){
z = secondLetter;
for(Character thirdLetter : allowedLetters){
y = thirdLetter;
numberplateWithoutRegion = String.format("%c%d%d%d%c%c", x, n, n, n, z, y);
coolNumbersListWithoutRegion.add(numberplateWithoutRegion);
}
}
}
}
for (String numberWithoutRegion : coolNumbersListWithoutRegion) {
for (int j = 0; j <= 199; j++){
if(j < 10){
numberplate = String.format("%s0%d", numberWithoutRegion, j);
coolNumbersList.add(numberplate);
}
else {
numberplate = String.format("%s%d", numberWithoutRegion, j);
coolNumbersList.add(numberplate);
}
}
}
return coolNumbersList;
}