Combien d'États ai-je à la frontière?

20

Quand j'étais plus jeune, j'avais une grande carte des États-Unis collée sur mon mur en face de mon lit. Quand je m'ennuyais, je regardais cette carte et pensais à des trucs. Des trucs comme le théorème des quatre couleurs, ou quel état borde la plupart des autres états. Pour m'économiser plus jeune, je vais inventer une machine à remonter le temps et me dire combien d'États bordent l'entrée. Parce que le temps est capricieux, cela doit être aussi court que possible.

La tâche

Étant donné l'un des 50 États américains, soit par son nom complet, soit par son abréviation postale, comme indiqué sur cette page ( miroir archive.org ), renvoyez le nombre d'États qu'il borde. Ce qui suit est un mappage de toutes les entrées pour les noms d'états complets avec le nombre d'états adjacents, trouvés sur ce site Web .

Missouri, Tennessee -> 8
Colorado, Kentucky -> 7
Arkansas, Idaho, Illinois, Iowa, Nebraska, New York, Oklahoma, Pennsylvania, South Dakota, Utah, Wyoming -> 6
Arizona, Georgia, Massachusetts, Michigan, Minnesota, Nevada, New Mexico, Ohio, Virginia, West Virginia -> 5
Alabama, Indiana, Kansas, Maryland, Mississippi, Montana, North Carolina, Oregon, Texas, Wisconsin -> 4
California, Connecticut, Delaware, Louisiana, New Hampshire, New Jersey, North Dakota, Rhode Island, Vermont -> 3
Florida, South Carolina, Washington -> 2
Maine -> 1
Alaska, Hawaii -> 0

Les règles

  • Votre programme peut gérer le nom complet de l'État ou le code postal - il ne peut pas utiliser une combinaison.
  • Vous pouvez spécifier la casse de l'entrée, mais vous ne pouvez pas supprimer d'espaces dans l'entrée.
  • Vous n'avez pas à gérer Washington, DC ou tout ce qui ne fait pas partie des 50 États.
  • Le nombre d'états bordés n'inclut pas l'état d'entrée.
  • C'est le , donc la réponse la plus courte en octets l'emporte.

Bien que je sache que c'est peut-être celui qui a la meilleure compression ou qui trouve le meilleur motif d'expression régulière par nombre, si j'obtiens trop de ces réponses, j'attribuerai une prime à une réponse qui génère une carte des États-Unis et l'utilise pour calculer le nombre d'États limitrophes.

Stephen
la source
11
inb4Mathematica Built-in
DJMcMayhem
@DJMcMayhem uh oh ( ça sonne bien au début, mais voyez la mise à jour ...)
Stephen
@StepHen Oh non, j'ai été évincé! Je travaillais sur une réponse tout à l'heure qui intègre ceci ...;)
notjagan
En relation
geokavel
Pouvons-nous gérer DC / l'inclure dans nos décomptes si nous le voulons?
notjagan

Réponses:

17

Gelée , 73 65 octets

“U[“Ȥ“!÷2“®Ɓ⁵]StƁ}K“ʂÞiƬ¦.ÞrÆu“4œ(°fWg?Ʋd“Ɠ©“Œb‘i³OS%168¤$€Tµ’6L?

Essayez-le en ligne!

Builtins? Qui en a besoin? ( ʂÞiƬsur le terrain avec dégoût).

Prend l'entrée comme nom complet, tel que "Idaho".

Comment ça fonctionne

“U[“Ȥ“!÷2“®Ɓ⁵]StƁ}K“ʂÞiƬ¦.ÞrÆu“4œ(°fWg?Ʋd“Ɠ©“Œb‘i³OS%168¤$€Tµ’6L?
“U[“Ȥ“!÷2“®Ɓ⁵]StƁ}K“ʂÞiƬ¦.ÞrÆu“4œ(°fWg?Ʋd“Ɠ©“Œb‘                   The literal list of code-page index lists  [[85, 91], [154], [33, 28, 50], [8, 143, 133, 93, 83, 116, 143, 125, 75], [167, 20, 105, 152, 5, 46, 20, 114, 13, 117], [52, 30, 40, 128, 102, 87, 103, 63, 153, 100], [147, 6], [19, 98]]
                           €        On each sublist:
                         ¤            Evaluate the hash value:
                 ³                     Input
                   O                   Character values
                    S                  Sum.
                     %                 Modulus.
                      168              168
                i                     Does the sublist contain that nilad?
                            T       Get the sublist which does contain that nilad.
                                 ?  If
                                L     Length.
                                    Then
                             ’        Return the index - 1
                                    Else
                              6      Return 6
fireflame241
la source
Quel processus avez-vous utilisé pour obtenir cette liste?
Scott Milner
2
@ScottMilner J'ai couru OS%168sur chacun des états, ce qui a donné directement la liste. J'ai trouvé la constante 168 en forçant brutalement toutes les possibilités à moins de 250, en vérifiant chacune d'elles pour pouvoir réellement différencier différents nombres de frontières. 168travaillé (parmi quelques autres) et avait l'avantage supplémentaire de n'avoir à coder en dur que les 48valeurs en raison de collisions.
fireflame241
18

Mathematica, 112 111 octets

-5 octets grâce à Mark S. et LegionMammal978 !

-22 octets (et constat d'un problème de sortie) grâce à ngenisis !

Tr[1^Entity["AdministrativeDivision",#~StringDelete~" "]@"BorderingStates"]+Boole@StringMatchQ[#,"Il*"|"Mic*"]&

Bien sûr, il y a un Mathematica intégré pour cela. Inclut DC dans le décompte.

notjagan
la source
3
Cela semble sale, mais AdministrativeDivisionest si incroyablement long que vous enregistrez un octet avec la longueur [x = "AdministrativeDivision" ~ Entity ~ StringDelete [""] @ # ~ ToExpression [x <> "Data"] ~ "BorderingStates"] &
Mark S.20
1
ToExpressionpeut être remplacé par Symbol, si je me souviens bien.
LegionMammal978
1
De plus, vous n'avez pas besoin d'utiliser AdministrativeDivisionData, passez simplement "BorderingStates"comme argument à l'entité; par exempleEntity["AdministrativeDivision","Alaska"]["BorderingStates"]
ngenisis
1
@ngenisis J'ai appliqué un correctif au premier problème; heureusement, en raison de vos suggestions, il n'a pas ajouté autant d'octets. Le dernier problème que vous avez mentionné concernant DC n'est pas un problème car j'ai demandé à OP si c'était valide et la réponse était oui.
notjagan
1
@notjagan Vous pouvez également utiliser Tr[1^...]à la place de Length@...pour enregistrer un autre octet.
ngenisis
13

JavaScript (ES6), 115 113 bytes

Edit: enregistré 2 octets en empruntant 2 optimisations de chaîne supplémentaires à la réponse Step Hen Python . Je les ai ratés lors de ma première tentative.

Prend les codes postaux en entrée.

s=>('7KYCO8MOTN0AKHI1ME2FLSCWA3CACTNDELANHNJRIVT4ALWINCKSMDMSMTXOR5GAZOHMANMIMNVWVA'.match('.\\D*'+s)||'6')[0][0]

Comment?

Un argument non RegExp passé à la .match()méthode est implicitement converti en objet RegExp. Nous testons donc l'expression régulière /.\D*{{input}}/sur notre chaîne codée. Cela correspond à un chiffre (1) , suivi de 0 à N caractères non numériques, suivi de l'entrée.

Par exemple: si l'entrée est "NH"(New Hampshire), la chaîne correspondante sera "3CACTNDELANH". Nous gardons simplement le premier caractère de cette chaîne, ou retournons "6"par défaut s'il n'y a pas de correspondance.

(1): Le .correspond à n'importe quel caractère, mais la chaîne est construite de telle manière que ce qui est trouvé avant un groupe de lettres est toujours un chiffre.

Démo


Version de hachage, 115 octets

Même format d'entrée.

s=>`04436303035050063062750600644408${6e7}503600300540410005207058036442600400000650035`[parseInt(s,33)%589%180%98]

Démo

Arnauld
la source
Vous pourriez économiser beaucoup d'octets en btoaing que String
Downgoat
7

Python 3 , 168 154 154 153 137 octets

lambda s:[i for i,S in enumerate('AKHI ME FLSCWA CACTLANHNJNDERIVT ALWINCKSMDMSMTXOR MAZOHGANMIMNVWVA A KYCO MOTN'.split())if s in S]or 6

Essayez-le en ligne!

-4 octets grâce à isaacg

-10 octets grâce à ETHProductions

-1 octet grâce à notjagen

Enregistré quelques octets supplémentaires par défaut à six, comme d'autres réponses l'ont fait.

TIO comprend des tests. Prend l'entrée comme code postal. Génère une liste des noms d'état sous forme de chaînes pour chaque ensemble, regroupés si possible (par exemple, WVVAsont stockés sous WVA). La fonction lambda obtient l'index dans la liste dont la chaîne contient l'entrée. Il y a peut-être un moyen que je ne connais pas au golf le corps de la fonction. Sorties en tant que liste contenant un entier - ajoutez [0]à la fin du lambda pour sortir en entier.

Stephen
la source
En outre, vous ne l'utilisez lqu'une seule fois, vous pouvez donc aussi bien l'intégrer.
isaacg
@ETHproductions yep, thanks
Stephen
@isaacg merci, ne sais pas pourquoi je n'ai pas vu ça
Stephen
-1 octet en réorganisant la position du Texas.
notjagan
@notjagan merci, manqué ça
Stephen
4

V , 143 octets

çourüee/C8
çdoüke/C7
çrküI„sn]üebüOkünnsüSDüUüwy/C6
çzüg„ot]üttüinnüvaüxiüOh/C5
çbüdiüKüMáû5}üNCüOüTüWi/C4
ç^[CDLNRV]/C3
ç[FSW]/C2
çM/C1
ñlS0

Essayez-le en ligne!

Hexdump:

00000000: e76f 7572 fc65 652f 4338 0ae7 646f fc6b  .our.ee/C8..do.k
00000010: 652f 4337 0ae7 726b fc49 8473 6e5d fc65  e/C7..rk.I.sn].e
00000020: 62fc 4f6b fc6e 6e73 fc53 8144 fc55 fc77  b.Ok.nns.S.D.U.w
00000030: 792f 4336 0ae7 7afc 6784 6f74 5dfc 7474  y/C6..z.g.ot].tt
00000040: fc69 6e6e fc76 61fc 7869 fc4f 682f 4335  .inn.va.xi.Oh/C5
00000050: 0ae7 62fc 6469 fc4b fc4d e1fb 357d fc4e  ..b.di.K.M..5}.N
00000060: 8143 fc4f fc54 fc57 692f 4334 0ae7 5e5b  .C.O.T.Wi/C4..^[
00000070: 4344 4c4e 5256 5d2f 4333 0ae7 5b46 5357  CDLNRV]/C3..[FSW
00000080: 5d2f 4332 0ae7 4d2f 4331 0af1 6c53 30    ]/C2..M/C1..lS0

J'ai écrit ceci avant de réaliser que vous pouviez prendre l'entrée comme code postal. Je ne sais pas si c'est réellement plus court ou non :shrug:. Cette réponse utilise l'expression régulière pour rechercher certains états, puis modifiez l'entrée à un certain nombre si elle correspond. Cependant, à mesure que le nombre d'états contre lesquels nous testons augmente, la plus petite recherche que nous pouvons utiliser diminue. Ainsi, par exemple, nous ne pouvons pas rechercher Ccar cela correspondra à Coloradoet California. (Ainsi que Conneticut et The Carolinas) Cependant, une fois que nous avons testé pour chaque état qui a plus de 3 frontières, nous pouvons simplement rechercher des débuts avec C car il ne peut plus correspondre à un précédent.

Quelques cas de test peuvent être erronés car je n'ai pas le temps de les tester tous. Faites-moi savoir si vous trouvez des sorties incorrectes. :)

DJMcMayhem
la source
3

JavaScript, 153 octets

MO=TN=8;CO=KY=7;AZ=GA=MA=MI=MN=NV=NM=OH=VA=WV=5;AL=IN=KS=MD=MS=MT=NC=OR=TX=WI=4;CT=DE=LA=NH=NJ=ND=RI=VT=3;FL=WA=2;ME=1;AK=HI="0";alert(self[prompt()]||6)

Chaînage variable. Je suis sûr qu'il existe cependant une meilleure façon de procéder.

Grâce à une suggestion de quelqu'un de Discord, la sortie par défaut est 6, le nombre le plus commun d'états bordés. 183 octets à 151 octets.

Un commentateur a souligné que cela échoue pour AK et HI, j'ai donc ajouté deux octets pour résoudre le problème. 151 à 153 octets.

Eli Richardson
la source
1
Je suis presque sûr que cela échoue pour AKet HIparce qu'il est 0||6évalué à 6, ce qui est une sortie incorrecte.
kamoroso94
@ kamoroso94 J'ai mis à jour mon code, si vous pensez qu'il existe une meilleure solution, faites-le moi savoir.
Eli Richardson
3

05AB1E , 78 72 octets

.•n£þuγ{çâ/₁=èó[nK™ΩFîÀî˜Çʒ÷¿ηZ¬³ã®ÿΣÔ¢*5ŠÜ‚!¶Ö¾#}ê(Ûø‰¢þL[Æ₁cgIkö•s¡¬ð¢

Essayez-le en ligne!


.•n£þuγ{çâ/₁=èó[nK™ΩFîÀî˜Çʒ÷¿ηZ¬³ã®ÿΣÔ¢*5ŠÜ‚!¶Ö¾#}ê(Ûø‰¢þL[Æ₁cgIkö•
# Push the string: akhi me flscwa cactdelanhnjndrivt alinksmdmsncmtortxwi azgamamimnnvnmvaohwv idilianarenyokpnsdutwy kyco motn

s¡    # Split on input.
  ¬   # Get head.
   ð¢ # Count number of spaces.

Cela fonctionne UNIQUEMENT parce que l'ordre des abréviations d'état permet qu'aucun état ne se produise dans le chevauchement entre les états:

a[kh]i 
me 
f[ls][cw]a 
c[ac][td][el][an][hn][jn][dr][iv]t 
a[li][nk][sm][dm][sn][cm][to][rt][xw]i 
a[zg][am][am][im][nn][vn][mv][ao][hw]v 
i[di][li][an][ar][en][yo][kp][ns][du][tw]y 
k[yc]o 
m[ot]n

Il a fallu un certain temps pour obtenir la bonne disposition ... Ensuite, en divisant l'entrée et en comptant les espaces dans la première partie, nous obtenons le résultat correct.


Si je vole le "défaut à 6" des autres réponses, j'obtiens 65 octets:

05AB1E , 65 octets

.•3θ0ÔÕ—ú^?D§:‚A†ǝλα“i›p‚ιCöΔƒñPŠ J€ŽãB»ΣUƤÆuhÃgŠ¦,Y²•s¡¬ð¢D9Qi6

Essayez-le en ligne!

Urne de poulpe magique
la source
Took awhile to get the arrangement right-> oh, je pense que vous auriez pu le copier de ma réponse (si je lis bien)
Stephen
@Stephen Eh bien, je n'ai eu l'idée d'aucun autre message, si vous regardez "l'algorithme de hachage sucky", je plaisantais avec des idées aléatoires de hachage pendant environ une heure, puis j'ai pensé aux espaces, j'ai trouvé que je ne pouvais pas battre cette mise en œuvre, peu importe mes efforts.
Urne Magic Octopus du
@Stephen maintenant que j'ai lu le vôtre, j'aurais aimé avoir également pensé à passer par défaut à 6 xD.
Magic Octopus Urn
1
Je n'y ai pas pensé, je l'ai vu sur cette réponse en premier, alors n'hésitez pas à le prendre: P
Stephen
2

Rétine , 106 105 octets

MO|TN
8
CO|KY
7
AK|HI
0
ME
1
FL|WA
2
[CDLR].|N[HJD]|VT
3
.[CSX]|AL|IN|MD|MT|OR|WI
4
[GMV].|.[HMVZ]
5
..
6

Essayez-le en ligne! Quelqu'un a-t-il dit regex? Edit: 1 octet enregistré grâce à @Arnauld.

Neil
la source
2

JavaScript (ES6), 195 octets

s=>/las|ii/[t='test'](s)?0:/ai/[t](s)?1:/Fl|Wa|S.*C/[t](s)?2:/fo|ct|de|ui|mp|er|^N.+ak/i[t](s)?3:/do|ck/[t](s)?7:/ur|ee/[t](s)?8:/iz|gi|ch|ev|xi|hi|es/[t](s)?5:/rk|ah|oi|ow|br|om|lv|ak/[t](s)?6:4

Une série d'expressions régulières, qui fonctionnent sur le nom complet de l'État.

Cas de test:

Rick Hitchcock
la source
2

Gelée ,  61  59 octets

OP%⁽/r%101eЀ“¿=“þ“(7“¡¦ðø,0@L“€ç÷<CMZa“Ø!)5HNV““1^“¥+‘Tȯ7’

Un programme complet prenant le nom complet de l'état et imprimant le résultat (en tant que lien monadique, il renvoie soit une liste contenant un seul numéro, soit le numéro 6).

Essayez-le en ligne! ou voir une suite de tests .

Comment?

“¿=“þ“(7“¡¦ðø,0@L“€ç÷<CMZa“Ø!)5HNV““1^“¥+‘

est une liste de listes d'index de pages de codes:

[[11,61],[31],[40,55],[0,5,24,29,44,48,64,76],[12,23,28,60,67,77,90,97],[18,33,41,53,72,78,86],[],[49,94],[4,43]]

et est représenté “ ... ‘ci-dessous:

OP%⁽/r%101eЀ“ ... ‘Tȯ7’ - Main link: list of characters, stateName  e.g. Ohio
O                        - cast to ordinals                   [79,104,105,111]
 P                       - product                                    95757480
   ⁽/r                   - base 250 literal                              12865
  %                      - modulo by 12865                                3285
      %101               - modulo by 101                                    53
             “ ... ‘     - list of lists of code-page indices
          eЀ            - map: exists in?                 [0,0,0,0,0,1,0,0,0]
                    T    - truthy indices (if none yields an empty list)   [6]
                     ȯ7  - logical or with 7 (replace empty list with 7)   [6]
                       ’ - decrement                                       [5]
                         - implicit print (Jelly's representation of a list of
                         -                 one item is just that item)       5
Jonathan Allan
la source
1

Excel VBA, 177 154 147 octets

Fonction VBE anonyme qui prend une entrée, du type attendu Stringreprésentant le code postal d'un état, à partir de la plage [A1], et retourne un Integerqui représente le nombre d'états qui bordent cet état.

For i=0To 8:r=r+IIf(Instr(1,Split("AKHI ME FLSCWA CACTLANHNJNDERIVT ALWINCKSMDMSMTXOR MAZOHGANMIMNVWVA | KYCO MOTN")(i),[A1]),i,0):Next:?IIf(r,r,6)

Versions précédentes

154 octets:

For Each s in Split("AKHI ME FLSCWA CACTLANHNJNDERIVT ALWINCKSMDMSMTXOR MAZOHGANMIMNVWVA | KYCO MOTN"):r=r+IIf(Instr(1,s,[A1]),i,0):i=i+1:Next:?IIf(r,r,6)

177 octets:

[2:2]=Split("AKHI ME FLSCWA CACTLANHNJNDERIVT ALWINCKSMDMSMTXOR MAZOHGANMIMNVWVA A KYCO MOTN"):[3:3]="=IfError(If(Find($A1,A2),Column(A3)),"""")":[B1]="=Sum(3:3)":?[If(B1,B1,6)]

Formaté pour la lisibilité

[2:2]=Split("AKHI ME FLSCWA CACTLANHNJNDERIVT ALWINCKSMDMSMTXOR MAZOHGANMIMNVWVA | KYCO MOTN")
[3:3]="=IfError(If(Find($A1,A2),Column(A3)-1),"""")"
[B1]="=Sum(3:3)"
?[If(B1,B1,6)]
Taylor Scott
la source
1

Python 2, 363218 octets

lambda a:dict(WA=2,WI=4,WV=5,FL=2,NH=3,NJ=3,NM=5,NC=4,ND=3,RI=3,NV=5,CO=7,CA=3,GA=5,CT=3,OH=5,KS=4,SC=2,KY=7,OR=4,DE=3,HI=0,TX=4,LA=3,TN=8,VA=5,AK=0,AL=4,VT=3,IN=4,AZ=5,ME=1,MD=4,MA=5,MO=8,MN=5,MI=5,MT=4,MS=4).get(a,6)

Commençons par la réponse codée en dur simple et légèrement optimisée. Prend le code postal comme entrée.

-145 octets grâce à bfontaine.

pppery
la source
4
Vous pouvez enregistrer près de 100 octets en utilisant dict(MO=8,TN=8,...)au lieu de {'MO':8,'TN':8,...}. Vous pouvez ensuite enregistrer près de 50 octets en utilisant .get(a,6)et en supprimant les états qui bordent 6 autres états. Je suis capable de descendre à 219 avec ces deux astuces.
bfontaine
@Mitch économise encore plus en utilisant l'espace au lieu de .et en faisant split()(je pense)
Stephen
@Mitch avez-vous même besoin des règles? Existe-t-il une méthode pour diviser une liste en groupes de 2?
Urne de poulpe magique
Je pense que vous pouvez économiser quelques octets supplémentaires en utilisant dict((i[0]+i[1],int(i[-1])) for i in zip(*[iter("WA2WI4WV5FL2...")]*3)). Vous pouvez également laisser intcela de côté s'il est autorisé à avoir une sortie sous forme de chaîne.
Izaak van Dongen du
En fait, si vous utilisez le déballage, vous pourriez le faire dict((a+b,int(c)) for a,b,c in zip(*[iter("WA2WI4WV5...")]*3)). Désolé, je suis un peu indécis: D
Izaak van Dongen
1

PowerShell , 187 octets

param($a)$x=($b=" MO8TN8CO7KY7AZ5GA5MA5MI5MN5NV5NM5OH5VA5WV5AL4IN4KS4MD4MS4MT4NC4OR4TX4WI4CA3CT3DE3LA3NH3NJ3ND3RI3VT3FL2SC2WA2ME1").IndexOf($a);if($x+1){$b[$x+2];exit}6-6*($a-in'AK','HI')

Essayez-le en ligne!

Je suis sûr qu'il existe une meilleure façon de procéder, mais voici l'approche que j'ai trouvée.

Prend l'entrée $aet l'utilise pour obtenir .IndexOfson occurrence dans la longue chaîne de combinaisons état / bordure. Stocke cela dans $xet la chaîne dans $ble processus. Entre ensuite dans une ifinstruction qui vérifie s'il a trouvé une correspondance, et si oui, indexez le chiffre, puis exit. Sinon, nous sommes l'un des 6états ou AKou HI, nous effectuons donc une certaine logique pour voir s'il $as'agit de l'un des 0états et soustrayons si nécessaire. Dans tous les cas, cela reste sur le pipeline et la sortie est implicite.

AdmBorkBork
la source
1

Python 3, 729 733 octets

Prend l'entrée comme abréviation postale. C'est ma première tentative de défi de golf, et c'est à peu près le plus court que je pense pouvoir obtenir avec cette approche infernale. Je sais que c'est énorme - à bien y penser, j'aurais probablement été mieux avec des if-elsedéclarations, mais après tout ce temps et ces efforts, j'ai dû le poster: D.

lambda s:sum((i-32)*96**j for j,i in enumerate(b'`*g$<#?wP\\.=)kuDbk$yvv\\D:Nh:cd/Pj, e*[_yXGz6lR<$jMo0qUU*7(Dua3-ThO}iX6VWRYDv=<K$8mVbYK9ld);TFB/m\'NE3ow4./pUsI5yJrwYrM4@e6\\kHJ%q8NA3>fb!~-rtwsRW=RBni}Y7T^gD\\IoxzJf.%|1.&4*"$%Q+).|8p(vcJ]cLRGUyC2eF:<Q4!_)y\\<`tr2A[z7re6OaR["2PRv\x7f,bRE [XrvtA<R<UlS23on?Byym&uy{XuB\x7fIMfh<y&waHElg-vk:4*on\x7f@?Ai5=2swfZSBF.PjkL{,|=,M<Bw"w,e@f`aKnmh\'xgg1#b4En\x7f+*\'g_ZRoeN*Q]mX\'>RoGc~ZP~e&{Hwo6bd<](hV)=l9#[f<Gj,#Ea!nJnL=9k"M,`bP2PsP6(eJoGEU>GA?,BpS}"RzzdMRtL[cre;\\tld^xT\':pry\'Nu_*R}eYg_U!Ld{p7<f:95lD]OBMX(r"Jg\'|%Cq"`Qy9g0aNrtYP9dnPRRr3\'yT(CE~\\&@5#tMLZ+a:V5NNXVp+Uy61s9$=Vb99(!ga7f7x}#=*]q.\x7f0R+f[*m:i^qe#D 8M&W\x7faGmCNCU9"~1Pj!]2r5 H>rYPqwfg4cFG*3-(z'))>>(5*int(s,36)-1850)&15

Je viens de réaliser que j'avais pris le luxe d'un nom de variable à trois lettres - 4 octets vers le bas, 400 à parcourir!

Izaak van Dongen
la source
Bienvenue chez PPCG! Parfois, les solutions plus simples sont plus courtes, comme le montrent les autres réponses Python: P
Stephen
Ouais, j'adore tous les efforts que vous déployez dans ce domaine, étant donné que votre plaisir coupable est de "rendre votre code si concis qu'il est illisible", vous vous
adapterez