Piega maiuscola tedesca


9

Data una stringa tedesca e un'indicazione di un caso (inferiore / superiore / titolo), piega la stringa in quel caso.

specificazioni

  1. L'input consisterà solo di a- zpiù äöüß-,.;:!?'"in maiuscolo e / o minuscolo.
  2. Il caso target può essere preso come qualsiasi tre valori univoci (specificare quali sono) di tipo coerente; tre caratteri o tre numeri o modelli a tre bit. (Altri formati non sono attualmente autorizzati a impedire "l'outsourcing" della risposta alla specifica del caso. Commenta se ritieni che dovrebbe essere consentito un formato aggiuntivo.)
  3. Titlecase significa tutto in maiuscolo tranne le lettere che seguono una lettera (le lettere sono a- zpiù äöüß).

Trabocchetti

  1. Quando ßdeve essere maiuscolo, deve esserlo . Alcuni built-in e librerie che non piegano maiuscole non lo fanno.

  2. Quando ßdeve essere il titolo, deve esserlo Ss. Alcuni built-in e librerie che non piegano maiuscole non lo fanno.

  3. sspuò essere presente nel testo e non deve mai essere convertito in ßo .

Esempi

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

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

Il caso del titolo die Räder sagen "ßß ss" für dich, wegen des Öls!
èDie Räder Sagen "Ssß Ss" Für Dich, Wegen Des Öls!


2
Quali sarebbero gli output per Ss? Inoltre, nell'input di esempio manca unss
Rod

@Rod SS Ss ss. Puoi dirmi perché non è chiaro?
Adám,


Sono autorizzato a rendere i tre valori univoci funzioni di Python? (vedi la mia risposta)
HyperNeutrino,

No, questo è esattamente ciò che intendeva prevenire specificando che i tre valori univoci devono essere caratteri, numeri o schemi di bit.
Adám,

Risposte:


6

Japt , 42 40 byte

Salvato 2 byte grazie a @Oliver

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

Accidenti, ci è voluto un po 'di sforzo. L'input è la stringa da convertire e un singolo carattere: umaiuscolo, vminuscolo, mmaiuscolo.

Provalo online!


Ti serve il }0?
Oliver,

@Oliver Sì, altrimenti ... aspetta, forse no ...
ETHproductions



3

Gelatina , 50 byte

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

Provalo online!

Programma completo.

Accidenti, ci è voluto molto tempo per giocare a golf ...

Argomento 1: String (potrebbe essere necessario eseguire l'escape)
Argomento 2: 1per maiuscole, 2per maiuscole e 3minuscole.


1

Clean , 649 279 275 274 246 byte

Sì, sono 123 122 94 byte di importazioni, che è già più lunga di ogni altra risposta.

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

Provalo online!

Definisce la funzione @, prendendo a Inte a UStringe restituendo a UString.
Convenientemente UString(il modo predefinito di Clean di gestire Unicode), è solo un alias di tipo per [Int]- che è un elenco di punti di codifica Unicode Intcontenenti i caratteri nella stringa.
Inconvenientemente , Text.Unicode.UCharè davvero lungo, e non posso import StdEnvperché le definizioni sono in StdCharconflitto con le definizioni in Text.Unicode.UChar(poiché non sono intese per l'uso insieme).

I tre valori sono 0, 1 e 2 per maiuscole, minuscole e maiuscole e minuscole.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.