Isso é essencialmente o inverso de Gerar uma placa dos EUA
Desafio: Dada uma sequência que corresponde a um dos formatos de matrícula abaixo, produza todos os estados possíveis que correspondem a essa formatação. Na tabela abaixo 0
representa um único dígito 0
através 9
inclusive, e A
representa uma única letra A
através Z
inclusiva. Para os propósitos deste desafio, estamos ignorando estados com regras de formato complexas (como Delaware, que tem número variável de dígitos) e ignorando a remoção de letras semelhantes (por exemplo, I
e 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
Exemplos:
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)
Regras e esclarecimentos
- A sequência de entrada é garantida como não vazia e com um dos formatos acima
- Comportamento se um formato diferente do descrito acima for indefinido
- Entrada e saída podem ser fornecidas por qualquer método conveniente
- Você pode imprimir o resultado em STDOUT ou retorná-lo como resultado da função
- Um programa completo ou uma função são aceitáveis
- As brechas padrão são proibidas
- Este é o código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence
fonte
[A-Z]*.
em vez de.*?[a-z]
salvar um byteT-SQL, 475 bytes
Quebras de linha são apenas para legibilidade.
Limitado ao SQL 2017 ou superior pelo uso da
TRIM
função O SQL 2016 (obrigatórioSTRING_SPLIT
) é possivelmente substituindoRTRIM
ao custo de 1 byte.Eu estou fazendo basicamente um reverso
LIKE
jogo: I expandir o padrão de cada placa a um completo seqüência de correspondência de padrão curinga como'[A-Z][0-9][0-9] [0-9][A-Z][A-Z]'
, em seguida, comparar com o valor de entrada e retornar os estados correspondentes (que são combinados em um único campo).Pode economizar um pouco mais de espaço usando GZIP na string longa; Vou ver se isso ajuda ...
fonte
Perl 5
(-p)
, 165 bytesPorto da resposta Javascript de @ Arnauld, também fez um voto positivo.
Experimente online!
fonte
Carvão , 177 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Experimente todos os casos de teste! Link é a versão detalhada do código. (Código ligeiramente diferente necessário para processar vários casos.)
Sem surpresa, uma porta da solução da @ Arnauld é muito menor, com apenas 121 bytes:
Experimente online! Link é a versão detalhada do código. O segundo módulo por 30 está implícito na indexação na matriz.
fonte
Python 3 ,
382378 bytesExperimente online!
Substitui os números por
0
e as letras por e1
, em seguida, procura a sequência pela placa seguida por uma sequência de letras. Em seguida, ele simplesmente retorna todos os pares de letras não sobrepostos nessa sequência.Não é o mais eficiente em bytes, mas um bom começo (talvez).
Gosto de desafios baseados em informações que não podem ser apenas geradas.
fonte
05AB1E , 176 bytes
Experimente online!
fonte