The Tabung London Underground AKA The adalah kereta api bawah tanah tertua di dunia, saat ini terdiri dari sebelas garis * melayani 267 stasiun bernama (ketat 269 stasiun ** karena "Edgware Road" dan "Hammersmith" masing-masing menempati dua lokasi)
Tantangan
Keluarkan nama-nama jalur yang melayani stasiun yang diberi nama sebagai masukan.
Input:
String atau daftar karakter
Ini dapat dianggap sebagai nama stasiun yang valid (seperti yang tercantum dalam blok-kode di bawah).
Anda dapat mengasumsikan bahwa apa pun
&
dalam input akan secara konsisten menjadi kataand
(atauAnd
) alih-alih jika Anda inginkan, cukup sebutkan dengan jelas dalam jawaban Anda.
Output: Output yang
terpisah mencantumkan daftar dari sebelas baris yang melayani stasiun itu:
Daftar string, daftar daftar karakter, teks tercetak, string, daftar karakter; jika ragu tanyakan.
Anda dapat secara konsisten menampilkan kata
and
(atauAnd
) di tempat apa pun&
jika Anda mau, cukup sebutkan ini dengan jelas dalam jawaban Anda.Dengan peringatan bahwa jika mencetak atau mengembalikan string atau daftar karakter yang pemisah-substring yang digunakan tidak ada dalam salah satu nama baris (termasuk
&
atauand
atauAnd
digunakan) - ini karena itu tidak termasuk penggunaan karakter spasi tunggal sebagai pemisah .
Jaringan Tube :
- Catatan: Ini adalah keadaan akhir, meskipun itu mengandung kesalahan ejaan (kecuali jika ditujukan sebelum ada jawaban)
Input (Station Name) : Output (list of tube line names)
----------------------------------------------------------------------------------------------------------------
"Acton Town" : ["District","Piccadilly"]
"Aldgate" : ["Circle","Metropolitan"]
"Aldgate East" : ["District","Hammersmith & City"]
"Alperton" : ["Piccadilly"]
"Amersham" : ["Metropolitan"]
"Angel" : ["Northern"]
"Archway" : ["Northern"]
"Arnos Grove" : ["Piccadilly"]
"Arsenal" : ["Piccadilly"]
"Baker Street" : ["Bakerloo","Circle","Hammersmith & City","Jubilee","Metropolitan"]
"Balham" : ["Northern"]
"Bank" : ["Central","Northern","Waterloo & City"]
"Barbican" : ["Circle","Hammersmith & City","Metropolitan"]
"Barking" : ["District","Hammersmith & City"]
"Barkingside" : ["Central"]
"Barons Court" : ["District","Piccadilly"]
"Bayswater" : ["Circle","District"]
"Becontree" : ["District"]
"Belsize Park" : ["Northern"]
"Bermondsey" : ["Jubilee"]
"Bethnal Green" : ["Central"]
"Blackfriars" : ["Circle","District"]
"Blackhorse Road" : ["Victoria"]
"Bond Street" : ["Central","Jubilee"]
"Borough" : ["Northern"]
"Boston Manor" : ["Piccadilly"]
"Bounds Green" : ["Piccadilly"]
"Bow Road" : ["District","Hammersmith & City"]
"Brent Cross" : ["Northern"]
"Brixton" : ["Victoria"]
"Bromley-by-Bow" : ["District","Hammersmith & City"]
"Buckhurst Hill" : ["Central"]
"Burnt Oak" : ["Northern"]
"Caledonian Road" : ["Piccadilly"]
"Camden Town" : ["Northern"]
"Canada Water" : ["Jubilee"]
"Canary Wharf" : ["Jubilee"]
"Canning Town" : ["Jubilee"]
"Cannon Street" : ["Circle","District"]
"Canons Park" : ["Jubilee"]
"Chalfont & Latimer" : ["Metropolitan"]
"Chalk Farm" : ["Northern"]
"Chancery Lane" : ["Central"]
"Charing Cross" : ["Bakerloo","Northern"]
"Chesham" : ["Metropolitan"]
"Chigwell" : ["Central"]
"Chiswick Park" : ["District"]
"Chorleywood" : ["Metropolitan"]
"Clapham Common" : ["Northern"]
"Clapham North" : ["Northern"]
"Clapham South" : ["Northern"]
"Cockfosters" : ["Piccadilly"]
"Colindale" : ["Northern"]
"Colliers Wood" : ["Northern"]
"Covent Garden" : ["Piccadilly"]
"Croxley" : ["Metropolitan"]
"Dagenham East" : ["District"]
"Dagenham Heathway" : ["District"]
"Debden" : ["Central"]
"Dollis Hill" : ["Jubilee"]
"Ealing Broadway" : ["Central","District"]
"Ealing Common" : ["District","Piccadilly"]
"Earl's Court" : ["District","Piccadilly"]
"East Acton" : ["Central"]
"East Finchley" : ["Northern"]
"East Ham" : ["District","Hammersmith & City"]
"East Putney" : ["District"]
"Eastcote" : ["Metropolitan","Piccadilly"]
"Edgware" : ["Northern"]
"Edgware Road" : ["Bakerloo","Circle","District","Hammersmith & City"]
"Elephant & Castle" : ["Bakerloo","Northern"]
"Elm Park" : ["District"]
"Embankment" : ["Bakerloo","Circle","District","Northern"]
"Epping" : ["Central"]
"Euston" : ["Northern","Victoria"]
"Euston Square" : ["Circle","Hammersmith & City","Metropolitan"]
"Fairlop" : ["Central"]
"Farringdon" : ["Circle","Hammersmith & City","Metropolitan"]
"Finchley Central" : ["Northern"]
"Finchley Road" : ["Jubilee","Metropolitan"]
"Finsbury Park" : ["Piccadilly","Victoria"]
"Fulham Broadway" : ["District"]
"Gants Hill" : ["Central"]
"Gloucester Road" : ["Circle","District","Piccadilly"]
"Golders Green" : ["Northern"]
"Goldhawk Road" : ["Circle","Hammersmith & City"]
"Goodge Street" : ["Northern"]
"Grange Hill" : ["Central"]
"Great Portland Street" : ["Circle","Hammersmith & City","Metropolitan"]
"Greenford" : ["Central"]
"Green Park" : ["Jubilee","Piccadilly","Victoria"]
"Gunnersbury" : ["District"]
"Hainault" : ["Central"]
"Hammersmith" : ["Circle","District","Hammersmith & City","Piccadilly"]
"Hampstead" : ["Northern"]
"Hanger Lane" : ["Central"]
"Harlesden" : ["Bakerloo"]
"Harrow & Wealdstone" : ["Bakerloo"]
"Harrow-on-the-Hill" : ["Metropolitan"]
"Hatton Cross" : ["Piccadilly"]
"Heathrow Terminals 1, 2, 3" : ["Piccadilly"]
"Heathrow Terminal 4" : ["Piccadilly"]
"Heathrow Terminal 5" : ["Piccadilly"]
"Hendon Central" : ["Northern"]
"High Barnet" : ["Northern"]
"Highbury & Islington" : ["Victoria"]
"Highgate" : ["Northern"]
"High Street Kensington" : ["Circle","District"]
"Hillingdon" : ["Metropolitan","Piccadilly"]
"Holborn" : ["Central","Piccadilly"]
"Holland Park" : ["Central"]
"Holloway Road" : ["Piccadilly"]
"Hornchurch" : ["District"]
"Hounslow Central" : ["Piccadilly"]
"Hounslow East" : ["Piccadilly"]
"Hounslow West" : ["Piccadilly"]
"Hyde Park Corner" : ["Piccadilly"]
"Ickenham" : ["Metropolitan","Piccadilly"]
"Kennington" : ["Northern"]
"Kensal Green" : ["Bakerloo"]
"Kensington (Olympia)" : ["District"]
"Kentish Town" : ["Northern"]
"Kenton" : ["Bakerloo"]
"Kew Gardens" : ["District"]
"Kilburn" : ["Jubilee"]
"Kilburn Park" : ["Bakerloo"]
"Kingsbury" : ["Jubilee"]
"King's Cross St. Pancras" : ["Circle","Hammersmith & City","Metropolitan","Northern","Piccadilly","Victoria"]
"Knightsbridge" : ["Piccadilly"]
"Ladbroke Grove" : ["Circle","Hammersmith & City"]
"Lambeth North" : ["Bakerloo"]
"Lancaster Gate" : ["Central"]
"Latimer Road" : ["Circle","Hammersmith & City"]
"Leicester Square" : ["Northern","Piccadilly"]
"Leyton" : ["Central"]
"Leytonstone" : ["Central"]
"Liverpool Street" : ["Central","Circle","Hammersmith & City","Metropolitan"]
"London Bridge" : ["Jubilee","Northern"]
"Loughton" : ["Central"]
"Maida Vale" : ["Bakerloo"]
"Manor House" : ["Piccadilly"]
"Mansion House" : ["Circle","District"]
"Marble Arch" : ["Central"]
"Marylebone" : ["Bakerloo"]
"Mile End" : ["Central","District","Hammersmith & City"]
"Mill Hill East" : ["Northern"]
"Monument" : ["Circle","District"]
"Moorgate" : ["Circle","Hammersmith & City","Metropolitan","Northern"]
"Moor Park" : ["Metropolitan"]
"Morden" : ["Northern"]
"Mornington Crescent" : ["Northern"]
"Neasden" : ["Jubilee"]
"Newbury Park" : ["Central"]
"North Acton" : ["Central"]
"North Ealing" : ["Piccadilly"]
"North Greenwich" : ["Jubilee"]
"North Harrow" : ["Metropolitan"]
"North Wembley" : ["Bakerloo"]
"Northfields" : ["Piccadilly"]
"Northolt" : ["Central"]
"Northwick Park" : ["Metropolitan"]
"Northwood" : ["Metropolitan"]
"Northwood Hills" : ["Metropolitan"]
"Notting Hill Gate" : ["Central","Circle","District"]
"Oakwood" : ["Piccadilly"]
"Old Street" : ["Northern"]
"Osterley" : ["Piccadilly"]
"Oval" : ["Northern"]
"Oxford Circus" : ["Bakerloo","Central","Victoria"]
"Paddington" : ["Bakerloo","Circle","District","Hammersmith & City"]
"Park Royal" : ["Piccadilly"]
"Parsons Green" : ["District"]
"Perivale" : ["Central"]
"Piccadilly Circus" : ["Bakerloo","Piccadilly"]
"Pimlico" : ["Victoria"]
"Pinner" : ["Metropolitan"]
"Plaistow" : ["District","Hammersmith & City"]
"Preston Road" : ["Metropolitan"]
"Putney Bridge" : ["District"]
"Queen's Park" : ["Bakerloo"]
"Queensbury" : ["Jubilee"]
"Queensway" : ["Central"]
"Ravenscourt Park" : ["District"]
"Rayners Lane" : ["Metropolitan","Piccadilly"]
"Redbridge" : ["Central"]
"Regent's Park" : ["Bakerloo"]
"Richmond" : ["District"]
"Rickmansworth" : ["Metropolitan"]
"Roding Valley" : ["Central"]
"Royal Oak" : ["Circle","Hammersmith & City"]
"Ruislip" : ["Metropolitan","Piccadilly"]
"Ruislip Gardens" : ["Central"]
"Ruislip Manor" : ["Metropolitan","Piccadilly"]
"Russell Square" : ["Piccadilly"]
"St. James's Park" : ["Circle","District"]
"St. John's Wood" : ["Jubilee"]
"St. Paul's" : ["Central"]
"Seven Sisters" : ["Victoria"]
"Shepherd's Bush" : ["Central"]
"Shepherd's Bush Market" : ["Circle","Hammersmith & City"]
"Sloane Square" : ["Circle","District"]
"Snaresbrook" : ["Central"]
"South Ealing" : ["Piccadilly"]
"South Harrow" : ["Piccadilly"]
"South Kensington" : ["Circle","District","Piccadilly"]
"South Kenton" : ["Bakerloo"]
"South Ruislip" : ["Central"]
"South Wimbledon" : ["Northern"]
"South Woodford" : ["Central"]
"Southfields" : ["District"]
"Southgate" : ["Piccadilly"]
"Southwark" : ["Jubilee"]
"Stamford Brook" : ["District"]
"Stanmore" : ["Jubilee"]
"Stepney Green" : ["District","Hammersmith & City"]
"Stockwell" : ["Northern","Victoria"]
"Stonebridge Park" : ["Bakerloo"]
"Stratford" : ["Central","Jubilee"]
"Sudbury Hill" : ["Piccadilly"]
"Sudbury Town" : ["Piccadilly"]
"Swiss Cottage" : ["Jubilee"]
"Temple" : ["Circle","District"]
"Theydon Bois" : ["Central"]
"Tooting Bec" : ["Northern"]
"Tooting Broadway" : ["Northern"]
"Tottenham Court Road" : ["Central","Northern"]
"Tottenham Hale" : ["Victoria"]
"Totteridge & Whetstone" : ["Northern"]
"Tower Hill" : ["Circle","District"]
"Tufnell Park" : ["Northern"]
"Turnham Green" : ["District","Piccadilly"]
"Turnpike Lane" : ["Piccadilly"]
"Upminster" : ["District"]
"Upminster Bridge" : ["District"]
"Upney" : ["District"]
"Upton Park" : ["District","Hammersmith & City"]
"Uxbridge" : ["Metropolitan","Piccadilly"]
"Vauxhall" : ["Victoria"]
"Victoria" : ["Circle","District","Victoria"]
"Walthamstow Central" : ["Victoria"]
"Wanstead" : ["Central"]
"Warren Street" : ["Northern","Victoria"]
"Warwick Avenue" : ["Bakerloo"]
"Waterloo" : ["Bakerloo","Jubilee","Northern","Waterloo & City"]
"Watford" : ["Metropolitan"]
"Wembley Central" : ["Bakerloo"]
"Wembley Park" : ["Jubilee","Metropolitan"]
"West Acton" : ["Central"]
"West Brompton" : ["District"]
"West Finchley" : ["Northern"]
"West Ham" : ["District","Hammersmith & City","Jubilee"]
"West Hampstead" : ["Jubilee"]
"West Harrow" : ["Metropolitan"]
"West Kensington" : ["District"]
"West Ruislip" : ["Central"]
"Westbourne Park" : ["Circle","Hammersmith & City"]
"Westminster" : ["Circle","District","Jubilee"]
"White City" : ["Central"]
"Whitechapel" : ["District","Hammersmith & City"]
"Willesden Green" : ["Jubilee"]
"Willesden Junction" : ["Bakerloo"]
"Wimbledon" : ["District"]
"Wimbledon Park" : ["District"]
"Wood Green" : ["Piccadilly"]
"Wood Lane" : ["Circle","Hammersmith & City"]
"Woodford" : ["Central"]
"Woodside Park" : ["Northern"]
... sebelas nama garis adalah:
Bakerloo
Central
Circle
District
Hammersmith & City
Jubilee
Metropolitan
Northern
Piccadilly
Victoria
Waterloo & City
* Transportasi Untuk London juga mengelola jalur kereta api lain, beberapa juga dapat disebut sebagai bagian dari "The Tube" (kemungkinan besar "Docklands Light Railway" atau "DLR") tetapi kita harus tetap berpegang pada sebelas yang tercantum di sini.
** Halaman Wikipedia yang terhubung saat ini menyatakan 270, tapi saya percaya mereka keliru menghitung lokasi kedua Canary Wharf meskipun hanya melayani "DLR")
Tumpukan poin brownies imajiner (dan kemungkinan besar banyak upvotes juga) untuk pengiriman golf menggunakan Mornington Crescent (IDE yang kompatibel tersedia di sini )!
Ini adalah kode-golf , jadi kode terpendek dalam byte menang per bahasa dan solusi terpendek menang (jangan biarkan bahasa golf membuat Anda tidak bermain golf dalam bahasa lain). Selamat bersenang-senang!
sumber
Jawaban:
Mathematica 8+, 266 byte
Solusi ini awalnya memiliki jumlah byte yang sama dengan stasiun. Saya kira itu bisa golf turun 50 byte atau lebih, tapi ini sepertinya tempat yang pas untuk berhenti sekarang.
pengantar
Mathematica terkenal dengan pustaka standar yang besar dan akses ke "pangkalan pengetahuan komputer" yang besar dan bisa online. Dengan berani saya mencari Wolfram | Alpha dengan harapan dapat dengan mudah menemukan data transit yang relevan, tetapi meskipun ia memahami domain dari permintaan saya, datanya belum tersedia .
Untungnya, dokumentasi bawaan Matematika yang luas dilengkapi dengan contoh-contoh yang rapi. Beberapa halaman tersebut kebetulan menggunakan jaringan London Underground untuk menunjukkan fungsionalitas terkait grafik. Kami akan menggunakan grafik dari contoh unggulan "Perencanaan Perjalanan" karena nama pendeknya.
Berikut adalah penggunaan keren lainnya dari jaringan yang sama .
Saya tidak percaya bahwa secara terprogram mengakses dokumentasi Mathematica sendiri termasuk dalam celah "Mengambil dari sumber eksternal" .
Impor halaman contoh
Kami dapat mengimpor halaman contoh sebagai ekspresi buku catatan :
Dimungkinkan untuk mengekstraksi seluruh grafik dari jauh di dalam ekspresi notebook:
Perhatikan bahwa simpul grafik hanyalah nama stasiun. Tepi memiliki
"Lines"
properti khusus yang merupakan daftar string yang mewakili garis yang melewati antara dua stasiun:Sekarang, kita bisa menemukan semua garis yang melewati titik dengan mengambil semua tepi kejadiannya
IncidenceList[g, vertex]
, memetakannyaPropertyValue[{g, edge}, "Lines"]
, dan seterusnya.Namun, kami akan melewati metode di atas dan menyimpan banyak byte dengan pencocokan pola untuk bagian yang relevan dari
Graph
konstruktor -Properties
opsi.Ekstrak garis
The
Graph
konstruktor memiliki format berikut:(Anda dapat melihat ini dengan memeriksa
FullForm[g]
atau membaca kode sumberTripPlanning.nb
- untuk path lengkapnya, jalankanFindFile["ExamplePages/TripPlanning.nb"]
.)Berikut adalah contoh properti satu sisi:
Mari ubah ungkapan ini menjadi pola yang ringkas:
Buat tabel pencarian
Sekarang kita bisa cocok
v1
,v2
danlines
, tapi kami ingin{v1 -> lines, v2 -> lines}
. Bermanfaat,Cases
secara bersamaan dapat mencocokkan suatu pola dan mengubahnya.Ini menghasilkan daftar formulir
{{v1 -> lines, v2 -> lines}, {v1 -> lines, v3 -> lines}, ...}
. Akhirnya, kami menggabungkan daftar dengan simpul:Di bawah 90 byte, kami telah menghasilkan tabel pencarian yang hampir sempurna untuk setiap saluran stasiun.
Perbaiki kesalahan ketik
Sayangnya, beberapa nama stasiun salah eja atau hilang.
Pencocokan string fuzzy harus mengatasi kesalahan ketik. Kami dapat menemukan
Nearest
nama stasiun yang salah eja ke nama stasiun masukan:Ganti input
"Wood Lane"
dan"Shepherd's Bush Market"
(stasiun baru) dengan"Royal Oak"
, karena ketiga stasiun berbagi baris yang sama:Buat fungsi-fungsi itu untuk mendapatkan nama stasiun palsu, cari garisnya di tabel, dan simpan di
r
:Memperbaiki usang
Jaringan ini juga sedikit ketinggalan zaman karena perbaikan Circle Line.
Jika stasiun input adalah
"Hammersmith"
atau jika tabel pencarian hanya kembali{"Hammersmith & City"}
, maka tambahkan"Circle"
ke baris.Hapus garis asing
Grafik berisi beberapa baris yang tidak kami pedulikan, jadi hapuslah:
Itu dia!
Cobalah! (dengan solusi)
Jika Anda ingin bermain-main dengan solusi saya tetapi tidak memiliki Mathematica, Anda dapat menggunakan Cloud Programming Wolfram gratis. Buka di sini , klik
Create a New Notebook
, lalu tunggu sebentar.Sayangnya, platform ini memiliki beberapa batasan yang mencegah kode saya untuk mengimpor notebook. Berikut adalah beberapa solusi sederhana:
Karena halaman contoh tidak ada di sana, kami dapat mencoba menyalahgunakan fungsi salin-input-ke-clipboard dari dokumentasi online. Saya menggunakan alat pengembang peramban dan melihat bahwa ada permintaan
http://reference.wolfram.com/language/example/Files/TripPlanning.en/i_1.txt
(peringatan: besar). Namun, proksi platform tidak menyelesaikan domainreference.wolfram.com
, jadi saya hanya melakukannya secara manual.Tempel ini terlebih dahulu dan tekan shift+enteruntuk menjalankan. Sekarang ganti
<<ExamplePages/TripPlanning.nb
dengangWorkaround
.Uji data
Panggil fungsi
f
dan mengujinya pada data yang diberikan:sumber
ES6, Node.js / Chrome,
989977931892889887 bytePaket tes lengkap (Node.js)
Cobalah online!
Demo (Chrome)
NB : Karena inkonsistensi dalam implementasi
parseInt()
lintas browser (1) , ini hanya dijamin berfungsi untuk semua stasiun di Chrome.Tampilkan cuplikan kode
(1) Dari spesifikasi : Misalkan mathInt menjadi nilai integer matematis yang diwakili oleh Z dalam notasi radix-R [...]. Jika R bukan 2, 4, 8, 10, 16, atau 32, maka mathInt mungkin merupakan pendekatan yang bergantung pada implementasi terhadap nilai integer matematika yang diwakili oleh Z dalam notasi radix-R.
Bagaimana?
Di bawah ini adalah contoh decoding langkah-demi-langkah untuk input
s = "St. James's Park"
.Langkah 1
Kami pertama-tama mengembang tabel pencarian utama (dari 503 menjadi 2.328 byte) dengan memperluas semua karakter padding-nya. Karakter-karakter ini dikodekan dengan kode ASCII lebih besar dari 92, sedangkan data payload menggunakan kisaran 48-90.
Langkah 2
Kami menghapus semua karakter non-alfabet dari string input:
yang memberi
"StJamessPark"
.Langkah # 3
Kami mengurai string yang dihasilkan sebagai kuantitas base-36:
yang memberikan
3793395908848905700
(ini adalah hasil yang diperkirakan dikembalikan oleh Chrome V8 ).Langkah # 4
Kami menghitung nilai hash:
yang memberi
533
.NB : Karena kehilangan presisi, hasil ini tidak benar secara matematis (seharusnya
184
). Tapi tabel pencarian - tentu saja - dibangun dengan cara yang sama, jadi itulah yang kami harapkan.Langkah # 5
Kami mengambil kode ASCII dari karakter di posisi ini di tabel pencarian utama:
yang memberi
58
(ini karakternya':'
).Langkah # 6
Kami menggunakan nilai ini untuk mengekstrak string 2 karakter dari tabel pencarian sekunder:
yang memberi
0c
.Langkah # 7
Kami mengurai string ini sebagai kuantitas base-36:
yang memberi
12
.Langkah # 8
Akhirnya, kami memfilter daftar stasiun sesuai dengan bit yang ditetapkan
msk
, dimulai dengan yang paling signifikan:Dalam contoh kami,
msk
memegang12
, yang00000001100
dalam biner. Jadi kita tetap 3 dan stasiun 4, yang mengarah ke hasil akhir:[ 'Circle', 'District' ]
.sumber
Northern
.Kotlin ,
2271227020001694 byteYg diperindahkan
Uji
Suntingan
Pemisah pipa yang tidak dibutuhkan -270 bytes
Dikompresi dengan alat zip -306 byte
sumber
Python 2 ,
230923012218 byteCobalah online!
-6 terima kasih kepada Tn . Xcoder .
Terlalu lama ... mungkin golf.
sumber
Cinnamon Gum , 2100 byte
Hexdump:
Cobalah online!
Saya telah tidak diragukan lagi ini bisa golfed jauh lagi, masalahnya adalah kurangnya Cinnamon Gum ini docs lengkap. (@quartata tolong ini kesempatan besar untuk menjadi troll lang yang luar biasa) Saya mungkin menggali kode sumber untuk melihat apakah ada sesuatu yang dapat bermanfaat untuk ini.
Ini adalah skrip Python yang saya hack bersama untuk menghasilkan string terkompresi.
sumber
PHP,
178517801471 byteYg diperindahkan
Penjelasan
Untuk membedakan nama stasiun dengan sesedikit karakter, saya sedikit mengotak-atik dan menemukan bahwa jika saya mengambil karakter ke-22, 23 dan 24 dari hash MD5, itu akan menjadi unik kecuali untuk SATU tabrakan:
ddb
bisa berdiriHeathrow Terminals 1, 2, 3
dan untukDagenham Heathway
.Untuk merujuk pada 11 nama garis tabung, saya hanya menggunakan digit heksidimal dari 0 hingga A.
Kemudian saya membuat daftar substring hash MD5 yang dipisah koma, dengan digit garis tabung yang sesuai di sebelahnya. Tapi saya memang meninggalkan
Heathrow Terminals 1, 2, 3
daftar untuk menghindari tabrakan.Contoh:
fe538
berarti bahwa stasiun apa pun yang namanya md5 akan memiliki karakterfe5
di tempat 22, 23 dan 24, menjalankan garis tabung yang dirujuk oleh3
dan8
. ArtiActon Town
menjalankan garis tabungDistrict
danPiccadilly
.Lalu saya menulis fungsi sederhana yang memeriksa input. MD5 memotongnya. Mengambil karakter ke 22, 23 dan 24. Cocokkan dengan daftar yang saya buat. Dan menunjukkan nama tabung yang sesuai. Dengan expection
ddb
tentu saja, yang hardcodedPiccadilly
, ketika string yang diberikan dimulai denganH
.Suntingan
array()
dengan[]
untuk -5 karaktereval(gzinflate(base64_decode()))
untuk -309 karaktersumber
Python 2 ,
143014181416 byteCobalah online!
Penjelasan Input dikodekan sebagai representasi biner (kode ASCII 8-bit untuk setiap huruf kata input) ketika mengisi kata input dengan spasi di kanan jika panjang kata kurang dari 26. Saya sudah melakukan representasi yang sama untuk semua input yang mungkin dan temukan bit minimal yang membedakan output. Kode melihat bit-bit khusus ini untuk memutuskan output.
sumber
s=(s+' '*22)[:26]
alih - alihs+=' '*(26-len(s))
.n=0
newlinefor e in(input()+' '*26)[:26]:n=n*256+ord(e)
. Dua lagi dengan menggunakann=i=0
di bagian atas juga.SyntaxError: Non-ASCII character...
ketika saya mencoba melakukannya) - mungkin perlu tajuk penyandian atau sesuatu.Jotlin 1.0 , 1539 byte
pengajuan
Kode uji
sumber