Einführung
In Android Studio und anderen IDEs gibt es Code-Vervollständigungen, um das effiziente Einfügen von Code zu unterstützen (insbesondere wenn die Namen der Klassen oder Methoden so ausführlich sind), wie in der Abbildung unten dargestellt.
Es gibt leicht unterschiedliche Logiken zwischen IDEs, um zu bestimmen, welche Klassen, Methoden und Variablen vorgeschlagen werden sollen, aber ansonsten sind sie üblich: Die Eingabe der Anfangsbuchstaben jedes Wortes und die Kennung, die diesen Anfangsbuchstaben entspricht, werden vorgeschlagen.
Herausforderung
Schreiben Sie in dieser Herausforderung ein Programm oder eine Funktion, die zwei Zeichenfolgen empfängt, nämlich input
und identifier
bestimmen Sie, ob die Zeichenfolge mit der identifier
übereinstimmt input
.
Wir teilen uns identifier
in Wörter auf, in denen:
- Auf einen Kleinbuchstaben folgt ein Großbuchstabe (
"SplitHere" -> "Split", "Here"
). - Auf einen Großbuchstaben folgen ein Großbuchstabe und ein Kleinbuchstabe (
"SPLITHere" -> "SPLIT", "Here"
) oder - Es gibt eine Zahl oder einen Unterstrich
_
("SPLIT_HERE" -> "SPLIT", "HERE"
).
Wenn dies immer noch nicht klar genug ist, ist hier der reguläre Ausdruck, der die Bedingung für die Aufteilung darstellt : (?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|[_0-9]
. Hier einige Beispiele:
theWord_Example
, In denen 3 Worte (the
,Word
,Example
) gefunden werden können.THEWORD2EXAMPLE
, in dem nur 2 Wörter (THEWORD
,EXAMPLE
) gefunden werden können (weilTHEWORD
es sich um eine Reihe von Großbuchstaben handelt und dies auch der Fall istEXAMPLE
).THEWordEXAMPLE3
, In denen 3 Worte (THE
,Word
,Example
) gefunden werden (Word
gilt als hier ein separates Wort sein).THEWORDEXAMPLEFOUR
, in dem nur 1 Wort (THEWORDEXAMPLEFOUR
) gefunden werden kann (die gesamte Folge von Großbuchstaben).
Zu diesem Zweck verwenden wir hier eine vereinfachte Version. In Wirklichkeit ist die Logik weitaus komplexer. In dieser Version gibt es nur zwei Regeln:
Wenn es
input
nur aus Kleinbuchstaben besteht,identifier
stimmt ein mit deminput
nur überein, wenn es eine Aufteilunginput
in Teilzeichenfolgen gibt, dass für jede Teilzeichenfolge ein Wort amidentifier
Anfang mit dieser Teilzeichenfolge in genau dieser Reihenfolge steht.Beispieleingabe:
sbo
Truthy Fällen: , , (UPDATE)
SQLiteBindOrColumnIndexOutOfRangeException
SparseBooleanArray
StringIndexOutOfBoundException
Falsche Fälle:
SeekBar
(fehlto
), (das steht nicht am Anfang eines Wortes)StatusBarNotification
o
Wenn
input
Großbuchstaben enthalten sind,input
muss bei Anwendung von Regel 1 vor jedem Großbuchstaben eine Aufteilung vorgenommen werden.Beispieleingabe:
sbO
Wahrheitsfälle:
SQLiteBindOrColumnIndexOutOfRangeException
Falsche Fälle: (das muss am Anfang eines Wortes stehen), (falsche Reihenfolge)
SparseBooleanArray
O
StringIndexOutOfBoundException
I / O.
Eingabe : zwei Zeichenfolgen, eine für input
und eine für identifier
. Sie können davon ausgehen , dass die Regex [A-Za-z]+
Matches input
und die regex [A-Za-z0-9_]
Matches identifier
.
Ausgabe : einer der wahrheitsgemäßen oder falschen Werte. Sie können wählen, welcher Wert als wahr und was als falsch zurückgegeben werden soll, aber Ihre Wahl muss in allen Fällen konsistent sein. Zum Beispiel können Sie zurückkehren 1/0
, true/false
, π/e
oder was auch immer, aber sie müssen das gleiche in allen Fällen bleiben.
Testfälle
Jede Zeile besteht aus zwei Zeichenfolgen, nämlich input
und identifier
.
Wahrheitsfälle:
"sbo" "SparseBooleanArray"
"sbo" "StringIndexOutOfBoundException"
"sbo" "SQLiteBindOrColumnIndexOutOfRangeException"
"sbO" "SQLiteBindOrColumnIndexOutOfRangeException"
"Al" "ArrayList"
"AL" "ArrayList"
"Al" "ALARM_SERVICE"
"As" "ALARM_SERVICE"
"AS" "ALARM_SERVICE"
"SD" "SQLData"
"SqD" "SQLData"
"SqlD" "SQLData"
"SqDa" "SQLData"
"the" "theWord_Example"
"the" "THEWORD2EXAMPLE"
"the" "THEWordEXAMPLE3"
"the" "THEWORDEXAMPLEFOUR"
"thw" "theWord_Example"
"thw" "THEWordEXAMPLE3"
"te" "theWord_Example"
"te" "THEWORD2EXAMPLE"
"te" "THEWordEXAMPLE3"
Falsche Fälle:
"sbo" "SeekBar"
"sbo" "StatusBarNotification"
"sbO" "StringIndexOutOfBoundException"
"sbO" "SparseBooleanArray"
"AL" "ALARM_SERVICE"
"ASE" "ALARM_SERVICE"
"SQD" "SQLData"
"SqLD" "SQLData"
"SLD" "SQLData"
"SQDt" "SQLData"
"SQDA" "SQLData"
"thw" "THEWORD2EXAMPLE"
"thw" "THEWORDEXAMPLEFOUR"
"te" "THEWORDEXAMPLEFOUR"
Gewinnkriterien
Dies ist ein Code-Golf , so dass der kürzeste Code jeder Sprache gewinnt. Standardlücken sind nicht zulässig.
quelle
"SQLData", "SQLData"
ist falsch?"sqldata", "SQLData"
jedoch wahr."sbo" "StringIndexOutOfBoundException"
passen*S*tringIndexOutOf*Bo*undException
?Antworten:
Python 2 ,
239227 BytesProbieren Sie es online aus!
quelle
JavaScript (ES6), 177 Byte
Erwartet
(identifier)(input)
.Probieren Sie es online aus!
quelle