Это, по сути, обратное Генерировать номерной знак США
Задача: учитывая строку, соответствующую одному из приведенных ниже форматов номерных знаков, выведите все возможные состояния, соответствующие этому форматированию. В приведенной ниже таблице 0
обозначает одну цифру 0
через 9
включительно, и A
выступает за одной буквы A
через Z
включительно. Для целей этой задачи мы игнорируем состояния со сложными правилами формата (например, Делавэр, который имеет переменное число цифр) и игнорируем удаление одинаковых букв (например, I
и 1
).
AAA 000: AK, IA, MS, MP, VT
0000: AS
AAA0000: AZ, GA, WA
000 AAA: AR, KS, KY, LA, ND, OR
0AAA000: CA
AA-00000: CT
AA-0000: DC
AAA A00: FL
AA 00000: IL
000A,000AA,000AAA,AAA000: IN
0AA0000: MD
AAA 0000,0AA A00,AAA 000: MI
000-AAA: MN
00A-000: NV
000 0000: NH
A00-AAA: NJ
000-AAA,AAA-000: NM
AAA-0000: NY, NC, PA, TX, VA, WI
AAA 0000: OH
000AAA: OK
AAA-000: PR
000-000: RI
AAA 000,000 0AA: SC
A00-00A: TN
A00 0AA: UT
Примеры:
B32 9AG
[UT]
1YUC037
[CA]
285 LOR
[AR, KS, KY, LA, ND, OR] (in any order)
285-LOR
[MN, NM] (in any order)
285LOR
[IN, OK] (in any order)
Правила и разъяснения
- Входная строка гарантированно не пуста и имеет один из указанных выше форматов.
- Поведение, если задан формат, отличный от указанного выше, не определено
- Ввод и вывод может быть дан любым удобным способом
- Вы можете распечатать результат в STDOUT или вернуть его как результат функции
- Допустимы либо полная программа, либо функция
- Стандартные лазейки запрещены
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах)
источник
[A-Z]*.
вместо того,.*?[a-z]
чтобы сохранить один байтT-SQL, 475 байт
Разрывы строки предназначены только для удобства чтения.
Ограничено SQL 2017 или выше с помощью этой
TRIM
функции. SQL 2016 (требуется дляSTRING_SPLIT
), возможно, путем заменыRTRIM
по стоимости 1 байт.Ввод осуществляется через существующую таблицуя с варчарным полем v , В соответствии с нашими правилами ввода - вывода
Я в основном делаю обратный
LIKE
матч: я расширяю образец каждой пластины до полной подстановочных соответствий шаблона строки , как'[A-Z][0-9][0-9] [0-9][A-Z][A-Z]'
, сравниваю с входным значением и возвращаю соответствующие состояния (которые объединены в одно поле).Может быть в состоянии сэкономить больше места, используя GZIP'у длинную строку; Я посмотрю, поможет ли это ...
источник
Perl 5
(-p)
, 165 байтПорт ответа @ Arnauld's на Javascript, также проголосуйте за него.
Попробуйте онлайн!
источник
Древесный уголь , 177 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Попробуйте все тестовые случаи! Ссылка на подробную версию кода. (Немного другой код, необходимый для обработки нескольких случаев.)
Неудивительно, что порт решения @ Arnauld намного короче - всего 121 байт:
Попробуйте онлайн! Ссылка на подробную версию кода. Второе по модулю 30 подразумевается при индексации в массиве.
источник
Python 3 ,
382378 байтПопробуйте онлайн!
Заменяет цифры на
0
и буквы на1
, затем ищет строку с табличкой, за которой следует строка букв. Затем он просто возвращает каждую непересекающуюся пару букв в этой строке.Не самый эффективный байт, но хорошее начало (возможно).
Мне нравятся проблемы, основанные на информации, которую нельзя просто сгенерировать.
источник
05AB1E , 176 байт
Попробуйте онлайн!
источник