Eingang
Eine Zeichenfolge mit druckbaren ASCII-Zeichen, zum Beispiel:
This is an example string.
Ausgabe
Fügen Sie für jeden Konsonanten ( BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz
), auf den kein Vokal ( AEIOUaeiou
) folgt , den letzten Vokal davor in Kleinbuchstaben hinzu.
Konsonanten vor dem ersten Vokal bleiben unverändert :
Thisi isi ana examapale seterinigi.
Testfälle
AN EXAMPLE WITH A LOT UPPERCASE (plus some lowercase)
=> ANa EXAMaPaLE WITiHi A LOTo UPuPEReCASE (pelusu some lowerecase)
And here comes a **TEST** case with 10% symbols/numbers(#)!
=> Anada here comese a **TESeTe** case witihi 10% siyimiboloso/numuberese(#)!
This is an example string.
=> Thisi isi ana examapale seterinigi.
abcdefghijklmnopqrstuvwxyz
=> abacadefegehijikiliminopoqorosotuvuwuxuyuzu
A pnm bnn
=> A panama banana
Tell me if you need more test cases!
=> Telele me ifi you neede more tesete casese!
Wertung
Da dies Codegolf ist , gewinnt die Antwort mit der niedrigsten Byteanzahl in jeder Sprache (keine Antwort wird akzeptiert).
A pnm bnn
!Antworten:
Netzhaut , 48 Bytes
Probieren Sie es online! Erläuterung: Der Lookahead sucht nach einem Punkt, auf den kein Vokal folgt, während der Lookbehind nach einem unmittelbar vorhergehenden Konsonanten und einem vorherigen Vokal sucht, die dann in Kleinbuchstaben eingefügt werden.
quelle
JavaScript (ES6),
108105 Bytes(3 Bytes dank @Shaggy gespeichert.)
Sucht nach Vokalen oder nach Konsonanten ohne folgenden Vokal:
(Wir müssen nicht explizit nach Konsonanten suchen, da Vokale auf der Basis von ausgeschlossen werden
/[aeiou]|...
.)Vokale werden in gespeichert
v
und Konsonanten ohne folgenden Vokalv
eingefügt:(Falls
r[1]
vorhanden, haben wir einen Konsonanten plus Nicht-Vokal gefunden.)Wenn nichts geändert wurde, geben wir die Eingabe zurück. Andernfalls greifen wir auf die ersetzte Zeichenfolge zurück.
Code-Snippet anzeigen
quelle
s=>s.replace(/[aeiou][^a-z]*([a-z](?![aeiou]))+/gi,s=>s.replace(/(?!^)./g,a=>a+s[0].toLowerCase()))
Ich kann keine Probleme mit Folgen von Nicht-Buchstaben haben(s+=' ')
sollte ein paar Bytes sparen.Python 2 ,
134119 BytesProbieren Sie es online!
EDIT: 15 Bytes danke an Lynn
quelle
<vowels>.count
.Standard ML ,
225223 BytesProbieren Sie es online!
Weniger golfen:
Probieren Sie es online!
quelle
it
und die Verwendung des$
Variablennamens.it
, bin aber noch nicht dazu gekommen.sed 4.2.2 , 64 Bytes
Probieren Sie es online!
quelle
Perl 5,
686759 BytesHier ist ein großartiges Beispiel für die Nützlichkeit von
\K
und ich kann nicht glauben, dass ich über diese Funktion nichts wusste, bevor Dom Hastings darauf hingewiesen hat.Ich war nicht in der Lage, mit nur der Verwendung das richtige Verhalten zu erzielen
s///g
, daher scheint eine tatsächliche Schleife notwendig zu sein. (Es ist möglich, dass die richtige Verwendung einer Look-Behind-Behauptung ohne eine explizite funktioniertwhile
- aber ich habe es nicht gefunden.)quelle
[aeiou])
der Variablen: Probieren Sie es online aus!JavaScript ES6, 115 Byte
Spart 8 Bytes dank @ETHProductions
Ich habe es geschafft, dies mehr in den Prozess des Golfspiels O_o aufzublasen, aber es behebt auch einen Fehler
quelle
JavaScript,
8882 BytesFertig mit einem einzelnen regulären Ausdruck:
Originalversion (88 Bytes):
Aktualisierte Version (82 Bytes) nach einem Blick auf Neils regulären Ausdruck :
quelle
Japt
-P
, 28 BytesProbieren Sie es online!
Ausgepackt und wie es funktioniert
Die
ó
Funktion gewinnt jede Art von Regexen.quelle
JavaScript (Node.js) ,
146143132127125 ByteProbieren Sie es online!
quelle
Perl 6 ,
75 73 7169 BytesVersuch es
Versuch es
Versuch es
Versuch es
Erweitert:
quelle
Python 3 , 125 Bytes
Probieren Sie es online!
Mit Python 3.6 können wir F-Strings (ab) verwenden , um unseren Satz von Vokalen (und für vier weitere gespeicherte Zeichen den Beginn einer invertierten Regex-Zeichenklasse) kostengünstig wiederzuverwenden (ein
f
Präfix für jeden String, dann{v}
nach Bedarf anstelle des'+v+'
Sie müssten mit Verkettung, oder[^aeiouAEIOU
Sie würden buchstäblich einfügen.Der reguläre Ausdruck, der keinen Zeichen, sondern nur einer Position entspricht, vermeidet Probleme mit den nicht überlappenden Übereinstimmungen, die normale reguläre Ausdrücke erfordern, und beseitigt die Notwendigkeit, einen Teil der Übereinstimmung rückzuverweisen. Alles, wofür wir das Match-Objekt verwenden, ist, den Slice-Index abzurufen, mit dem wir den vorherigen Vokal finden.
Teilweise entgolft, wäre es so etwas wie:
quelle
TSQL, 500 Bytes
Die Tabelle
i
wird für die Eingabe verwendetquelle
SWI-Prolog, 593 Bytes
Verwendet nur eingebaute Prädikate (ohne Regex- oder Listenbibliothek).
Verwendung:
quelle
Haskell ,
142.130BytesProbieren Sie es online!
Die Initiale
""&
ist eine Teilanwendung der(&)
später definierten Funktion und ist so seltsam platziert, dass TIO die Bytes zählt""&
, aber nicht die Bytes, die in einem vollständigen Programm benötigt würden, um diese einem beliebigen benannten Wert zuzuweisen.Weniger golfen:
Es sollte wirklich einen Weg geben, dies mit einer Falte präziser zu machen, als mit einer Rekursion, aber ich konnte es nicht herausfinden.
quelle
f
nicht im Body erscheint: Probieren Sie es online aus!v = (
und Sie könneng
einen Infix-Operator definieren .g _""=""
auf die letzte Position setzen, wird ein Byteg _ x=x
gespeichert : (zwei Bytes, wenn Sie nach Laikoni zu infix wechseln).""&
, um daraus eine Funktion zu machen.05AB1E , 34 Bytes
Probieren Sie es online!
Ich nehme das zurück Ich kann nur 3 Bytes von dieser Monstrosität rasieren ... Ich denke, ich könnte den Booleschen nach unten rasieren, aber es MUSS 3 Fälle geben. 1 für Vokale. 1 für Konsonanten. 1 für den Fall, dass eine Ziffer / ein Symbol existiert.
quelle
Powershell, 104 Bytes
basierend auf Neils regulärem Ausdruck .
Speichern Sie es als
get-rememebere.ps1
. Skript zum Testen:quelle
$t
. Relevanter Meta-Beitrag: codegolf.meta.stackexchange.com/a/8731/78123Rot , 276 Bytes
Probieren Sie es online!
Lesbar:
quelle
Yabasic , 180 Bytes
Ein vollständiges Programm, das Eingaben von STDIN übernimmt und an STDOUT ausgibt
Probieren Sie es online!
quelle