Berapa banyak negara yang saya batasi?

20

Ketika saya masih muda, saya memiliki peta besar AS dipasang di dinding saya di seberang tempat tidur. Ketika saya bosan, saya akan menatap peta itu dan memikirkan hal-hal. Hal-hal seperti teorema empat warna, atau negara bagian yang berbatasan dengan sebagian besar negara bagian lainnya. Untuk menghemat tenaga otak saya dalam menghitung, Anda akan menciptakan mesin waktu dan memberi tahu saya berapa banyak negara yang membatasi input. Karena waktu itu rewel, ini perlu sesingkat mungkin.

Tugas

Diberikan salah satu dari 50 negara bagian AS, baik dengan nama lengkap atau singkatan posnya, seperti yang ditemukan di halaman ini ( archive.org mirror ), mengembalikan jumlah negara bagian yang berbatasan dengannya. Berikut ini adalah pemetaan semua input untuk nama negara lengkap ke jumlah negara bagian yang berdekatan, yang ditemukan di situs web ini .

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

Aturan

  • Program Anda dapat menangani nama negara lengkap atau kode pos - tidak dapat menggunakan kombinasi.
  • Anda dapat menentukan kasus input, tetapi Anda tidak dapat menghapus spasi di input.
  • Anda tidak harus menangani Washington, DC, atau apa pun yang bukan salah satu dari 50 negara.
  • Jumlah negara yang berbatasan tidak termasuk negara input.
  • Ini adalah , jadi jawaban tersingkat dalam byte menang.

Meskipun saya tahu ini mungkin siapa saja yang memiliki kompresi terbaik atau menemukan pola regex terbaik per angka, jika saya mendapatkan terlalu banyak jawaban itu, saya akan memberikan hadiah untuk jawaban yang menghasilkan peta AS dan menggunakannya untuk menghitung jumlah negara yang berbatasan.

Stephen
sumber
11
inb4Built-in
Mathematica
@DJMcMayhem uh oh (kedengarannya bagus pada awalnya, tetapi lihat pembaruan ...)
Stephen
@ LANGKAH Oh tidak, saya telah diusir! Saya sedang mengerjakan jawaban sekarang yang menggabungkan ini ...;)
notjagan
Terkait
geokavel
Bisakah kita menangani DC / memasukkannya ke dalam perhitungan kita jika kita mau?
notjagan

Jawaban:

17

Jelly , 73 65 byte

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

Cobalah online!

Builtin? Siapa yang butuh itu? ( ʂÞiƬdi tanah jijik).

Mengambil input sebagai nama lengkap, seperti "Idaho".

Bagaimana itu bekerja

“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
sumber
Proses apa yang Anda gunakan untuk mendapatkan daftar itu?
Scott Milner
2
@ScottMilner Saya berlari OS%168di masing-masing negara bagian, yang langsung menghasilkan daftar. Saya menemukan konstanta 168 dengan memaksa semua kemungkinan kurang dari 250, memeriksa masing-masing untuk benar-benar dapat membedakan antara jumlah perbatasan yang berbeda. 168bekerja (di antara beberapa lainnya) dan memiliki manfaat tambahan hanya dengan memiliki 48nilai hard-code karena tabrakan.
fireflame241
18

Mathematica, 112 111 byte

-5 byte terima kasih kepada Mark S. dan LegionMammal978 !

-22 byte (dan memperhatikan masalah dengan output) terima kasih kepada ngenisis !

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

Tentu saja, ada Mathematica bawaan untuk itu. Termasuk DC dalam hitungan.

notjagan
sumber
3
Ini terasa kotor, tetapi AdministrativeDivisionsangat panjang sehingga Anda akan menyimpan byte dengan Panjang [x = "AdministrativeDivision" ~ Entity ~ StringDelete [""] @ # ~ ToExpression [x <> "Data"] ~ "BorderingStates"] &
Mark S.
1
ToExpressiondapat diganti dengan Symbol, jika saya ingat dengan benar.
LegionMammal978
1
Anda juga tidak perlu menggunakan AdministrativeDivisionData, cukup "BorderingStates"sebagai argumen untuk entitas; egEntity["AdministrativeDivision","Alaska"]["BorderingStates"]
ngenisis
1
@ngenisis Saya menerapkan perbaikan pada masalah pertama; untungnya, karena saran Anda, itu tidak menambahkan banyak byte. Masalah terakhir yang Anda sebutkan tentang DC bukan masalah karena saya bertanya OP apakah ini valid dan jawabannya adalah ya.
notjagan
1
@ notjagan Anda juga dapat menggunakan Tr[1^...]tempat Length@...untuk menyimpan byte lain.
ngenisis
13

JavaScript (ES6), 115 113 byte

Sunting: menyimpan 2 byte dengan meminjam 2 optimisasi string lebih lanjut dari Langkah Hen Python jawab . Saya merindukan mereka pada upaya awal saya.

Mengambil kode pos sebagai input.

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

Bagaimana?

Argumen non-RegExp yang diteruskan ke .match()metode secara implisit dikonversi ke objek RegExp. Jadi, kami sedang menguji ekspresi reguler /.\D*{{input}}/pada string kami yang dikodekan. Ini cocok dengan digit (1) , diikuti oleh 0 hingga N karakter non-digit, diikuti oleh input.

Misalnya: jika inputnya adalah "NH"(New Hampshire), string yang cocok adalah "3CACTNDELANH". Kami hanya menyimpan karakter pertama dari string ini, atau kembali "6"secara default jika tidak ada kecocokan.

(1): .Sebenarnya cocok dengan karakter apa pun, tetapi string dibangun sedemikian rupa sehingga apa yang ditemukan sebelum sekelompok huruf selalu digit.

Demo


Versi hash, 115 byte

Format input yang sama.

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

Demo

Arnauld
sumber
Anda bisa menghemat banyak byte dengan menggunakan String itu
Downgoat
7

Python 3 , 168 154 153 137 byte

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

Cobalah online!

-4 byte terima kasih kepada isaacg

-10 byte berkat ETHProductions

-1 byte terima kasih kepada notjagen

Menyimpan lebih banyak byte dengan default ke enam, seperti jawaban yang telah dilakukan

TIO termasuk tes. Mengambil input sebagai kode pos. Menghasilkan daftar nama negara sebagai string untuk setiap set, disatukan bersama jika memungkinkan (misalnya, WVVAdisimpan sebagai WVA). Fungsi lambda mendapatkan indeks dalam daftar yang stringnya berisi input. Mungkin ada cara saya tidak tahu tentang golf fungsi tubuh. Keluaran sebagai daftar yang berisi bilangan bulat - tambahkan [0]ke ujung lambda ke keluaran sebagai bilangan bulat.

Stephen
sumber
Selain itu, Anda hanya menggunakan lsatu kali, jadi sebaiknya Anda sebariskan.
isaacg
@ ETHproductions ya, terima kasih
Stephen
@isaacg terima kasih, tidak tahu mengapa saya tidak melihat itu
Stephen
-1 byte dengan mengatur ulang posisi Texas.
notjagan
@ notjagan terima kasih, melewatkannya
Stephen
4

V , 143 byte

ç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

Cobalah 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

Saya menulis ini sebelum saya menyadari Anda dapat mengambil input sebagai kode pos. Saya tidak yakin apakah itu sebenarnya lebih pendek atau tidak :shrug:. Jawaban ini menggunakan regex untuk mencari status tertentu, dan kemudian mengubah input ke nomor tertentu jika cocok. Namun, karena jumlah negara yang telah kami uji coba naik, pencarian terkecil yang dapat kami gunakan turun. Jadi misalnya, kami tidak dapat mencari Ckarena itu akan cocok Coloradodan California. (Serta Conneticut dan The Carolinas) Namun, begitu kami telah menguji untuk setiap negara bagian yang memiliki lebih dari 3 batas, kami hanya dapat mencari dimulai dengan C karena tidak dapat cocok dengan yang sebelumnya lagi.

Beberapa test case mungkin salah karena saya tidak punya waktu untuk menguji semuanya. Beri tahu saya jika Anda menemukan output yang salah. :)

DJMcMayhem
sumber
3

JavaScript, 153 byte

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)

Chaining variabel. Saya yakin ada cara yang lebih baik untuk melakukan ini.

Berkat saran dari seseorang dari Discord, output default menjadi 6, jumlah paling umum dari status berbatasan. 183 byte hingga 151 byte.

Seorang komentator menunjukkan bahwa ini gagal untuk AK dan HI, jadi saya telah menambahkan dua byte untuk memperbaiki masalah ini. 151 hingga 153 byte.

Eli Richardson
sumber
1
Saya cukup yakin ini gagal untuk AKdan HIkarena 0||6mengevaluasi ke 6, yang merupakan output yang salah.
kamoroso94
@ kamoroso94 Saya telah memperbarui kode saya, jika menurut Anda ada perbaikan yang lebih baik, beri tahu saya.
Eli Richardson
3

05AB1E , 78 72 byte

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

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

Ini HANYA berfungsi karena urutan singkatan negara memungkinkan keadaan TIDAK terjadi dalam tumpang tindih antar negara:

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

Butuh beberapa saat untuk mendapatkan pengaturan yang benar ... Kemudian, dengan membagi input dan menghitung spasi di bagian pertama, kita mendapatkan hasil yang benar.


Jika saya mencuri "default ke 6" dari jawaban lain, saya mendapatkan 65 byte:

05AB1E , 65 byte

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

Cobalah online!

Guci Gurita Ajaib
sumber
Took awhile to get the arrangement right-> oh, saya pikir Anda bisa menyalinnya dari jawaban saya (jika saya membaca ini dengan benar)
Stephen
@Stephen Yah, saya tidak mendapatkan ide dari posting lain, jika Anda melihat "algoritma hashing sucky" Saya sedang bermain-main dengan ide-ide acak untuk hashing selama satu jam kemudian berpikir tentang ruang, menemukan saya tidak bisa mengalahkan implementasi itu tidak peduli seberapa keras saya mencoba.
Magic Gurita Guci
@Stephen sekarang saya membaca milik Anda, saya berharap saya juga berpikir tentang default ke 6 xD.
Magic Gurita Guci
1
Saya tidak memikirkannya, saya melihatnya pada jawaban ini terlebih dahulu, jadi silakan mengambilnya: P
Stephen
2

Retina , 106 105 byte

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

Cobalah online! Apakah ada yang mengatakan regex? Sunting: Disimpan 1 byte berkat @Arnauld.

Neil
sumber
2

JavaScript (ES6), 195 byte

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

Serangkaian ekspresi reguler, yang berfungsi atas nama lengkap negara.

Kasus uji:

Rick Hitchcock
sumber
2

Jelly ,  61  59 byte

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

Program lengkap yang mengambil nama negara lengkap dan mencetak hasilnya (sebagai tautan monadik ia akan mengembalikan daftar yang berisi satu angka atau angka 6).

Cobalah online! atau lihat test suite .

Bagaimana?

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

adalah daftar indeks halaman kode:

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

dan ditampilkan sebagai “ ... ‘, di bawah ini:

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
sumber
1

Excel VBA, 177 154 147 Bytes

Fungsi VBE anonim yang mengambil input, dari tipe yang diharapkan Stringmewakili kode pos negara, dari rentang [A1], dan mengembalikan Integeryang mewakili jumlah negara yang berbatasan dengan negara itu.

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)

Versi sebelumnya

154 Bytes:

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 Bytes:

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

Diformat agar mudah dibaca

[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
sumber
1

Python 2, 363 218 byte

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)

Mari kita mulai dengan jawaban hardcode sederhana yang sedikit dioptimalkan. Mengambil kode pos sebagai input.

-145 byte berkat bfontaine.

pppery
sumber
4
Anda dapat menyimpan hampir 100 byte dengan menggunakan dict(MO=8,TN=8,...)alih-alih {'MO':8,'TN':8,...}. Anda kemudian dapat menyimpan hampir 50 byte dengan menggunakan .get(a,6)dan menghapus status yang membatasi 6 status lainnya. Saya bisa turun ke 219 dengan dua trik itu.
bfontaine
@Mitch menghemat lebih banyak dengan menggunakan ruang alih-alih .dan melakukan split()(saya pikir)
Stephen
@Itch, apakah Anda perlu menstruasi? Apakah ada metode untuk membagi daftar menjadi kelompok 2?
Magic Octopus Mm
Saya yakin Anda bisa menghemat lebih banyak byte menggunakan dict((i[0]+i[1],int(i[-1])) for i in zip(*[iter("WA2WI4WV5FL2...")]*3)). Juga Anda mungkin bisa meninggalkan intitu jika diizinkan untuk memiliki output sebagai string.
Izaak van Dongen
Sebenarnya jika Anda menggunakan pembongkaran yang bisa Anda lakukan dict((a+b,int(c)) for a,b,c in zip(*[iter("WA2WI4WV5...")]*3)). Maaf, saya agak bimbang: D
Izaak van Dongen
1

PowerShell , 187 byte

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

Cobalah online!

Saya yakin ada cara yang lebih baik untuk melakukan ini, tetapi inilah pendekatan yang saya buat.

Mengambil input $adan menggunakannya untuk mendapatkan .IndexOfkemunculannya dalam rangkaian panjang kombinasi negara / perbatasan. Menyimpan ke dalam $xdan string ke $bdalam proses. Kemudian masuk ke ifpernyataan yang memeriksa apakah menemukan kecocokan, dan jika demikian indeks ke digit lalu exit. Kalau tidak, kita adalah salah satu 6negara bagian atau AKatau HI, jadi kami melakukan beberapa logika untuk melihat apakah $asalah satu 0negara bagian, dan kurangi jika perlu. Bagaimanapun, yang tersisa pada pipa dan output tersirat.

AdmBorkBork
sumber
1

Python 3, 729 733 byte

Mengambil input sebagai singkatan pos. Ini adalah upaya pertama saya di tantangan golf, dan ini adalah yang terpendek yang saya pikir bisa saya dapatkan dengan pendekatan neraka ini. Saya tahu ini luar biasa - kalau dipikir-pikir saya mungkin akan lebih baik dengan if-elsepernyataan, tetapi setelah semua waktu dan usaha saya harus mempostingnya: 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

Saya baru sadar bahwa saya telah mengambil kemewahan dari nama variabel tiga huruf - turun 4 byte, 400 pergi!

Izaak van Dongen
sumber
Selamat datang di PPCG! Terkadang solusi yang lebih sederhana lebih pendek, seperti yang ditunjukkan oleh jawaban Python lainnya: P
Stephen
Ya, saya suka semua upaya yang Anda lakukan, mengingat kesenangan bersalah Anda adalah "membuat kode Anda begitu ringkas sehingga tidak terbaca", Anda akan langsung masuk.
Zacharý