Ile stanów mam granice?

20

Kiedy byłam młodsza, miałam naklejoną na ścianie dużą mapę Stanów Zjednoczonych naprzeciwko mojego łóżka. Kiedy się nudziłem, gapiłem się na tę mapę i myślałem o różnych rzeczach. Rzeczy takie jak twierdzenie o czterech kolorach lub który stan graniczy z większością innych stanów. Aby zaoszczędzić młodszemu trochę siły mózgowej w liczeniu, wymyślisz wehikuł czasu i powiesz mi, ile stanów ogranicza dane wejściowe. Ponieważ czas jest trudny, musi to być jak najkrótsze.

Zadanie

Biorąc pod uwagę jeden z 50 stanów USA, czy to pełną nazwą, czy też skrótem pocztowym, jak można znaleźć na tej stronie ( mirror.org ), zwróć liczbę stanów, które graniczy. Poniżej znajduje się mapowanie wszystkich danych wejściowych dla pełnych nazw stanów na liczbę stanów sąsiadujących, znalezionych na tej stronie .

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

Zasady

  • Twój program może obsłużyć pełną nazwę stanu lub kod pocztowy - nie może używać kombinacji.
  • Możesz określić wielkość liter na wejściu, ale nie możesz usunąć białych znaków na wejściu.
  • Nie musisz zajmować się Waszyngtonem ani niczym innym, niż jednym z 50 stanów.
  • Liczba stanów granicznych nie obejmuje stanu wejściowego.
  • To jest , więc wygrywa najkrótsza odpowiedź w bajtach.

Chociaż wiem, że może to być ktoś, kto ma najlepszą kompresję lub znajdzie najlepszy wzorzec wyrażenia regularnego na liczbę, jeśli otrzymam zbyt wiele z tych odpowiedzi, przyznam nagrodę za odpowiedź, która generuje mapę Stanów Zjednoczonych i wykorzystuje ją do obliczyć liczbę stanów granicznych.

Stephen
źródło
11
inb4Wbudowana matematyka
DJMcMayhem
@DJMcMayhem uh oh (na początku brzmi dobrze, ale zobacz aktualizację ...)
Stephen
@StepHen O nie, zostałem usunięty! Właśnie pracowałem nad odpowiedzią, która zawiera to ...;)
notjagan
Powiązane
geokavel
Czy możemy sobie poradzić z DC / uwzględnić to w naszych obliczeniach, jeśli tak, proszę?
notjagan,

Odpowiedzi:

17

Galaretka , 73 65 bajtów

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

Wypróbuj online!

Wbudowane? Kto tego potrzebuje? ( ʂÞiƬna ziemi z obrzydzeniem).

Pobiera dane wejściowe jako pełną nazwę, na przykład "Idaho".

Jak to działa

“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
źródło
Jakiego procesu użyłeś, aby uzyskać tę listę?
Scott Milner,
2
@ ScottMilner Uruchomiłem OS%168każdy ze stanów, który bezpośrednio dał listę. Znalazłem stałą 168, brutalnie wymuszając wszystkie możliwości poniżej 250, sprawdzając każdą z nich pod kątem możliwości rozróżnienia różnych liczb granic. 168działał (między innymi) i miał tę dodatkową zaletę, że musiał tylko wpisywać 48wartości z powodu kolizji.
fireflame241,
18

Mathematica, 112 111 bajtów

-5 bajtów dzięki Mark S. i LegionMammal978 !

-22 bajty (i zauważenie problemu z wyjściem) dzięki ngenisis !

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

Oczywiście jest do tego wbudowana Mathematica. Uwzględnia DC w liczbie.

notjagan
źródło
3
Czuje się brudny, ale AdministrativeDivisionjest tak niesamowicie długi, że można zapisać bajt o długości [x = "AdministrativeDivision" ~ Entity ~ StringDelete [""] @ # ~ ToExpression [x <> "Data"] ~ "BorderingStates"] &
Mark S.,
1
ToExpressionmożna zastąpić Symbol, jeśli dobrze pamiętam.
LegionMammal978,
1
Nie musisz też używać AdministrativeDivisionData, wystarczy przekazać "BorderingStates"jako argument do encji; np.Entity["AdministrativeDivision","Alaska"]["BorderingStates"]
ngenisis,
1
@ngenisis Poprawiłem pierwszy problem; na szczęście, dzięki twoim sugestiom, nie dodało tak wielu bajtów. Ten ostatni problem, o którym wspomniałeś w sprawie DC, nie jest problemem, ponieważ zapytałem OP, czy to jest poprawne, a odpowiedź brzmi „tak”.
notjagan
1
@notjagan Można również użyć Tr[1^...]zamiast Length@...innego bajtu.
ngenisis
13

JavaScript (ES6), 115 113 bajtów

Edycja: zapisano 2 bajty, pożyczając 2 kolejne optymalizacje ciągów z odpowiedzi Step Hen Python . Tęskniłem za nimi przy pierwszej próbie.

Przyjmuje kody pocztowe jako dane wejściowe.

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

W jaki sposób?

Argument inny niż RegExp przekazany do .match()metody jest domyślnie konwertowany na obiekt RegExp. Testujemy więc wyrażenie regularne /.\D*{{input}}/na naszym zakodowanym ciągu. Odpowiada to cyfrze (1) , po której następuje od 0 do N znaków innych niż cyfry, po których następuje wprowadzanie.

Na przykład: jeśli dane wejściowe to "NH"(New Hampshire), dopasowanym ciągiem będzie "3CACTNDELANH". Po prostu zachowujemy pierwszy znak tego ciągu lub zwracamy "6"domyślnie, jeśli nie było dopasowania.

(1): .Właściwie pasuje do dowolnego znaku, ale ciąg znaków jest zbudowany w taki sposób, że to, co znajduje się przed grupą liter, jest zawsze cyfrą.

Próbny


Wersja mieszająca, 115 bajtów

Ten sam format wejściowy.

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

Próbny

Arnauld
źródło
Możesz zaoszczędzić wiele bajtów, przechodząc przez String
Downgoat
7

Python 3 , 168 154 153 137 bajtów

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

Wypróbuj online!

-4 bajty dzięki isaacg

-10 bajtów dzięki ETHProductions

-1 bajt dzięki notjagen

Zapisano więcej bajtów domyślnie na sześć, podobnie jak inne odpowiedzi.

TIO obejmuje testy. Pobiera dane wejściowe jako kod pocztowy. Generuje listę nazw stanów w postaci ciągów znaków dla każdego zestawu, ułożonych razem tam, gdzie to możliwe (na przykład WVVAjest przechowywana jako WVA). Funkcja lambda pobiera indeks z listy, której ciąg zawiera dane wejściowe. Może istnieć sposób, że nie wiem o golfie ciała funkcji. Wyprowadza jako listę zawierającą liczbę całkowitą - dodaje [0]na końcu lambda, aby wyświetlać jako liczbę całkowitą.

Stephen
źródło
Ponadto używasz tylko lraz, więc równie dobrze możesz go wstawić.
isaacg,
@ETHproductions tak, dzięki
Stephen
@isaacg dzięki, nie wiem, dlaczego tego nie widziałem
Stephen
-1 bajt poprzez zmianę pozycji Texas.
notjagan,
@notjagan dzięki, przegapiłem to
Stephen
4

V , 143 bajty

ç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

Wypróbuj online!

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

Napisałem to, zanim zdałem sobie sprawę, że możesz wziąć dane wejściowe jako kody pocztowe. Nie jestem pewien, czy to faktycznie jest krótsze, czy nie :shrug:. Ta odpowiedź używa wyrażenia regularnego do wyszukiwania określonych stanów, a następnie zmienia dane wejściowe na określoną liczbę, jeśli jest zgodna. Jednak wraz ze wzrostem liczby stanów, w których testowaliśmy, maleje najmniejsze wyszukiwanie, jakie możemy zastosować. Na przykład nie możemy wyszukiwać, Cponieważ będzie to pasować Coloradoi California. (Podobnie jak Conneticut i The Carolinas) Jednak po przetestowaniu dla każdego stanu, który ma więcej niż 3 granice, możemy po prostu zacząć od C, ponieważ nie może on już pasować do poprzedniego.

Kilka przypadków testowych może być błędnych, ponieważ nie mam czasu na przetestowanie ich wszystkich. Daj mi znać, jeśli znajdziesz jakieś nieprawidłowe dane wyjściowe. :)

DJMcMayhem
źródło
3

JavaScript, 153 bajty

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)

Zmienne łańcuchy. Jestem pewien, że jest na to lepszy sposób.

Dzięki sugestii kogoś z Discord wyjście przyjmuje wartość domyślną 6, najczęstszą liczbę stanów granicznych. 183 bajtów na 151 bajtów.

Komentator zwrócił uwagę, że to nie działa w przypadku AK i HI, więc dodałem dwa bajty, aby rozwiązać problem. 151 do 153 bajtów.

Eli Richardson
źródło
1
Jestem prawie pewien, że to się nie powiedzie AKi HIponieważ 0||6ocenia na 6, co jest niepoprawnym wyjściem.
kamoroso94,
@ kamoroso94 Zaktualizowałem swój kod, jeśli uważasz, że istnieje lepsza poprawka, daj mi znać.
Eli Richardson,
3

05AB1E , 78 72 bajtów

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

Wypróbuj online!


.•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.

Działa to TYLKO, ponieważ kolejność skrótów stanów pozwala na pojawienie się stanu NO w nakładaniu się stanów:

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

Chwilę zajęło prawidłowe ustawienie ... Następnie, dzieląc dane wejściowe i licząc spacje w pierwszej części, otrzymujemy poprawny wynik.


Jeśli ukradnę „domyślnie 6” z innych odpowiedzi, otrzymam 65 bajtów:

05AB1E , 65 bajtów

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

Wypróbuj online!

Urna Magicznej Ośmiornicy
źródło
Took awhile to get the arrangement right-> och, myślę, że mogłeś skopiować to z mojej odpowiedzi (jeśli czytam to poprawnie)
Stephen
@Stephen Cóż, nie wpadłem na pomysł z innych postów, jeśli spojrzysz na „algorytm hashowania„ sucky ”, bawiłem się przypadkowymi pomysłami na hashowanie przez godzinę, a potem pomyślałem o przestrzeniach, ale nie mogłem pokonaj tę implementację bez względu na to, jak bardzo się starałem.
Magic Octopus Urn
@Stephen teraz, kiedy czytam twój, chciałbym też pomyśleć o domyślnym ustawieniu 6 xD.
Magic Octopus Urn
1
Nie pomyślałem o tym, najpierw zobaczyłem tę odpowiedź , więc nie krępuj się: P
Stephen
2

Siatkówka , 106 105 bajtów

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

Wypróbuj online! Czy ktoś powiedział regex? Edycja: Zapisano 1 bajt dzięki @Arnauld.

Neil
źródło
2

JavaScript (ES6), 195 bajtów

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

Seria wyrażeń regularnych, które działają na pełną nazwę państwa.

Przypadki testowe:

Rick Hitchcock
źródło
2

Galaretka ,  61  59 bajtów

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

Pełny program przyjmujący pełną nazwę stanu i wypisujący wynik (jako łącze monadyczne zwraca albo listę zawierającą pojedynczy numer, albo liczbę 6).

Wypróbuj online! lub zobacz zestaw testowy .

W jaki sposób?

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

to lista list indeksów stron kodowych:

[[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]]

i pokazano “ ... ‘poniżej:

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
źródło
1

Excel VBA, 177 154 147 bajtów

Anonimowa funkcja VBE, która pobiera dane wejściowe oczekiwanego typu Stringreprezentującego kod pocztowy stanu z zakresu [A1]i zwraca wartość Integerreprezentującą liczbę stanów graniczących z tym stanem.

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)

Poprzednie wersje

154 bajtów:

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 bajtów:

[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)]

Sformatowany dla czytelności

[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
źródło
1

Python 2, 363 218 bajtów

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)

Zacznijmy od prostej, lekko zoptymalizowanej, zakodowanej odpowiedzi. Pobiera kod pocztowy jako dane wejściowe.

-145 bajtów dzięki bfontaine.

pppery
źródło
4
Możesz zapisać prawie 100 bajtów, używając dict(MO=8,TN=8,...)zamiast {'MO':8,'TN':8,...}. Następnie można zapisać prawie 50 bajtów, używając .get(a,6)i usuwając stany graniczące z 6 innymi stanami. Jestem w stanie przejść do 219 dzięki tym dwóm sztuczkom.
bfontaine,
@Mitch zaoszczędź trochę, używając miejsca zamiast .i robiąc split()(myślę)
Stephen
@Mitch, czy w ogóle potrzebujesz okresów? Czy istnieje metoda podziału listy na grupy po 2 osoby?
Magic Octopus Urn
Wierzę, że możesz zaoszczędzić trochę więcej bajtów dict((i[0]+i[1],int(i[-1])) for i in zip(*[iter("WA2WI4WV5FL2...")]*3)). Prawdopodobnie możesz pominąć tę intkwestię, jeśli pozwala na wyświetlanie danych wyjściowych w postaci łańcucha.
Izaak van Dongen
Właściwie, jeśli użyjesz rozpakowywania, możesz to zrobić dict((a+b,int(c)) for a,b,c in zip(*[iter("WA2WI4WV5...")]*3)). Przepraszam, jestem trochę niezdecydowany: D
Izaak van Dongen
1

PowerShell , 187 bajtów

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

Wypróbuj online!

Jestem pewien, że jest lepszy sposób, aby to zrobić, ale oto moje podejście.

Pobiera dane wejściowe $ai wykorzystuje je, aby uzyskać .IndexOfjego wystąpienie w długim ciągu kombinacji stanu / granicy. Przechowuje to $xi ciąg $bw procesie. Następnie przechodzi do ifinstrukcji, która sprawdza, czy znalazła dopasowanie, a jeśli tak, to indeks do cyfry i wtedy exit. W przeciwnym razie, jesteśmy jednym z 6państw lub AKlub HI, więc wykonać jakąś logikę, aby zobaczyć, czy $ajest jedno z 0państw, i odejmować w razie potrzeby. W każdym razie pozostaje to w potoku, a dane wyjściowe są niejawne.

AdmBorkBork
źródło
1

Python 3, 729 733 bajtów

Pobiera dane wejściowe jako skrót pocztowy. To moja pierwsza próba gry w golfa i jest to najkrótsza próba, jaką mogę osiągnąć dzięki temu piekielnemu podejściu. Wiem, że to jest ogromne - pomyśl o tym, pewnie lepiej by mi było ze if-elsestwierdzeniami, ale po całym tym czasie i wysiłku musiałem to opublikować: 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

Właśnie zdałem sobie sprawę, że wybrałem luksus trzyliterowej nazwy zmiennej - 4 bajty w dół, 400 na start!

Izaak van Dongen
źródło
Witamy w PPCG! Czasami prostsze rozwiązania są krótsze, jak pokazują inne odpowiedzi w języku Python: P
Stephen
Tak, uwielbiam wszystkie wysiłki, które wkładasz w to, biorąc pod uwagę, że twoją winną przyjemnością jest „uczynienie twojego kodu tak zwięzłym, że nieczytelnym”,
zmieścisz się