London Underground aka Tube jest najstarszym metro na świecie, obecnie składa się z jedenastu linii * 267 nazwanych stacje obsługi (Tylko 269 ** stacji Edgware Road „od” i „Hammersmith” każdy zajmują dwie lokalizacje)
Wyzwanie
Wypisuj nazwy linii obsługujących stację podaną po nazwie jako dane wejściowe.
Dane wejściowe:
ciąg znaków lub lista znaków
Można założyć, że jest to poprawna nazwa stacji (wymieniona w bloku kodu poniżej).
Możesz założyć, że dowolny
&
z danych wejściowych będzie konsekwentnie słowemand
(lubAnd
) zamiast tego, jeśli chcesz, po prostu wyraźnie to zaznacz w swojej odpowiedzi.
Dane wyjściowe:
Oddzielne dane wyjściowe zawierające te z jedenastu linii obsługujących tę stację:
Lista ciągów, lista znaków, drukowany tekst, ciąg, lista znaków; w razie wątpliwości zapytaj.
Możesz konsekwentnie wypuszczać słowo
and
(lubAnd
) zamiast dowolnego,&
jeśli chcesz, po prostu wyraźnie to zaznacz w swojej odpowiedzi.Z zastrzeżeniem, że jeśli drukujesz lub zwracasz ciąg znaków lub listę znaków, których użyty separator-podciąg nie występuje w żadnej z nazw linii (w tym
&
luband
lubAnd
) - wyklucza to użycie pojedynczego znaku spacji jako separatora .
Sieć Tube :
- Uwaga: Jest to stan końcowy, nawet jeśli zawiera błąd ortograficzny (chyba że zostanie rozwiązany przed udzieleniem jakichkolwiek odpowiedzi)
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"]
... jedenaście nazw linii to:
Bakerloo
Central
Circle
District
Hammersmith & City
Jubilee
Metropolitan
Northern
Piccadilly
Victoria
Waterloo & City
* Transport Do Londynu zarządzają również inne linie kolejowe, niektóre z nich mogą być również określane jako część „metra” (najprawdopodobniej „Docklands Light Railway” lub „DLR”), ale będziemy trzymać się jedenastu wymienionych tutaj.
** Powiązana strona Wikipedii ma obecnie 270, ale uważam, że błędnie liczą drugą lokalizację Canary Wharf, mimo że obsługuje ona tylko „DLR”)
Mnóstwo wyimaginowanych punktów brownie (i najprawdopodobniej również wiele pozytywnych opinii) za przesłanie gry w golfa za pomocą Mornington Crescent (kompatybilne IDE jest dostępne tutaj )!
Jest to kod-golf , więc najkrótszy kod w bajtach wygrywa w danym języku, a najkrótsze rozwiązanie wygrywa (nie pozwól, aby języki gry w golfa zniechęciły cię do gry w innych językach). Baw się dobrze!
źródło
Odpowiedzi:
Mathematica 8+, 266 bajtów
To rozwiązanie pierwotnie miało taką samą liczbę bajtów, jak w przypadku stacji. Podejrzewam, że można by go zagrać w golfa o kolejne 50 bajtów, ale na razie wydawało się to odpowiednie miejsce na przystanek.
Wprowadzenie
Mathematica jest dobrze znana ze swojej dużej standardowej biblioteki i dostępu do dużej internetowej „obliczalnej bazy wiedzy”. Bezczelnie przeszukiwałem Wolfram | Alpha w nadziei, że łatwo znajdę odpowiednie dane tranzytowe, ale chociaż rozumie domenę mojego zapytania, dane nie są jeszcze dostępne .
Na szczęście obszerna, wbudowana dokumentacja Mathematica zawiera dobre przykłady. Kilka z tych stron korzysta właśnie z londyńskiej sieci metra w celu zademonstrowania funkcjonalności związanej z grafem. Wykorzystamy wykres z przykładu „Planowanie podróży” ze względu na jego krótką nazwę.
Oto inne fajne zastosowania tej samej sieci .
Nie wierzę, że programowy dostęp do własnej dokumentacji Mathematiki mieści się w lukach typu „Pobieranie z zewnętrznego źródła” .
Zaimportuj stronę przykładową
Możemy zaimportować stronę przykładową jako wyrażenie do notesu :
Możliwe jest wyodrębnienie całego wykresu z głębi wyrażenia notatnika:
Zauważ, że wierzchołki wykresu to tylko nazwy stacji. Krawędzie mają
"Lines"
właściwość niestandardową, która jest listą ciągów znaków reprezentujących linie przechodzące między dwiema stacjami:Teraz moglibyśmy znaleźć wszystkie linie przechodzące przez wierzchołek, pobierając wszystkie jego krawędzie zdarzenia
IncidenceList[g, vertex]
, mapującPropertyValue[{g, edge}, "Lines"]
je i tak dalej.Pominiemy jednak powyższą metodę i zaoszczędzimy wiele bajtów według dopasowania wzorca dla odpowiedniej części
Graph
konstruktora -Properties
opcji.Wyodrębnij linie
Graph
Konstruktor ma następujący format:(Możesz to zobaczyć, sprawdzając
FullForm[g]
lub czytając kod źródłowyTripPlanning.nb
- aby uzyskać pełną ścieżkę, uruchomFindFile["ExamplePages/TripPlanning.nb"]
).Oto przykład jednej właściwości krawędzi:
Przekształćmy to wyrażenie w zwarty wzór:
Zrób tabelę przeglądową
Teraz możemy dopasować
v1
,v2
ilines
, ale chcemy{v1 -> lines, v2 -> lines}
. PomocnieCases
może jednocześnie dopasować wzór i przekształcić go.Spowoduje to utworzenie listy formularza
{{v1 -> lines, v2 -> lines}, {v1 -> lines, v3 -> lines}, ...}
. Na koniec scalamy listę wierzchołkiem:W mniej niż 90 bajtach stworzyliśmy prawie idealną tabelę odnośników dla linii każdej stacji.
Napraw literówki
Niestety niektóre nazwy stacji są błędnie zapisane lub brakuje ich.
Rozmyte ciągi znaków powinny dbać o literówki. Możemy znaleźć
Nearest
błędnie napisaną nazwę stacji w nazwie stacji wejściowej:Zamień wejścia
"Wood Lane"
i"Shepherd's Bush Market"
(nowe stacje) na"Royal Oak"
, ponieważ te trzy stacje mają te same linie:Skomponuj te funkcje, aby uzyskać fałszywą nazwę stacji, wyszukaj jej wiersze w tabeli i zapisz w
r
:Napraw nieaktualne
Sieć jest również nieco przestarzała z powodu remontu Circle Line.
Jeśli stacja wejściowa jest
"Hammersmith"
lub jeśli tabela odnośników zwraca tylko{"Hammersmith & City"}
, dodaj"Circle"
do linii.Usuń obce linie
Wykres zawiera kilka linii, na których nam nie zależy, więc usuń je:
To jest to!
Spróbuj! (z obejściami)
Jeśli chcesz pobawić się moim rozwiązaniem, ale nie masz Mathematica, możesz skorzystać z bezpłatnej chmury programistycznej Wolfram. Idź tutaj , kliknij
Create a New Notebook
, a następnie poczekaj chwilę.Niestety platforma ma pewne ograniczenia, które uniemożliwiają działanie kodu importującego notebooka. Oto kilka prostych obejść:
Ponieważ nie ma tam strony przykładowej, możemy spróbować nadużyć funkcji kopiowania danych wejściowych do schowka z dokumentacji online. Użyłem narzędzi programistycznych mojej przeglądarki i zobaczyłem, że prośba została wysłana do
http://reference.wolfram.com/language/example/Files/TripPlanning.en/i_1.txt
(ostrzeżenie: duże). Jednak serwer proxy platformy nie rozpoznaje domenyreference.wolfram.com
, więc po prostu zrobiłem to ręcznie.Wklej to w pierwszej kolejności i naciśnij, shift+enteraby wykonać. Teraz zastąpić
<<ExamplePages/TripPlanning.nb
zgWorkaround
.Dane testowe
Wywołaj funkcję
f
i przetestuj ją na danych:źródło
ES6, Node.js / Chrome,
989977931892889887 bajtówPełny zestaw testów (Node.js)
Wypróbuj online!
Demo (Chrome)
Uwaga : z powodu niespójności we wdrażaniu w
parseInt()
różnych przeglądarkach (1) gwarantuje się, że będzie działać tylko na wszystkich stacjach w Chrome.Pokaż fragment kodu
(1) Ze specyfikacji : Niech matematyczna będzie matematyczną liczbą całkowitą reprezentowaną przez Z w notacji radix-R [...]. Jeżeli R nie jest 2, 4, 8, 10, 16 lub 32, to matematyka może być zależnym od implementacji przybliżeniem matematycznej liczby całkowitej reprezentowanej przez Z w notacji Radix-R.
W jaki sposób?
Poniżej znajduje się przykład dekodowania krok po kroku dla danych wejściowych
s = "St. James's Park"
.Krok 1
Najpierw napompujemy podstawową tablicę odnośników (od 503 do 2 328 bajtów), rozszerzając wszystkie znaki dopełniania. Znaki te są kodowane kodem ASCII większym niż 92, podczas gdy dane danych użytych są w zakresie 48–90.
Krok 2
Usuwamy wszystkie znaki niealfabetyczne z ciągu wejściowego:
co daje
"StJamessPark"
.Krok 3
Analizujemy powstały ciąg jako liczbę podstawową 36:
co daje
3793395908848905700
(jest to przybliżony wynik zwracany przez Chrome V8 ).Krok 4
Obliczamy wartość skrótu:
co daje
533
.Uwaga : Z powodu utraty precyzji wynik ten nie jest matematycznie poprawny (powinien być
184
). Ale tabela przeglądowa została - oczywiście - zbudowana w ten sam sposób, więc tego właśnie oczekujemy.Krok # 5
Pobieramy kod ASCII znaku w tej pozycji w podstawowej tabeli odnośników:
co daje
58
(to jest postać':'
).Krok # 6
Używamy tej wartości, aby wyodrębnić 2-znakowy ciąg z dodatkowej tabeli odnośników:
co daje
0c
.Krok # 7
Analizujemy ten ciąg jako liczbę podstawową 36:
co daje
12
.Krok # 8
Na koniec filtrujemy listę stacji zgodnie z ustawionymi bitami
msk
, zaczynając od najmniej znaczącej:W naszym przykładzie,
msk
posiada12
, który jest00000001100
w formacie binarnym. Więc trzymamy 3 i 4 stacje, co prowadzi do ostatecznego wyniku:[ 'Circle', 'District' ]
.źródło
Northern
.Kotlin ,
2271227020001694 bajtówUpiększony
Test
Edycje
Usunięto niepotrzebne separatory rur -270 bajtów
Skompresowany za pomocą narzędzi zip -306 bajtów
źródło
Python 2 ,
230923012218 bajtówWypróbuj online!
-6 dzięki Mr. Xcoder .
Za długo ... może to gra w golfa.
źródło
Guma cynamonowa , 2100 bajtów
Hexdump:
Wypróbuj online!
Nie mam wątpliwości, to można grałem dużo więcej, problemem jest brak Cinnamon guma za kompletnych dokumentów. (@quartata pls, to ma wielką szansę na bycie niesamowitym troll langiem). Mogę zagłębić się w kod źródłowy, aby sprawdzić, czy jest coś, co może być korzystne.
Jest to skrypt Pythona, który zhakowałem razem, aby wygenerować skompresowany ciąg.
źródło
PHP,
178517801471 bajtówUpiększony
Wyjaśnienie
Aby odróżnić nazwę stacji za pomocą jak najmniejszej liczby znaków, trochę się skrzywiłem i dowiedziałem się, że jeśli wezmę 22, 23 i 24 znak skrótu MD5, byłby unikalny, z wyjątkiem JEDNEJ kolizji:
ddb
mógłby oznaczaćHeathrow Terminals 1, 2, 3
tak samo jak dlaDagenham Heathway
.Aby odwołać się do nazw linii 11 rurek, używam po prostu cyfry szesnastkowej od 0 do A.
Następnie utworzyłem listę oddzielonych przecinkami podciągów MD5 z odpowiednimi cyframi linii rurki obok niej. Ale pominąłem
Heathrow Terminals 1, 2, 3
listę, aby uniknąć kolizji.Przykład:
fe538
oznacza, że każda stacja o nazwie md5 ma znakife5
na 22, 23 i 24 miejscu, biegnie liniami rur, o których mowa w3
i8
. ZnaczenieActon Town
biegnie linii rurDistrict
iPiccadilly
.Potem napisałem prostą funkcję, która sprawdza dane wejściowe. MD5 to haszy. Zajmuje 22, 23 i 24 postać. Pasuje do listy, którą utworzyłem. I pokazuje odpowiednie nazwy rurek. Z wyczekiwaniem
ddb
kursu, który jest zakodowany na stałePiccadilly
, gdy dany ciąg zaczyna się odH
.Edycje
array()
z[]
do -5 znakóweval(gzinflate(base64_decode()))
znaków -309źródło
Python 2 ,
143014181416 bajtówWypróbuj online!
Objaśnienie Dane wejściowe są kodowane jako reprezentacja binarna (8-bitowy kod ASCII dla każdej litery słowa wejściowego) podczas uzupełniania słowa wejściowego spacjami po prawej stronie, jeśli długość słowa jest mniejsza niż 26. Zrobiłem już taką samą reprezentację dla wszystkie możliwe wejścia i znajdź minimalne bity, które różnicują wyjścia. Kod analizuje te konkretne bity, aby zdecydować o wyniku.
źródło
s=(s+' '*22)[:26]
Zamiast można zapisać pojedynczy bajts+=' '*(26-len(s))
.n=0
nowa liniafor e in(input()+' '*26)[:26]:n=n*256+ord(e)
. Dwa kolejne, używając równieżn=i=0
u góry.SyntaxError: Non-ASCII character...
gdy próbuję to zrobić) - może potrzebować nagłówka kodującego lub czegoś takiego.Jotlin 1.0 , 1539 bajtów
Uległość
Kod testowy
źródło