L’ état de l’Oregon a récemment infligé une amende de 500 dollars à un ingénieur électricien qui étudie les horaires des feux de signalisation pour s’être qualifié d’ingénieur.
Avec une chaîne de 2 lettres en entrée représentant un état américain, les résultats suivants sont générés:
I am not an engineer
si l'état est Oregon (OR
)I am an engineer
si l'État est un autre État américainWhat is an engineer?
compte tenu de toute autre entrée
Sortie ne peut contenir aucun leader des espaces, mais peut contenir autant de fuite des espaces que vous le souhaitez.
Vous pouvez supposer que l'entrée sera toujours 2 lettres majuscules.
Voici une liste de toutes les abréviations des 50 états américains:
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
Notation
C'est du code-golf , donc le moins d'octets dans chaque langue gagne!
code-golf
string
kolmogorov-complexity
Skidsdev
la source
la source
Réponses:
C #,
311 309240237222195184 184183 octetsEssayez-le en ligne!
Enregistré 2 octets en ajoutant l'espace avant
an
deb
-69 (huehue)-72 octets grâce à TheLethalCoder-15 octets grâce à la chaîne générique d'états de génie de TotallyHuman
-38 octets moins de compression de chaîne
Ungolfed:
la source
..."+b
plutôt que des chaînes interpolées, remplacez-leif..else if...else
parreturn s==
"OU"? ....: System.Arr ... `c’est-à-dire utilisez un ternaire. Utilisezu.Contains
au lieu deArray.Exists
. Je pense que si vous utilisez des espaces à la place des virgules,.Split()
aucun paramètre ne fonctionnera.u
est un tableau et non une chaîne. Cependant, vous pouvez enregistrer des octets en définissantu
une chaîne et en l'utilisant.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}?";};
. Pensez que j'ai supprimé tous les espaces pertinents. (Non testé)JavaScript (ES6), 182 octets
Démo
Afficher l'extrait de code
la source
LA
: /C,
215208190 octets-7 grâce à Cool Guy
Utilisé par @totunhumhuman "genre string".
Comment ça marche:
"string"z
concatène automatiquement"string"
avecz
(" an engineer"
). Oui, C fait ça.!strcmp(s,"OR")
compare la chaîne à "OU".?"I am not"z
renvoie "je ne suis pas un ingénieur" si vrai. Autrement...:strstr(...,s)
vérifie si la chaîne de génie de @ totallyhuman contient la chaîne fournie.?"I am"z
retourne "je suis un ingénieur" si oui, et ...:"What is"z"?")
retourne "Qu'est-ce qu'un ingénieur?" autrement.Essayez-le en ligne!
la source
#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 octetsEssayez-le en ligne!
la source
Python 2 ,
192186182178176 octetsPourrait probablement compresser davantage la chaîne d'état.
Essayez-le en ligne!
la source
u
enif s in u
pouvez-vous noter l'utiliser directement au lieu de le déclarer?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
est le plus petit que je puisse faire'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 octets
Essayez-le en ligne!
Je m'excuse d'avoir réutilisé la chaîne compressée: je n'ai rien trouvé de mieux par moi-même ... :(
la source
05AB1E ,
104103101 octetsEssayez-le en ligne!
Ancienne version de 104 octets au cas où cela serait plus facilement amélioré.
Pas content avec la compression ni le cas particulier pour
?
.la source
(A=1,C=3 ...)
. La version de 103 octets fait la même chose pour certains États et fusionne certains États qui se terminent par la même lettre qu'un début. Je suis sûr que cela peut encore être amélioré et je vais ajouter une meilleure explication quand je l'ai joué au golf davantage..•~Zµ∞/'—¶[@øl•Œ2ù
vous avez utilisé pour certains états, au lieu de simplement compresser tous les états et de le faire2ô
. Et belle approche globale. (Heureux d' avoir vu votre réponse avant d' essayer quelque chose de moi - même, car il aurait certainement pas été aussi court ..)F # , 222 octets
Essayez-le en ligne!
Étendu:
Dans un état à deux lettres v passé à la fonction f , construisez un tuple (a, b) représentant la tête et la queue de la phrase "ingénieur".
N'hésitez pas à utiliser la "chaîne d'état compressée" librement; c'est un octet entier plus court que celui de MINCALA ...
la source
R ,
10996 octetsEssayez-le en ligne!
13 octets grâce à J.Doe - grâce à l'utilisation de regex et à l'indexation.
la source
sub
est beaucoup mieux, merci!Japt ,
136135131129128 octetsIl est possible que des économies supplémentaires soient disponibles en testant l'ordre des abréviations d'état. J'y reviendrai dans un moment.
Essayez-le en ligne
Explication
ò
méthode.ø
méthode pour voir si le tableau contientUv
, qui est la chaîne d'entrée convertie en minuscule."I am "
¥
(est égale à)"OR"
nous permet d'ajouter"not "
ou la variable de chaîne videP
."an engineer"
."What is an engineer?"
.la source
Python 3 ,
180179178 octetsEssayez-le en ligne!
la source
CJam , 143 octets
Essayez-le en ligne! ou comme une suite de tests
Explication
Puisque Oregon (
OR
) est au début de la chaîne, trouver le signum de l'index de l'entrée sera -1 si non trouvé, 0 siOR
, 1 si aucun autre état. Quelle chaîne à imprimer peut être décidé par cela.la source
PHP, 188 octets
Essayez-le en ligne!
la source
in_array(...)
àstrpos(_AKALARAZCACOCTDEFLGAHIIAIDILINKSKYLAMAMDMEMIMNMOMSMTNCNDNENHNJNMNVNYOHOKPARISCSDTNTXUTVAVTWAWIWVWY,$argn)&1
._NMMNINTNRIHIMIWISCNCCTMTUTVTWVNVFLILCAALGAIAMAPAVAWACOLAMOAKARKSMSNHOHOKORAZDEIDKYMEMDNENJNYNDSDTXWY
œuvresC #, 178 octets
Courir en C # Pad
Golf basé sur la solution de Mayube ; nouveau ici, donc je n'ai pas assez de rep pour commenter.
la source
Haskell ,
220214210209 octetsEssayez-le en ligne!
la source
1<2
est encore plus courtOR
dans la longue chaîne de la deuxième définition de iJavascript 204
la source
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 octets
Si l'entrée correspond à une expression rationnelle contenant toutes les abréviations de l'état, écrivez "Je suis un ingénieur" avec un "pas" inséré au milieu si l'état est Oregon, puis quittez.
Si l'entrée ne correspond pas à l'expression régulière, il ne doit pas s'agir d'une abréviation d'état US.
la source
Python 3, 238 octets
Explication
Aucune technique de compression utilisée.
la source
Java, 173 octets
la source
s->
au début.Stax , 100 octets
Cette langue postdate le défi. Mais l'auteur (moi) ne l'a pas vu jusqu'à présent.
Exécuter et déboguer
la source
JavaScript ES6,
175171 octetsRejoint beaucoup de bons
Ou 152 octets sur le codage ISO
Générateur:
la source
C (gcc) , 0 + 176 octets
Essayez-le en ligne!
traduction pure
la source
Powerhell, 175 octets
Script de test:
Sortie:
la source
Python 3 ,
236182181 octetsEssayez-le en ligne!
TIO contient des cas de test pour tous les états.
-54 octets grâce à la compression de chaîne
la source
MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH ORIA UT WVT WIL WY
est meilleure compressionq / kdb +, 174 octets
Solution:
Explication:
Remarques:
Utilisé la chaîne 'compressée' à partir d'autres réponses, s'efforçant de trouver un moyen de la mettre sur une seule ligne afin d'éviter l'affectation de la
a
variable (tout en ajoutant?
quand l'entrée n'est pas un état.la source
Retina , 175 octets
Essayez-le en ligne! J'espère que je me suis approprié la liste des meilleurs états. Explication:
Commencez à construire le résultat. En outre, insérez la liste d'état à utiliser pour l'étape suivante.
Si c'est l'un des 49 états, supprimez l'état et la liste.
S'il s'agit de l'Oregon, remplacez l'état par
not
et supprimez la liste.S'il s'agit de quelque chose d'autre, remplacez tout par l'autre sortie.
Ajoutez ces mots en dernier pour éviter les répétitions.
la source
Crystal,
232 207205 octetsEssayez-le en ligne . (légèrement modifié en raison d'un numéro d'ARGV)
la source
Facteur, 135 octets
Plus lisible et nommé:
[ x ] dip
etx swap
sont équivalentes en vigueur de la pile , mais la première est plus courte que si imbriqué:[ [ [ x ] dip ] dip ] dip
.la source
Python 2,
213211194 octetsEssayez-le en ligne
Stuff je travaille sur le raccourcissement:
(i=="OR")
or x[0].lower()+x[1]in c
Mise à jour:
s=not r
pars=r^1
la source
Ruby, 164 octets
Utilise un codage de longueur d'exécution, donc la chaîne magique a 50 octets de long, un par état. Afin de construire cela, il était d'abord nécessaire de mettre les codes d'état dans l'ordre alphabétique du code d'état, plutôt que le nom de l'état. Malheureusement, il faut 7 octets pour convertir la représentation base36 d'
j
un code de code en minuscule en un code de code en majuscule.Programme non testé
la source