Recientemente, un ingeniero eléctrico que estudiaba los horarios de los semáforos fue multado con $ 500 por el estado de Oregon por referirse a sí mismo como ingeniero.
Dada una cadena de 2 letras como entrada, que representa un estado de EE. UU., Salida:
I am not an engineer
si el estado es Oregon (OR
)I am an engineer
si el estado es cualquier otro estado de EE. UU.What is an engineer?
dado cualquier otra entrada
La salida no puede contener ningún líder de espacios en blanco, pero puede contener tanto se arrastra un espacio en blanco como desee.
Puede suponer que la entrada siempre será de 2 letras mayúsculas.
Aquí hay una lista de las 50 abreviaturas de los estados de EE. UU .:
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
Tanteo
Este es el código de golf , ¡por lo que gana menos bytes en cada idioma !
code-golf
string
kolmogorov-complexity
Skidsdev
fuente
fuente
Respuestas:
C #,
311 309240237222195184183 bytesPruébalo en línea!
Ahorró 2 bytes al agregar el espacio antes
an
deb
-69 (huehue)-72 bytes gracias a TheLethalCoder-15 bytes gracias a la cadena de estados geniales de TotallyHuman
-38 bytes porque más compresión de cadena
Sin golf:
fuente
..."+b
lugar de cadenas interpoladas, cambieif..else if...else
areturn s==
"OR"? ....: System.Arr ... `es decir, use un ternario. Usar enu.Contains
lugar deArray.Exists
. Creo que si usa espacios en lugar de comas, entonces.Split()
sin parámetros funcionará.u
es una matriz, no una cadena. Sin embargo, puede guardar bytes configurándolosu
como una cadena y usándolos.Contains
.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}?";};
. Creo que he eliminado todos los espacios en blanco relevantes. (No probado)JavaScript (ES6), 182 bytes
Manifestación
Mostrar fragmento de código
fuente
LA
: /C,
215208190 bytes-7 gracias a Cool Guy
Se utilizó la "cadena de género" de @ totallyhuman.
Cómo funciona:
"string"z
se concatena automáticamente"string"
conz
(" an engineer"
). Sí, C hace eso.!strcmp(s,"OR")
compara la cadena con "OR".?"I am not"z
devuelve "No soy ingeniero" si es cierto. De otra manera...:strstr(...,s)
comprueba si la cadena de genio de @ totallyhuman contiene la cadena proporcionada.?"I am"z
devuelve "Soy ingeniero" si es así, y ...:"What is"z"?")
devuelve "¿Qué es un ingeniero?" de otra manera.Pruébalo en línea!
fuente
#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 bytesPruébalo en línea!
fuente
Python 2 ,
192186182178176 bytesProbablemente podría comprimir más la cadena de estado.
Pruébalo en línea!
fuente
u
en ¿if s in u
puede notar usarlo directamente en lugar de declararlo?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
es el más pequeño que puedo lograr'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
Pruébalo en línea!
Pido disculpas por reutilizar la cadena comprimida: no pude encontrar nada mejor por mí mismo ... :(
fuente
05AB1E ,
104103101 bytesPruébalo en línea!
Versión antigua de 104 bytes en caso de que se mejore más fácilmente.
No estoy contento con la compresión ni el caso especial para
?
.fuente
(A=1,C=3 ...)
. La versión de 103 bytes hace lo mismo para algunos estados y fusiona algunos estados que terminan en la misma letra con la que comienza un nuevo estado. Estoy seguro de que esto aún se puede mejorar y agregaré una mejor explicación cuando haya jugado más al golf..•~Zµ∞/'—¶[@øl•Œ2ù
que has usado para algunos de los estados, en lugar de simplemente comprimir todos los estados y hacer el2ô
. Y buen enfoque en general. (Me alegro de haber visto tu respuesta antes de intentar algo yo mismo, porque definitivamente no habría sido tan breve ...)F # , 222 bytes
Pruébalo en línea!
Expandido:
Dado un estado de dos letras v pasado a la función f , construya una tupla (a, b) que represente la cabeza y la cola de la oración "ingeniero".
Siéntase libre de usar la "cadena de estado comprimido" libremente; es un byte entero más corto que el MINCALA ...
fuente
R ,
10996 bytesPruébalo en línea!
13 bytes gracias a J.Doe - a través del uso de expresiones regulares e indexación.
fuente
sub
es mucho mejor, gracias!Japt ,
136135131129128 bytesPuede haber más ahorros disponibles al experimentar con el orden de las abreviaturas estatales. Volveré a eso en un momento.
Pruébalo en línea
Explicación
ò
método.ø
método para ver si la matriz contieneUv
, que es la cadena de entrada convertida a minúsculas."I am "
¥
(es igual a)"OR"
nos permite agregar cualquiera"not "
o la variable de cadena vacíaP
."an engineer"
."What is an engineer?"
.fuente
Python 3 ,
180179178 bytesPruébalo en línea!
fuente
CJam , 143 bytes
Pruébalo en línea! o como un conjunto de pruebas
Explicación
Como Oregon (
OR
) está al comienzo de la cadena, encontrar el signo del índice de la entrada será -1 si no se encuentra, 0 siOR
, 1 si cualquier otro estado. Qué cadena para imprimir se puede decidir por eso.fuente
PHP, 188 bytes
Pruébalo en línea!
fuente
in_array(...)
astrpos(_AKALARAZCACOCTDEFLGAHIIAIDILINKSKYLAMAMDMEMIMNMOMSMTNCNDNENHNJNMNVNYOHOKPARISCSDTNTXUTVAVTWAWIWVWY,$argn)&1
._NMMNINTNRIHIMIWISCNCCTMTUTVTWVNVFLILCAALGAIAMAPAVAWACOLAMOAKARKSMSNHOHOKORAZDEIDKYMEMDNENJNYNDSDTXWY
funcionaC #, 178 bytes
Ejecutar en C # Pad
Golf basado en la solución de Mayube ; nuevo aquí, así que no tengo suficiente representante para comentar.
fuente
Haskell ,
220214210209 bytesPruébalo en línea!
fuente
1<2
es aún más cortoOR
en la cadena larga en la segunda definición de iJavascript 204
fuente
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
Si la entrada coincide con una expresión regular que contiene todas las abreviaturas estatales, escriba "Soy ingeniero" con un "no" insertado en el medio si el estado es Oregon, luego salga.
Si la entrada no coincide con la expresión regular, no debe ser una abreviatura del estado de EE. UU.
fuente
Python 3, 238 bytes
Explicación
No se utilizan técnicas de compresión.
fuente
Java, 173 bytes
fuente
s->
al principio.Stax , 100 bytes
Este lenguaje es posterior al desafío. Pero el autor (yo) no lo vio hasta ahora.
Ejecutar y depurarlo
fuente
JavaScript ES6,
175171 BytesSe unió mucho bien
O 152 bytes en codificación ISO
Generador:
fuente
C (gcc) , 0 + 176 bytes
Pruébalo en línea!
traducción pura
fuente
Powershell, 175 bytes
Script de prueba:
Salida:
fuente
Python 3 ,
236182181 bytesPruébalo en línea!
TIO contiene casos de prueba para todos los estados.
-54 bytes gracias a la compresión de cadena
fuente
MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH ORIA UT WVT WIL WY
es mejor compresiónq / kdb +, 174 bytes
Solución:
Explicación:
Notas:
Utilicé la cadena 'comprimida' de otras respuestas, luchando por encontrar una manera de ponerla en una sola línea para evitar la asignación de la
a
variable (y aún así agregar la?
entrada cuando no es un estado.fuente
Retina , 175 bytes
Pruébalo en línea! Espero haberme apropiado de la mejor lista de estados. Explicación:
Comience a construir el resultado. Además, inserte la lista de estados para su uso en la siguiente etapa.
Si es uno de los 49 estados, elimine el estado y la lista.
Si es Oregon, reemplace el estado con
not
y elimine la lista.Si se trata de algo más, reemplace todo con la otra salida.
Agregue estas palabras en último lugar para evitar la repetición.
fuente
Cristal,
232 207205 BytesPruébalo en línea . (ligeramente modificado debido a un problema de ARGV)
fuente
Factor, 135 bytes
Más legible y nombrado:
[ x ] dip
yx swap
son equivalentes en efecto de chimenea pero el primero es más corta sólo cuando anidado:[ [ [ x ] dip ] dip ] dip
.fuente
Python 2,
213211194 BytesPruébalo en línea
Cosas que estoy trabajando en acortar:
(i=="OR")
or x[0].lower()+x[1]in c
Actualizar:
s=not r
cons=r^1
fuente
Ruby, 164 bytes
Utiliza una codificación de longitud de ejecución, por lo tanto, la cadena mágica tiene 50 bytes de longitud, una por estado. Para construir esto, primero fue necesario poner los códigos de estado en orden alfabético del código de estado, en lugar del nombre del estado. Desafortunadamente, se necesitan 7 bytes para convertir la representación base36 de
j
un código de estado en minúsculas en un código de estado en mayúsculas.Sin golf en el programa de prueba
fuente