Die Londoner U-Bahn AKA The Tube ist die älteste U-Bahn der Welt und besteht derzeit aus elf Linien *, die 267 benannte Stationen bedienen (streng 269 ** Stationen, da "Edgware Road" und "Hammersmith" jeweils zwei Standorte belegen).
Die Herausforderung
Geben Sie die Namen der Leitungen aus, die eine Station bedienen, die durch den Namen als Eingabe angegeben wird.
Eingabe:
Eine Zeichenfolge oder eine Liste von Zeichen
Es kann angenommen werden, dass dies ein gültiger Stationsname ist (wie im folgenden Codeblock aufgeführt).
Sie können davon ausgehen, dass jedes Wort
&
in der Eingabe durchweg das Wortand
(oderAnd
) ist. Geben Sie dies in Ihrer Antwort einfach klar an.
Ausgabe:
Getrennte Ausgabe, in der die elf Leitungen aufgeführt sind, die diese Station bedienen:
Eine Liste von Zeichenfolgen, eine Liste von Zeichenlisten, gedruckter Text, eine Zeichenfolge, eine Liste von Zeichen; im Zweifelsfall fragen.
Wenn Sie möchten, können Sie das Wort (oder ) durchgehend anstelle eines anderen ausgeben. Geben Sie dies einfach in Ihrer Antwort deutlich an.
and
And
&
Mit dem Vorbehalt, dass beim Drucken oder Zurückgeben einer Zeichenfolge oder einer Liste von Zeichen, die der verwendete Trennzeichen-Teilstring in keinem der Zeilennamen (einschließlich des
&
oderand
oderAnd
) enthält, die Verwendung eines einzelnen Leerzeichens als Trennzeichen ausgeschlossen ist .
Das U-Bahn-Netzwerk :
- Hinweis: Dies ist der endgültige Status, auch wenn er einen Rechtschreibfehler enthält (sofern er nicht vor einer Antwort angesprochen wurde).
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"]
... die elf Zeilennamen sind:
Bakerloo
Central
Circle
District
Hammersmith & City
Jubilee
Metropolitan
Northern
Piccadilly
Victoria
Waterloo & City
* Transport Für London werden auch andere Bahnlinien verwaltet, einige werden möglicherweise auch als Teil von "The Tube" (höchstwahrscheinlich "Docklands Light Railway" oder "DLR") bezeichnet, aber wir werden uns an die hier aufgeführten elf halten.
** Auf der verlinkten Wikipedia-Seite stehen derzeit 270, aber ich glaube, sie zählen fälschlicherweise den zweiten Standort von Canary Wharf, obwohl er nur das "DLR" bedient.)
Jede Menge imaginärer Brownie-Punkte (und höchstwahrscheinlich auch viele Upvotes) für eine Golf-Einsendung mit Mornington Crescent (eine kompatible IDE finden Sie hier )!
Dies ist Code-Golf , also gewinnt der kürzeste Code in Bytes pro Sprache und die kürzeste Lösung (lassen Sie sich von Golfsprachen nicht davon abhalten, in anderen Sprachen Golf zu spielen). Habe Spaß!
quelle
Antworten:
Mathematica 8+, 266 Bytes
Diese Lösung hatte ursprünglich die gleiche Anzahl von Bytes, wie es Stationen gibt. Ich nehme an, es könnte noch etwa 50 Bytes lang gespielt werden, aber dies schien ein passender Ort für einen Zwischenstopp zu sein.
Einführung
Mathematica ist bekannt für seine große Standardbibliothek und den Zugriff auf eine große online "berechenbare Wissensbasis". Ich habe unverschämt nach Wolfram | Alpha gesucht, in der Hoffnung, die relevanten Transitdaten leicht zu finden, aber obwohl Wolfram | Alpha die Domäne meiner Abfrage versteht, sind die Daten noch nicht verfügbar .
Glücklicherweise enthält die umfangreiche integrierte Dokumentation von Mathematica ordentliche Beispiele. Einige dieser Seiten verwenden zufällig das Londoner U-Bahn-Netzwerk, um die grafische Funktionalität zu demonstrieren. Wir werden das Diagramm aus dem Beispiel "Reiseplanung" verwenden, das aufgrund seines Kurznamens angezeigt wird.
Hier sind andere coole Verwendungen des gleichen Netzwerks .
Ich glaube nicht, dass der programmgesteuerte Zugriff auf Mathematics eigene Dokumentation in die Lücken des Typs "Abrufen aus einer externen Quelle" fällt .
Importieren Sie die Beispielseite
Wir können die Beispielseite als Notizbuchausdruck importieren :
Es ist möglich, das gesamte Diagramm tief aus dem Notebook-Ausdruck zu extrahieren:
Beachten Sie, dass die Eckpunkte des Diagramms nur die Stationsnamen sind. Die Kanten verfügen über eine benutzerdefinierte
"Lines"
Eigenschaft, bei der es sich um eine Liste von Zeichenfolgen handelt, die die Linien darstellen, die zwischen den beiden Stationen verlaufen:Jetzt konnten wir alle Linien finden, die durch einen Scheitelpunkt verlaufen, indem wir alle einfallenden Kanten
IncidenceList[g, vertex]
abnahmen,PropertyValue[{g, edge}, "Lines"]
über sie mappten und so weiter.Wir überspringen jedoch die obige Methode und speichern viele Bytes durch Mustervergleich für den relevanten Teil des
Graph
Konstruktors - dieProperties
Option.Extrahieren Sie die Zeilen
Der
Graph
Konstruktor hat das folgende Format:(Sie können sehen , durch Inspektion
FullForm[g]
oder das Lesen des QuellcodesTripPlanning.nb
- für den vollständigen Pfad, führenFindFile["ExamplePages/TripPlanning.nb"]
.)Hier ist ein Beispiel für eine Edge-Eigenschaft:
Lassen Sie uns diesen Ausdruck in ein kompaktes Muster umwandeln:
Erstellen Sie eine Nachschlagetabelle
Jetzt können wir zusammenpassen
v1
,v2
undlines
, aber wir wollen{v1 -> lines, v2 -> lines}
. Hilfreich,Cases
kann ein Muster gleichzeitig abgleichen und transformieren.Dies erzeugt eine Liste des Formulars
{{v1 -> lines, v2 -> lines}, {v1 -> lines, v3 -> lines}, ...}
. Zuletzt führen wir die Liste nach Scheitelpunkt zusammen:In weniger als 90 Bytes haben wir eine nahezu perfekte Nachschlagetabelle für die Leitungen jeder Station erstellt.
Tippfehler beheben
Leider sind einige Sendernamen falsch geschrieben oder fehlen.
Fuzzy-String-Matching sollte sich um die Tippfehler kümmern. Wir können den
Nearest
falsch geschriebenen Stationsnamen zu dem eingegebenen Stationsnamen finden:Ersetzen Sie die Eingänge von
"Wood Lane"
und"Shepherd's Bush Market"
(neue Stationen) durch"Royal Oak"
, da diese drei Stationen die gleichen Leitungen haben:Stellen Sie diese Funktionen zusammen, um den gefälschten Stationsnamen zu erhalten, suchen Sie die entsprechenden Zeilen in der Tabelle und speichern Sie sie in
r
:Fix veraltet
Das Netzwerk ist aufgrund der Überholung der Circle Line ebenfalls leicht veraltet.
Wenn es sich bei der Eingabestation handelt
"Hammersmith"
oder wenn nur die Nachschlagetabelle zurückgegeben wird{"Hammersmith & City"}
, fügen Sie diese"Circle"
zu den Zeilen hinzu.Fremdleitungen entfernen
Das Diagramm enthält einige Linien, die uns nicht interessieren. Entfernen Sie sie daher:
Das ist es!
Versuch es! (mit Problemumgehungen)
Wenn Sie mit meiner Lösung herumspielen möchten, aber kein Mathematica haben, können Sie die kostenlose Wolfram Programming Cloud verwenden. Gehen Sie hierher , klicken Sie
Create a New Notebook
und warten Sie einen Moment.Leider weist die Plattform einige Einschränkungen auf, die verhindern, dass mein Code zum Importieren von Notizbüchern funktioniert. Hier sind einige grobe Problemumgehungen:
Da die Beispielseite nicht vorhanden ist, können wir versuchen, die Funktion zum Kopieren in die Zwischenablage aus der Online-Dokumentation zu missbrauchen. Ich habe die Entwicklertools meines Browsers verwendet und festgestellt, dass eine Anfrage an
http://reference.wolfram.com/language/example/Files/TripPlanning.en/i_1.txt
(Warnung: groß) gestellt wurde. Da der Proxy der Plattform die Domain jedoch nicht auflöstreference.wolfram.com
, habe ich es nur manuell gemacht.Fügen Sie dies zuerst ein und drücken Sie, shift+enterum auszuführen. Jetzt ersetzen
<<ExamplePages/TripPlanning.nb
mitgWorkaround
.Testdaten
Rufen Sie die Funktion auf
f
und testen Sie sie anhand der angegebenen Daten:quelle
ES6, Node.js / Chrome,
989977931892889887 ByteVollständige Testsuite (Node.js)
Probieren Sie es online!
Demo (Chrome)
Hinweis : Aufgrund von Inkonsistenzen bei der Implementierung von
parseInt()
Cross-Browsern (1) funktioniert dies garantiert nur für alle Chrome-Stationen.Code-Snippet anzeigen
(1) Aus der Spezifikation : Es sei mathInt der mathematische ganzzahlige Wert, der durch Z in der Radix-R-Notation [...] dargestellt wird. Wenn R nicht 2, 4, 8, 10, 16 oder 32 ist, kann mathInt eine implementierungsabhängige Annäherung an den mathematischen ganzzahligen Wert sein, der durch Z in der Radix-R-Notation dargestellt wird.
Wie?
Nachfolgend finden Sie ein schrittweises Dekodierungsbeispiel für die Eingabe
s = "St. James's Park"
.Schritt 1
Zunächst wird die primäre Nachschlagetabelle (von 503 auf 2.328 Byte) aufgeblasen, indem alle Füllzeichen erweitert werden. Diese Zeichen werden mit einem ASCII-Code größer als 92 codiert, während die Nutzdaten den Bereich 48-90 verwenden.
Schritt 2
Wir entfernen alle nicht alphabetischen Zeichen aus der Eingabezeichenfolge:
was gibt
"StJamessPark"
.Schritt 3
Wir analysieren den resultierenden String als Basis-36-Menge:
was gibt
3793395908848905700
(dies ist das ungefähre Ergebnis, das von Chrome V8 zurückgegeben wird ).Schritt 4
Wir berechnen den Hashwert:
was gibt
533
.Hinweis : Aufgrund von Genauigkeitsverlusten ist dieses Ergebnis mathematisch nicht korrekt (sollte es auch sein
184
). Aber die Nachschlagetabelle wurde - natürlich - auf die gleiche Weise erstellt, also ist dies diejenige, die wir erwarten.Schritt # 5
Wir rufen den ASCII-Code des Zeichens an dieser Position in der primären Nachschlagetabelle ab:
was gibt
58
(das ist der Charakter':'
).Schritt # 6
Wir verwenden diesen Wert, um eine 2-stellige Zeichenfolge aus der sekundären Nachschlagetabelle zu extrahieren:
was gibt
0c
.Schritt # 7
Wir analysieren diese Zeichenfolge als Basis-36-Menge:
was gibt
12
.Schritt # 8
Schließlich filtern wir die Stationsliste nach den eingegebenen Bits
msk
, beginnend mit dem niedrigstwertigen:In unserem Beispiel
msk
gilt12
, was00000001100
binär ist. Also haben wir die 3. und 4. Stationen halten, was dazu führt, das Endergebnis:[ 'Circle', 'District' ]
.quelle
Northern
.Kotlin ,
2271227020001694 BytesVerschönert
Prüfung
Bearbeitungen
Nicht benötigte Rohrtrenner -270 Bytes entfernt
Mit Zip-Tools komprimiert -306 Bytes
quelle
Python 2 ,
230923012218 BytesProbieren Sie es online!
-6 danke an Mr. Xcoder .
Zu lange ... vielleicht ist es golfen.
quelle
Zimtgummi , 2100 Bytes
Hexdump:
Probieren Sie es online!
Ich habe keinen Zweifel, dass dies viel mehr Golf gespielt werden kann, das Problem ist der Mangel an vollständigen Dokumenten von Cinnamon Gum. (@quartata pls das hat eine große Chance, ein fantastischer Troll zu sein) Ich könnte mich im Quellcode umsehen, um zu sehen, ob es irgendetwas gibt, das für das von Vorteil sein kann.
Dies ist das Python-Skript, das ich zusammen gehackt habe, um den komprimierten String zu generieren.
quelle
PHP,
178517801471 BytesVerschönert
Erläuterung
Um den Stationsnamen mit so wenig Zeichen wie möglich zu unterscheiden, habe ich ein wenig herumgespielt und festgestellt, dass das 22., 23. und 24. Zeichen des MD5-Hashs bis auf EINE Kollision eindeutig ist:
ddb
könnte fürHeathrow Terminals 1, 2, 3
so gut wie stehen fürDagenham Heathway
.Um auf die 11 Rohrleitungsnamen zu verweisen, verwende ich einfach eine hexadezimale Ziffer von 0 bis A.
Dann erstellte ich eine durch Kommas getrennte Liste der MD5-Hash-Teilzeichenfolgen mit den entsprechenden Zeilen der Röhre daneben. Aber ich habe
Heathrow Terminals 1, 2, 3
die Liste weggelassen, um die Kollision zu vermeiden.Beispiel:
fe538
bedeutet , dass unabhängig von Station wer md5'd Namen die Zeichen habenfe5
am 22., 23. und 24. Platz, läuft die Rohrleitungen bezeichnet durch3
und8
. BedeutungActon Town
verläuft RohrleitungenDistrict
undPiccadilly
.Dann habe ich eine einfache Funktion geschrieben, die die Eingabe überprüft. MD5 hasht es. Nimmt das 22., 23. und 24. Zeichen. Stimmt mit der Liste überein, die ich erstellt habe. Und zeigt die entsprechenden Röhrennamen. Mit der Erwartung von
ddb
Off-Course, die hartcodiert istPiccadilly
, wenn der angegebene String mit einem beginntH
.Bearbeitungen
array()
durch[]
für -5 Zeicheneval(gzinflate(base64_decode()))
für -309 Zeichen verwenden kannquelle
Python 2 ,
143014181416 BytesProbieren Sie es online!
Erläuterung Die Eingabe wird als Binärdarstellung (8-Bit-ASCII-Code für jeden Buchstaben des Eingabeworts) codiert, wenn das Eingabewort durch Leerzeichen rechts vervollständigt wird, wenn die Länge des Wortes kleiner als 26 ist. Ich habe bereits die gleiche Darstellung für vorgenommen alle möglichen Eingänge und finden Sie die minimalen Bits, die die Ausgänge unterscheiden. Der Code untersucht diese spezifischen Bits, um über die Ausgabe zu entscheiden.
quelle
s=(s+' '*22)[:26]
anstelle von gespeichert werdens+=' '*(26-len(s))
.n=0
einfügen und fetch: newline eingebenfor e in(input()+' '*26)[:26]:n=n*256+ord(e)
. Zwei weitere, indem Sie auchn=i=0
oben verwenden.SyntaxError: Non-ASCII character...
wenn ich es versuche) - möglicherweise wird ein Codierungsheader benötigt oder so.Jotlin 1.0 , 1539 Bytes
Einreichung
Code testen
quelle