Składanie niemieckiego

9

Biorąc pod uwagę niemiecki ciąg i oznaczenie sprawy (dolny / górny / tytuł), złóż ciąg do tej sprawy.

Dane techniczne

  1. Dane wejściowe będą się składać tylko z a- zplus äöüß-,.;:!?'"wielkimi i / lub małymi literami.
  2. Przypadek docelowy można przyjąć jako dowolne trzy unikalne wartości (proszę określić, jakie są) spójnego typu; trzy znaki, trzy cyfry lub trzy wzorce bitowe. (Inne formaty są obecnie niedozwolone, aby zapobiec „outsourcingowi” odpowiedzi na specyfikację sprawy. Skomentuj, jeśli uważasz, że dodatkowy format powinien być dozwolony.)
  3. Titlecase oznacza wielkie litery wszystko oprócz liter następujących po literze (litery to a- zplus äöüß).

Gotchas

  1. Kiedy ßmusi być pisana wielkimi literami, musi być . Niektóre wbudowane w biblioteki i wbudowane biblioteki nie robią tego.

  2. Kiedy ßtrzeba mieć tytuł, musi się stać Ss. Niektóre wbudowane w biblioteki i wbudowane biblioteki nie robią tego.

  3. ssmogą występować w tekście i nigdy nie powinny być konwertowane na ßlub .

Przykłady

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

Małe litery die Räder sagen "ßß ss" für dich, wegen des Öls!
to die räder sagen "ßß ss" für dich, wegen des öls!

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

Adám
źródło
2
Jakie byłyby wyniki Ss? Ponadto w przykładowym danych wejściowych brakujess
Rod
@Rod SS Ss ss. Czy możesz mi powiedzieć, dlaczego jest to niejasne?
Adám
Powiązane
Poke
Czy mogę tworzyć trzy unikalne wartości funkcji Pythona? (patrz moja odpowiedź)
HyperNeutrino,
Nie, właśnie tego zamierzano uniknąć, określając, że trzy unikalne wartości muszą być znakami, liczbami lub wzorami bitowymi.
Adám

Odpowiedzi:

6

Japt , 42 40 bajtów

Zaoszczędzono 2 bajty dzięki @Oliver

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

Uff, to wymagało sporo wysiłku. Dane wejściowe to ciąg znaków do konwersji i pojedynczy znak: uwielkie litery, vmałe litery, mtytuł.

Przetestuj online!

ETHprodukcje
źródło
Potrzebujesz }0?
Oliver
@Oliver Tak, w przeciwnym razie będzie ... czekać, może nie ...
ETHprodukcje
4

Python 3 , 92 bajty

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

Wypróbuj online!

HyperNeutrino
źródło
O nie! Niestety to znaczna część wyzwania.
Erik the Outgolfer
@EriktheOutgolfer naprawiony, dzięki
HyperNeutrino
3

Galaretka , 50 bajtów

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

Wypróbuj online!

Pełny program

Uff, dużo czasu zajęło golfowi ...

Argument 1: Ciąg znaków (może wymagać zmiany znaczenia)
Argument 2: 1dla wielkich liter, 2dla tytułów, 3dla małych liter.

Erik the Outgolfer
źródło
1

Czysty , 649 279 275 274 246 bajtów

Tak, to 123 122 94 bajty importu, co jest już dłuższe niż co drugą odpowiedź.

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))

Wypróbuj online!

Definiuje funkcję @, biorąc an Inti a UString, i zwracając a UString.
Dogodnie UString(domyślny sposób obsługi kodu Unicode przez Clean) jest tylko aliasem typu [Int]- dla listy Intzawierającej znaki kodowe Unicode znaków w ciągu.
Niewygodnie , Text.Unicode.UCharjest naprawdę długi i nie mogę, import StdEnvponieważ definicje są StdCharsprzeczne z definicjami w Text.Unicode.UChar(ponieważ nie są przeznaczone do wspólnego użytku).

Te trzy wartości to 0, 1 i 2 dla wielkości górnej, dolnej i tytułu.

Obrzydliwe
źródło