Bei einer gegebenen E-Mail-Adresse geben das Ergebnis einer auf diese E-Mail-Adresse angewendeten Umwandlung und eine zweite E-Mail-Adresse die Ausgabe derselben auf die zweite E-Mail-Adresse angewendeten Umwandlung zurück.
Die E-Mail-Adressen haben alle die folgende Struktur:
Eine Zeichenfolge positiver Länge mit alphanumerischen Zeichen und höchstens einem .
(lokaler Teil), gefolgt von einem @
Symbol, gefolgt von einer Zeichenfolge positiver Länge mit alphanumerischen Sumbolen (Domäne), gefolgt von einem .
Symbol und einer letzten Zeichenfolge positiver Länge mit alphanumerischen Zeichen (die TLD).
Es gibt vier zulässige Transformationen:
- Identität (keine Änderung). (
[email protected] -> [email protected]
) - Rückgabe nur des lokalen Teils (alles vor dem
@
) unverändert ([email protected] -> a.b
). - Rückgabe des lokalen Teils aufgeteilt auf den,
.
falls vorhanden, wobei das erste Symbol jeder Hälfte groß geschrieben wird. ([email protected] -> A B
). - Rückgabe nur der Domain (alles zwischen dem
@
und dem endgültigen.
) unverändert. ([email protected] -> c
).
Wenn mehr als eine Transformation möglich ist, können Sie die Ausgabe einer der Möglichkeiten angeben. Leerzeichen am Anfang und Ende der Ausgabe spielen keine Rolle, aber in der Mitte (dh wenn Sie aufteilen a.b
, A B
sollte es nur ein Leerzeichen in der Mitte geben [und eine beliebige Zahl am Anfang und Ende der Ausgabe], aber wenn Sie aufteilen a.
, dann A
mit einer beliebigen Anzahl von Leerzeichen auf jeder Seite sind alle akzeptabel).
Beispiele ( input | output
):
[email protected], John Doe, [email protected] | Phillip Maini
[email protected], John Doe, [email protected] | Phillip Maini
[email protected], foo.bar, [email protected] | gee.whizz
[email protected], foo.bar, [email protected] | gEe.Whizz
[email protected], comedy, [email protected] | office
[email protected], Jones, [email protected] | A
[email protected], [email protected], [email protected] | [email protected]
[email protected], .jones, [email protected] | a.
[email protected], x, [email protected] | 3
[email protected], [email protected], [email protected] | [email protected]
[email protected], John Jones, [email protected] | 1in Thehand
[email protected], Chicken Soup, [email protected] | Fab
[email protected], lange, [email protected] | fat.so
[email protected], Lange, [email protected] | {fat.so, Fat So} # either acceptable
[email protected], chicken, [email protected] | {horse, pig} # either acceptable
Es gelten die üblichen Regeln und Lücken.
@
und final.
) zurückgegeben wird. Da der lokale Teil und die Domäne beide sindchicken
, ist es nicht eindeutig, ob es sich um die 2. oder 4. Transformation handeltA
[mit einem nachgestellten Leerzeichen] ist, dass die zweite EingabeJones
[mit einem führenden Leerzeichen] ist)?[email protected], Jones, [email protected]
istA
- wennjones
es übereinstimmt, bedeutet dies, dass der übereinstimmende Teil der Teil zwischen dem ersten Punkt und dem @ -Symbol ist. Das würde aber zu einer leeren Zeichenkette führen, da diea
vor dem ersten Punkt steht und nicht danach.Antworten:
Java 8,
254240236 Bytes-4 Bytes dank @LukeStevens .
Erläuterung:
Probieren Sie es hier aus.
quelle
(p.charAt(0)+"").toUpperCase()
statt verwendenCharacter.toUpperCase(p.charAt(0))
.(char)(p.charAt(0)&~32)
zuerst, aber das hat aufgrund des1in Thehand
Testfalls nicht funktioniert . Aber die Großschreibung als String ist in der Tat kürzer alsCharacter.toUpperCase
, also danke!Haskell , 208 Bytes
Probieren Sie es online!
Es ist traurig, dass ich 59 Bytes für die Neuerfindung ausgeben musste
split
(s
).Die Lösung erstellt eine Liste von Transformationen und gibt die erste zurück, die zum erwarteten Ergebnis führt.
quelle
Gelee , 40 Bytes
Präventiv danke an Erik den Outgolfer für das Bemerken des Missbrauchs
Œt
(Titel-Fall) und damitŒu1¦€K
vorbeiŒtK
-1 Byte dank Erik the Outgolfer (Neuordnung von
⁵⁸ç⁹¤Ŀ
toçµ⁵⁸Ŀ
)Ein volles Programm Mitnahmen
exampleEmail
,exampleOutput
,realEmail
und das Drucken des Sende .Probieren Sie es online!
Wie?
Führt alle vier Transformationen aus (plus eine Vorgänger-Transformation), findet die erste, die das Beispiel aus der ersten E-Mail ergibt, und wendet sie dann auf die zweite E-Mail an:
Anmerkungen:
Angenommen, die Eingabe exampleOutput entspricht genau der Ausgabe.
Der "Vorläufer" (das Ergebnis von Link 3) wird auf Übereinstimmung mit dem getestet
exampleOutput
, aber er wird nicht übereinstimmen, es sei denn, derselbeexampleOutput
ist eine Liste von Listen von Zeichen. Daher sollten die Eingaben wahrscheinlich in Anführungszeichen gesetzt werden (möglicherweise wird hier die Python-Formatierung verwendet), um die Möglichkeit zu vermeiden, sie als solche zu interpretieren.quelle
Python 2 , 135 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6), 145 Byte
Mit der aktuellen Syntax aufrufen, z
f('[email protected]')('Chicken Soup')('[email protected]')
Code-Snippet anzeigen
quelle
Mathematica, 217 Bytes
Probieren Sie es online!
quelle
Ruby ,
117106102 BytesProbieren Sie es online!
quelle
CJam, 42
Probieren Sie es online aus
Erläuterung:
quelle
PHP 7.1, 176 Bytes
Probieren Sie es online!
PHP <7.1, 180 Bytes
Versionen unter 7.1 müßten die Änderungen
[,$p,$q,$r]=$argv
zulist(,$p,$q,$r)=$argv
, Zugabe von 4 Bytes.quelle
GNU sed , 105 + 1 (r Flag) = 106 Bytes
Die ersten drei
s
Befehle prüfen für die Identität , lokalen Teil und Domain - Transformationen sind. Wenn eine Umwandlung zutrifft, wird sie auf die zweite E-Mail-Adresse angewendet, und die folgendens
Befehle schlagen fehl, weil das Eingabeformat fehlt.Probieren Sie es online!
Die lokale Teiltrennungstransformation (letzter
s
Befehl) ist in Bezug auf die Bytes am teuersten zu überprüfen. Daher habe ich sie am Ende platziert und angenommen, dass sie übereinstimmt (da die anderen zu diesem Zeitpunkt fehlgeschlagen sind), und bin direkt zu ihrer Anwendung übergegangen.quelle
Jelly , 43 Bytes
Probieren Sie es online!
quelle
ŒtK
funktionierenŒu1¦€K
, anstatt 3 zu sparen?Œl
?1in.thehand
würde nicht funktionierenŒtK
.str.title
).