Jest to zasadniczo odwrotność generowania amerykańskiej tablicy rejestracyjnej
Wyzwanie: Biorąc pod uwagę ciąg pasujący do jednego z poniższych formatów tablic rejestracyjnych, wypisz wszystkie możliwe stany, które pasują do tego formatowania. W poniższej tabeli 0
oznacza jedną cyfrę 0
przez 9
włącznie i A
oznacza jedną literę A
przez Z
włącznie. Na potrzeby tego wyzwania ignorujemy stany ze złożonymi regułami formatu (np. Delaware, który ma zmienną liczbę cyfr) oraz ignorujemy usuwanie podobnych do siebie liter (np. I
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
Przykłady:
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)
Zasady i wyjaśnienia
- Ciąg wejściowy jest gwarantowany jako niepusty i ma jeden z powyższych formatów
- Zachowanie, jeśli podano inny format niż powyższy, jest niezdefiniowane
- Dane wejściowe i wyjściowe można podać dowolną dogodną metodą
- Możesz wydrukować wynik do STDOUT lub zwrócić go jako wynik funkcji
- Dopuszczalny jest pełny program lub funkcja
- Standardowe luki są zabronione
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach)
źródło
[A-Z]*.
zamiast.*?[a-z]
zaoszczędzić jeden bajtT-SQL, 475 bajtów
Podziały linii służą wyłącznie do odczytu.
Ograniczony do SQL 2017 lub nowszego przy użyciu
TRIM
funkcji. SQL 2016 (wymagany dlaSTRING_SPLIT
) jest prawdopodobnie przez podstawienieRTRIM
kosztem 1 bajtu.Zasadniczo wykonuję odwrotne
LIKE
dopasowanie: rozszerzam wzór każdej płytki na pełny ciąg pasujący do wzoru wieloznacznego, na przykład'[A-Z][0-9][0-9] [0-9][A-Z][A-Z]'
, następnie porównuję z wartością wejściową i zwracam pasujące stany (które są łączone w jedno pole).Może być w stanie zaoszczędzić trochę więcej miejsca przez GZIP'ing długiego łańcucha; Zobaczę, czy to pomoże ...
źródło
Perl 5
(-p)
, 165 bajtówOdpowiedź Porta @ Arnaulda na Javascript, również go oceń.
Wypróbuj online!
źródło
Węgiel drzewny , 177 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Wypróbuj wszystkie przypadki testowe!Link jest do pełnej wersji kodu. (Nieco inny kod potrzebny do przetworzenia wielu spraw.)
Nic dziwnego, że port rozwiązania @ Arnauld jest znacznie krótszy i ma tylko 121 bajtów:
Wypróbuj online! Link jest do pełnej wersji kodu. Drugi moduł o wartości 30 jest domyślny w indeksowaniu do tablicy.
źródło
Python 3 ,
382378 bajtówWypróbuj online!
Zamienia cyfry na
0
i litery na1
, a następnie przeszukuje ciąg w poszukiwaniu płyty, po której następuje ciąg liter. Następnie zwraca po prostu każdą nie nakładającą się parę liter w tym ciągu.Nie najbardziej wydajna bajtowo, ale dobry początek (być może).
Lubię wyzwania oparte na informacjach, których nie można po prostu wygenerować.
źródło
05AB1E , 176 bajtów
Wypróbuj online!
źródło