Case-Fold Deutsch

9

Falten Sie die Zeichenfolge mit einer deutschen Zeichenfolge und einer Angabe eines Falls (unterer / oberer / Titel) zu diesem Fall.

Spezifikationen

  1. Die Eingabe besteht nur aus a- zplus äöüß-,.;:!?'"in Groß- und / oder Kleinbuchstaben.
  2. Der Zielfall kann als drei beliebige eindeutige Werte (bitte geben Sie an, was sie sind) eines konsistenten Typs angenommen werden. entweder drei Zeichen oder drei Zahlen oder drei Bitmuster. (Andere Formate dürfen derzeit das "Auslagern" der Antwort auf die Fallspezifikation nicht verhindern. Kommentieren Sie, wenn Sie der Meinung sind, dass ein zusätzliches Format zulässig sein sollte.)
  3. Titelbuchstabe bedeutet alles in Großbuchstaben außer Buchstaben, die auf einen Buchstaben folgen (Buchstaben sind a- zplus äöüß).

Fallstricke

  1. Wenn ßes in Großbuchstaben geschrieben werden muss, muss es werden . Einige integrierte Funktionen und Bibliotheken zum Zusammenlegen von Groß- und Kleinschreibung tun dies nicht.

  2. Wenn ßTitelkoffer sein muss, muss es werden Ss. Einige integrierte Funktionen und Bibliotheken zum Zusammenlegen von Groß- und Kleinschreibung tun dies nicht.

  3. sskann im Text vorkommen und sollte niemals in ßoder konvertiert werden .

Beispiele

Großbuchstaben die Räder sagen "ßß ss" für dich, wegen des Öls!
istDIE RÄDER SAGEN "ẞẞ SS" FÜR DICH, WEGEN DES ÖLS!

Kleinbuchstaben die Räder sagen "ßß ss" für dich, wegen des Öls!
ist die räder sagen "ßß ss" für dich, wegen des öls!

Titelfall die Räder sagen "ßß ss" für dich, wegen des Öls!
istDie Räder Sagen "Ssß Ss" Für Dich, Wegen Des Öls!

Adam
quelle
2
Wofür wären die Ausgänge Ss? Außerdem fehlt der Beispieleingabe einss
Rod
@ Rod SS Ss ss. Kannst du mir sagen, warum das unklar ist?
Adám
Verwandte
Poke
Darf ich die drei eindeutigen Werte für Python-Funktionen festlegen? (siehe meine Antwort)
HyperNeutrino
Nein, genau das sollte verhindert werden, indem angegeben wird, dass die drei eindeutigen Werte entweder Zeichen, Zahlen oder Bitmuster sein müssen.
Adám

Antworten:

6

Japt , 42 40 Bytes

2 Bytes dank @Oliver gespeichert

r'ßQ=7838d)u mV,@W¦vW=X ?Xv :X¥Q?"Ss":Xu

Puh, das hat einige Mühe gekostet. Eingabe ist die zu konvertierende Zeichenfolge und ein einzelnes Zeichen: ufür Großbuchstaben, vfür Kleinbuchstaben, mfür Titelbuchstaben.

Testen Sie es online!

ETH-Produktionen
quelle
Benötigen Sie das }0?
Oliver
@ Oliver Ja, sonst wird es ... warten, vielleicht nicht ...
ETHproductions
4

Python 3 , 92 Bytes

lambda s,c:[str.lower,str.upper,str.title][c](s.replace("ẞ","ß").replace("ß"*c,"ẞ"*c))

Probieren Sie es online aus!

HyperNeutrino
quelle
Ach nein! Leider ist das ein wesentlicher Teil der Herausforderung.
Erik der Outgolfer
@EriktheOutgolfer behoben, danke
HyperNeutrino
3

Gelee , 50 Bytes

⁽ñWỌ”ß;y⁸Œu
Ñ⁾SsÇ⁼?€1¦”ß
Œl
Çe€“Ġẹṇṣ‘ỌÇ;Øa¤Œg⁸ṁ⁹Ŀ€

Probieren Sie es online aus!

Volles Programm.

Puh, das hat viel Zeit zum Golfen gebraucht ...

Argument 1: Zeichenfolge (muss möglicherweise maskiert werden)
Argument 2: 1für Großbuchstaben, 2für Titel- und 3Kleinbuchstaben.

Erik der Outgolfer
quelle
1

Sauber , 649 279 275 274 246 Bytes

Ja, das sind 123 122 94 Byte Importe, was bereits länger ist als jede andere Antwort.

from StdList import++,map,flatten
import StdLib,StdInt,StdBool,Text.Unicode,Text.Unicode.UChar
$ =fromInt
? =isAlpha
^ =toUpper
@0s=map^s
@1s=map toLower s
@2s=flatten(map(\[h:t]=if($223==h||h> $999)[$83,$115][^h]++ @1t)(groupBy(\a b= ?a== ?b)s))

Probieren Sie es online aus!

Definiert die Funktion @, nimmt ein Intund ein UStringund gibt ein zurück UString.
Praktischerweise ist UString(die Standardmethode von Clean zur Behandlung von Unicode) nur ein Typalias für [Int]- dies ist eine Liste, Intdie Unicode-Codepunkte der Zeichen in der Zeichenfolge enthält.
Ungünstig , Text.Unicode.UCharist wirklich lang, und ich kann es nicht , import StdEnvweil die Definitionen in StdCharKonflikt mit den Definitionen in Text.Unicode.UChar(da sie nicht für die Verwendung zusammen bestimmt sind).

Die drei Werte sind 0, 1 und 2 für Groß-, Klein- und Titel.

Οurous
quelle