Генерация автомобильных номеров java

нужно сделать генератор автомобильных номеров в таком формате:

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

пожалуйста, помогите кто чем может)

Цель задания
Научиться сортировать и искать элементы в коллекциях.

Что нужно сделать
Выполните задание в 09_NumbersStringsAndDates/homework_9.5/CoolNumbers

1. Реализуйте метод генерации «красивых» автомобильных номеров generateCoolNumbers() в классе CoolNumbers.
Используйте следующие правила генерации номеров:
XYZ — различный набор из списка разрешенных букв, N — цифры, R — регион (от 01 до 199);
XNNNYZR — пример: A111BC197, У777HC66.
В госномерах автомобилей в РФ используются следующие буквы: А, В, Е, К, М, Н, О, Р, С, Т, У, Х
В коллекции должно быть не менее 2 млн номеров.

2. Реализуйте методы поиска класса CoolNumbers по поиску номеров в каждой коллекции:
прямым перебором по ArrayList,
бинарным поиском по сортированному ArrayList,
поиском в HashSet,
поиском в TreeSet.

3. Измерьте и выведите длительность каждого метода поиска.
Формат вывода результатов поиска:
Поиск перебором: номер найден/не найден, поиск занял 34нс
Бинарный поиск: номер найден/не найден, поиск занял 34нс
Поиск в HashSet: номер найден/не найден, поиск занял 34нс
Поиск в TreeSet: номер найден/не найден, поиск занял 34нс

4. Напишите в форме ответа, какой поиск — самый быстрый, а какой — самый медленный.
(Ответ: При поиске первого добавленного элемента время поиска описанными методами примерно одинаковое,
а в остальных случаях самый быстрый - HashSet, самый медленный - ArrayList).

Сегодня, когда я писал небольшой проект, я использовал этот гаджет, чтобы дать более реалистичную жизненную сцену, когда я проектировал класс Car. Принцип также довольно прост: просто нужно сделать его более совершенным, иначе это потратит на время мои усилия, настоящим записываю. (Ну, в основном я хочу обновить блог, чтобы использовать его позже). Непосредственно по коду:

package projects.utils;

import java.util.Random;
/**
 * Сводный класс инструментов и методов, используемых в проекте
 * @author XZP
 *
 */
public class Util {
	private Util() {} // Не создавать экземпляр по умолчанию
	// Начало автомобильного номера
	private static String[] a = {
			"  A","  C","  E","  F","  H","  G",«  B»,"Цу А",«Цу Б», "Цу Ц", "Джин Э",
			"Шанхай А", "Шанхай Б", "Шанхай Д", "Шанхай C","Чонг А", "Ю Б", "C", "Чонг Джи", "Чонг Х","Джи А", 
			"Джи Би", "Джи Си", "Джи Ди", "Джи Э", "Джи Ф", "Джи Джи", "Хэбэй Х", "Джи Дж", "Джи Р", "Хэбэй Т",
			"Ю А", "Ю Б", "Ю Ц", "Ю Д", "Ю Е", "Ю Ф","Ю Г","Ю Х","Ю Дж","Ю К","Ю Л",
			"Ю М","Ю Н","Ага","Yu Q","Ю Р","Ю С","Ю Ю",«Облако А», «Облако C», «Облако Д», "Облако E", «Облако F»,
			«Облако G»,«Облако H»,"Облако J",«Облако К»,"Облако L",«Облако М»,«Облако N»,«Облако П»,«Облако Q»,«Облако Р»,«Облако S»,
			«Ляо А», "Ляо Б", "Ляо С", "Ляо Д", "Ляо Э", "Ляо Ф","Ляо Г","Ляо Х","Ляо Дж","Ляо К","Ляо Л","Ляо М",
			"Ляо Н","Ляо П","Ляо В","Черный А", «Черный Б», "Черная С", "Черный Д", "Блэк Е", "Черный F","Черная G","Черный H","Черный J","Черный К",
			"Черный L","Черный М","Черный N","Черный П","Черный R",«Сян А», «Сян Б», "Xiang C", "Сян Д", "Сян Э", "Сян Ф",«Сян Джи»,"Сян Х","Сян Дж",
			"Сян К","Сян Л",«Сян М»,"Сян Н",«Сян Ю»,"Сян С","Ван А", "Ван Б", "Ван С", "Ван Д", "Ван Э", "Ван Ф","Ван Г","Ван Х","Ван Дж",
			"Ван К","Ван Л","Ван М","Ван Н","Ван П","Ван Кью","Ван Р","Ван С","Лу А", "Лу Б", "Лу С", "Лу Д", "Лу Э", "Лу Ф","Лу Г",
			"Лу Х","Лу Дж","Лу К","Лу Л","Лу М","Лу Н","Лу П","Лу Кью","Лу Р","Лу С","Лу У","Лу В","Лу И","Новый А", "Новый Б", "Новый C",
			"Новый Д", "New E", "Новый F","Новый G","Новый H","Новый J","Новый К","Новый L","Новый М","Новый N","Новый П","Новый Q","Новый Р",«Вс А», «Су Б», "Su C",
			«Вс Д», «Су Е», «Вс Ф»,"Су Г","Вс Ч","Су Дж","Су К","Su L",«Су М»,"Солнце","Же А", «Же Б», "Же С", "Же Д", "Же Э", "Же Ф",
			«Же Г»,"Же Н",«ЖеЖ»,«Же К»,"Же Л","Ган А","Ган Б","Ган С","Ган Д","Ган Э","Ган Ф","Ган Джи","Ган Х","Ган Дж","Ган К","Ган Л","Ган М","E A",
			"E B","E C","E D","E E","E F","E G","E H","E J","E K" ,"E L","E M","E N","E P","E Q","E R","E S","Gui A","Gui B",
			"Gui C","Gui D","Gui E","Gui F","Gui G","Gui H","Gui J","Гуи К","Gui L","Гуй М","Gui N","Гуй П" ,"Gui R","  A",«  B»,"  C","  D","  E",
			"  F","  G","  H","  J",«  K»,«  L»,"  M" ,"  N","  P","Джин А" ,"Джин Би","Джин Си","Джин Ди","Джин Э","Джин Ф","Джин Х","Джин Дж","Джин К",
			"Джин Л","Джин М",«Монголия А»,«Монголия Б»,"Mont C","Мэн Д","Монте-Э","Монголия Ф","Mong G","Мэн Х","Монгольский J","Монах К","Монгольский L","Мэн М","Шаан А","Шаан Б","Шаан С","Шаан Д","Шаан Э",
			"Шаан Ф","Шаан Джи","Шаан Х","Шаан Дж","Шаан К","Шаан У","Шаан В","Джи А","Джи Б","Джи С","Джи Д","Джи Э","Джи Ф","Джи Джи","Джи Н","Джи Дж",«Мин. А»,«Мин Б»,«Мин. C»,
			"Разум","Мое","Мин. F" ,«Мин G»,"Мин. Ч","Мин Дж",«Мин К»,"Дорогой А","Дорогой Б" ,"Дорогой C","Дорогой Д","Дорогая Е" ,"Дорогой F","Дорогой G","Дорогой H","Дорогой J","Гуандун А","Кантон Б","Гуандун C",
			"Кантон Д","Кантон E","Кантон Ф","Кантонский G","Гуандун Х","Кантонский J","Кантонский К","Кантон L","Гуандун М","Кантонский N","Юэ П",«Кантонский Q»,"Юэ Р","Юэ С","Кантонский Т","Юэ Ю","Кантонский V","Кантон W",«Кантон Х»,"Кантон Y",
			«Кантонский Z»,"Зеленая А","Зеленая Б","Зеленая С","Грин Д","Грин Э","Грин Ф","Зеленая G","Зеленая H","Тибет А","Занг Би","Занг Си","Скрытый D","Zang E","Скрытый F","Скрытый G","Тибет Н" ,"Занг Дж","Чуан А","Чуан Б",
			"Чуан С","Чуан Д","Чуан Э","Чуан Ф","Чуан Х","Чуан Дж","Чуан К","Чуан Л","Чуан М","Чуан Кью","Чуан Р","Чуан С","Чуан Т","Чуан Ю","Чуан В","Чуан В","Чуан Икс","Чуан И","  Z","Нин А",
			"Нин Би","Нин С","Нин Д","Джоан А","Джоан Б","Джоан С","Джоан Д","Джоан Э"
			};
	private static String[] b = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
	
	
	/**
	  * Произвольно генерировать номерной знак
	 * @return
	 */
	public static String getPalte() {
		int count = 0;
		String sb = "";
		// Случайным образом получаем последние пять случайных серийных номеров
		while (count < 5) {
			Random random = new Random();
			String str2 = b[random.nextInt(26)];
			int num = random.nextInt(10);
			int j = 0;
			// Контроль количества букв и цифр
			if (count > 2) {
				for (int i = 0; i < sb.length(); i++) {
					char c = sb.charAt(i);
					if ((c >= 'A') && (c <= 'Z')) {
						j++;
					}
				}
			}
			if (j < 2) {
				// Буквы и цифры имеют одинаковую вероятность
				if (random.nextBoolean()) {
					sb += num;
				} else {
					sb += str2;
				}
				count++;
			} else {
				sb += num;
				count++;
			}
		}
		// Получаем случайный номер органа, выдавшего сертификат
		Random random1 = new Random();
		int num1 = random1.nextInt(31);
		String plate = a[num1] + sb;
		return plate.matches("^.*[A-Z]{3}.*$") ? getPalte() : plate; // Определяем, соответствует ли он спецификации номерного знака, если в начале есть последовательные буквы, получить его снова
	}
	/**
	  * Метод инкапсуляции выходной строки самостоятельно
	 * @param o
	 */
	public static void Println(Object o) {
		System.out.println(o);
	}
}

нужно сделать генератор автомобильных номеров в таком формате:

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

пожалуйста, помогите кто чем может)

Добрый день,
Помогите пожалуйсто сделать программу определяющие автомобильные номера.
Уже несколько лет пытаюсь сделать самостоятельно. К сожалению знаю только Java со студенческих времен, поэтому результат такой же. Сколько времени потраченно, боюсь в слух произносить, засмеют. Статьи на хабре от Recognitor перечитывал с десяток раз. Перелопатил много форумов и постов на эту тему. Ощущение, что у всех уже давным давно такая программа есть, причем на всех языках кроме Java.
Тот код, который на Яве, либо частичный, либо оказывается не рабочим, когда пытаешься его запустить.
На данный момент, добрался до распознования символов. Опеределие по SVM выдает много ложных результатов, иногда угадывает конечно. Наконец-то получилось запустить Tesseract… Все плохо :-(
Код на С++ не подойдет, т.к. я его попросту не знаю, и не смогу в дальнейшем использовать либо изменить (живу в Израиле, нужно будет обучить на здешние номера)
Готовые решения стоят дорого, для личной хотелки, я не могу такую сумму заплатить из семейного бюджета.
За разумную цену, готов купить чей то рабочий код на Java. Лишь бы научили его запускать и адаптировать под здешние номера.
Заранее Благодарен.


  • Вопрос задан

    более трёх лет назад

  • 7685 просмотров

  • Генератор телефонных номеров россии
  • Генератор случайных телефонных номеров
  • Генератор случайных номеров машин
  • Генератор рандомных номеров телефона русских
  • Генератор рандомных номеров авто