Recentemente, um engenheiro elétrico que estudava o horário dos semáforos foi multado em US $ 500 pelo estado de Oregon por se referir a si mesmo como engenheiro.
Dada uma entrada com 2 letras, representando um estado dos EUA, produza:
I am not an engineer
se o estado for Oregon (OR
)I am an engineer
se o estado for qualquer outro estado dos EUAWhat is an engineer?
dada qualquer outra entrada
A saída pode não conter nenhum espaço em branco à esquerda , mas pode conter o espaço em branco à direita que você desejar.
Você pode assumir que a entrada sempre terá duas letras maiúsculas.
Aqui está uma lista de todas as 50 abreviações de estados dos EUA:
AL, AK, AZ, AR, CA, CO, CT, DE, FL, GA, HI, ID, IL, IN, IA, KS, KY, LA, ME,
MD, MA, MI, MN, MS, MO, MT, NE, NV, NH, NJ, NM, NY, NC, ND, OH, OK, OR, PA,
RI, SC, SD, TN, TX, UT, VT, VA, WA, WV, WI, WY
Pontuação
Isso é código-golfe , e o menor número de bytes em cada idioma vence!
code-golf
string
kolmogorov-complexity
Skidsdev
fonte
fonte
Respostas:
C #,
311 309240237222195184183 bytesExperimente online!
Economizou 2 bytes adicionando o espaço antes
an
parab
-69 (huehue)-72 bytes graças a TheLethalCoder-15 bytes graças à sequência de estados geniais da TotallyHuman
-38 bytes cos mais compressão de strings
Ungolfed:
fonte
..."+b
vez de seqüências de caracteres interpoladas, altereif..else if...else
parareturn s==
"OR"? ....: System.Arr ... `ou seja, use um ternário. Use emu.Contains
vez deArray.Exists
. Eu acho que se você usar espaços em vez de vírgulas,.Split()
sem parâmetros irá funcionar.u
é uma matriz, não uma string. No entanto, você pode salvar bytes definindou
como uma sequência e usando.Contains
nela.s=>{var b=" an engineer";return s=="OR"?"I am not"+b:"AL AK AZ AR CA CO CT DE FL GA HI ID IL IN IA KS KY LA ME MD MA MI MN MS MO MT NE NV NH NJ NM NY NC ND OH OK PA RI SC SD TN TX UT VT VA WA WV WI WY".Contains(s)?"I am"+b:$"What is{b}?";};
. Acho que removi todo o espaço em branco relevante. (Não testado)JavaScript (ES6), 182 bytes
Demo
Mostrar snippet de código
fonte
LA
: /C,
215208190 bytes-7 graças a Cool Guy
Usada "genus string" de totallyhuman.
Como funciona:
"string"z
concatena automaticamente"string"
comz
(" an engineer"
). Sim, C faz isso.!strcmp(s,"OR")
compara a string com "OR".?"I am not"z
retorna "Eu não sou um engenheiro" se verdadeiro. De outra forma...:strstr(...,s)
verifica se a sequência genial de @ totallyhuman contém a sequência fornecida.?"I am"z
retorna "eu sou engenheiro", se sim, e ...:"What is"z"?")
retorna "O que é um engenheiro?" de outra forma.Experimente online!
fonte
#define z " an engineer" f(char*s){!strcmp(s,"OR")?puts("I am not"z):strstr("MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH RIA UT WVT WIL WY",s)?puts("I am"z):puts("What is"z);}
Python 2 ,
228168 bytesExperimente online!
fonte
Python 2 ,
192186182178176 bytesProvavelmente poderia comprimir mais a cadeia de estado.
Experimente online!
fonte
u
emif s in u
que você pode usá-lo diretamente em vez de declará-lo?VALA WAZ NCA COH CTX SDE FL GA HID WIL MIN IAKSC KY ME MD MA MNMS MOK MTNE NH NJ NY ND PARI UT NVT WV WY
é o menor eu posso fazer isso'MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH ORIA UT WVT WIL WY'
Java (JDK 10) , 184 bytes
Experimente online!
Peço desculpas por reutilizar a sequência compactada: não consegui encontrar nada melhor sozinha ... :(
fonte
05AB1E ,
104103101 bytesExperimente online!
Versão antiga de 104 bytes, caso seja melhorada com mais facilidade.
Não está satisfeito com a compressão nem com o caso especial
?
.fonte
(A=1,C=3 ...)
. A versão de 103 bytes faz o mesmo em alguns estados e mescla alguns estados que terminam na mesma letra em que um novo estado começa. Tenho certeza de que isso ainda pode ser melhorado e adicionarei uma explicação melhor quando jogar mais..•~Zµ∞/'—¶[@øl•Œ2ù
que você usou para alguns estados, em vez de apenas comprimir todos os estados e fazer o2ô
. E uma abordagem agradável em geral. (Ainda bem que eu vi sua resposta antes de tentar algo me, porque definitivamente não teria sido tão curto ..)F # , 222 bytes
Experimente online!
Expandido:
Dado um estado de duas letras v passado para a função f , construa uma tupla (a, b) representando a cabeça e a cauda da sentença "engenheiro".
Sinta-se livre para usar a "cadeia de estado compactada" livremente; é um byte inteiro mais curto que o do MINCALA ...
fonte
R ,
10996 bytesExperimente online!
13 bytes graças ao J.Doe - através do uso de regex e indexação.
fonte
sub
é muito melhor, obrigado!Japt ,
136135131129 129128 bytesMais economias podem estar disponíveis, experimentando a ordem das abreviações do estado - voltarei a isso daqui a pouco.
Experimente online
Explicação
ò
métodoø
método para verificar se a matriz contémUv
, que é a sequência de entrada convertida em minúscula."I am "
¥
(é igual a)"OR"
permite acrescentar uma"not "
variável ou a sequência vaziaP
."an engineer"
."What is an engineer?"
.fonte
Python 3 ,
180179178 bytesExperimente online!
fonte
CJam , 143 bytes
Experimente online! ou como uma suíte de teste
Explicação
Como Oregon (
OR
) está no início da cadeia, a localização do índice da entrada será -1 se não for encontrada, 0 seOR
, 1 se houver outro estado. Qual string imprimir pode ser decidida por isso.fonte
PHP, 188 bytes
Experimente online!
fonte
in_array(...)
parastrpos(_AKALARAZCACOCTDEFLGAHIIAIDILINKSKYLAMAMDMEMIMNMOMSMTNCNDNENHNJNMNVNYOHOKPARISCSDTNTXUTVAVTWAWIWVWY,$argn)&1
._NMMNINTNRIHIMIWISCNCCTMTUTVTWVNVFLILCAALGAIAMAPAVAWACOLAMOAKARKSMSNHOHOKORAZDEIDKYMEMDNENJNYNDSDTXWY
funcionaC #, 178 bytes
Executar no C # Pad
Golfe baseado na solução da Mayube ; novo aqui, então não tenho representante suficiente para comentar.
fonte
Haskell ,
220214210209 bytesExperimente online!
fonte
1<2
é ainda menorOR
na longa seqüência no segundo definição do iJavascript 204
fonte
s=>(!(h=/(A[LKZR]|C[AOT]|DE|FL|[GPLV]A|[HR]I|I[DLNA]|K[SY]|M[EDAINSOT]|N[EVHJMYCD]|O[HKR]|S[CD]|T[NX]|[VU]T|W[AVIY])/.test(s))?"What is":"I am"+(s=='OR'?" not":""))+" an engineer"+['?'[+h]]
AWK, 189 bytes
Se a entrada corresponder a um regex contendo todas as abreviações de estado, imprima "Eu sou um engenheiro" com um 'não' inserido no meio, se o estado for Oregon, e saia.
Se a entrada não corresponder ao regex, não deverá ser uma abreviação de estado dos EUA.
fonte
Python 3, 238 bytes
Explicação
Nenhuma técnica de compressão usada.
fonte
Java, 173 bytes
fonte
s->
ao início.Stax , 100 bytes
Esse idioma adia o desafio. Mas o autor (eu) não o viu até agora.
Execute e depure
fonte
JavaScript ES6,
175171 bytesJuntou muitos bons
Ou 152 bytes na codificação ISO
Gerador:
fonte
C (gcc) , 0 + 176 bytes
Experimente online!
pura tradução
fonte
Powershell, 175 bytes
Script de teste:
Saída:
fonte
Python 3 ,
236182181 bytesExperimente online!
O TIO contém casos de teste para todos os estados.
-54 bytes graças à compressão de strings
fonte
MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH ORIA UT WVT WIL WY
é melhor compressãoq / kdb +, 174 bytes
Solução:
Explicação:
Notas:
Usou a string 'compactada' de outras respostas, lutando para encontrar uma maneira de trazê-la para uma única linha, a fim de evitar a atribuição da
a
variável (ainda assim, adicione a opção?
quando a entrada não for um estado.fonte
Retina , 175 bytes
Experimente online! Espero ter me apropriado da melhor lista de estados. Explicação:
Comece a construir o resultado. Além disso, insira a lista de estados para uso no próximo estágio.
Se for um dos 49 estados, exclua o estado e a lista.
Se for Oregon, substitua o estado por
not
e exclua a lista.Se houver mais alguma coisa, substitua tudo pela outra saída.
Adicione estas palavras por último para evitar repetições.
fonte
Crystal,
232 207205 BytesExperimente online . (ligeiramente modificado devido a um problema de ARGV)
fonte
Fator, 135 bytes
Mais legível e nomeado:
[ x ] dip
ex swap
são equivalentes em efeito chaminé, mas o primeiro é mais curto apenas quando aninhados:[ [ [ x ] dip ] dip ] dip
.fonte
Python 2,
213211194 bytesExperimente Online
Coisas que estou trabalhando para reduzir:
(i=="OR")
or x[0].lower()+x[1]in c
Atualizar:
s=not r
pors=r^1
fonte
Ruby, 164 bytes
Usa uma codificação de duração da execução, portanto, a string mágica tem 50 bytes de comprimento, um por estado. Para criar isso, primeiro foi necessário colocar os códigos de estado em ordem alfabética do código de estado, em vez do nome do estado. Infelizmente, são necessários 7 bytes para converter a representação base36 de
j
um código de status em minúsculas em um código de status em maiúsculas.Ungolfed in program program
fonte