Bahasa Jerman flip-case

9

Diberikan string Jerman dan indikasi case (bawah / atas / judul), lipat string ke case itu.

Spesifikasi

  1. Input hanya terdiri dari a- zplus äöüß-,.;:!?'"dalam huruf besar dan / atau huruf kecil.
  2. Kasus target dapat dianggap sebagai tiga nilai unik (harap jelaskan apa itu) dari jenis yang konsisten; baik tiga karakter, atau tiga angka, atau tiga pola bit. (Format lain saat ini tidak diperbolehkan untuk mencegah "outsourcing" jawaban untuk spesifikasi kasus. Berkomentar jika Anda berpikir bahwa format tambahan harus diizinkan.)
  3. Titlecase berarti huruf besar semuanya kecuali huruf yang mengikuti huruf (hurufnya adalah a- zplus äöüß).

Gotcha

  1. Ketika ßperlu huruf besar, itu harus menjadi . Beberapa built-in dan perpustakaan case-folding tidak melakukan ini.

  2. Ketika ßperlu titlecase, itu harus menjadi Ss. Beberapa built-in dan perpustakaan case-folding tidak melakukan ini.

  3. ssdapat terjadi dalam teks, dan tidak boleh dikonversi ke ßatau .

Contohnya

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

Huruf kecil die Räder sagen "ßß ss" für dich, wegen des Öls!
adalah die räder sagen "ßß ss" für dich, wegen des öls!

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

Adm
sumber
2
Untuk apa outputnya Ss? Juga, input contoh tidak adass
Rod
@Rod SS Ss ss. Bisakah Anda memberi tahu saya mengapa itu tidak jelas?
Adám
Terkait
Poke
Apakah saya diizinkan membuat tiga nilai unik fungsi Python? (lihat jawaban saya)
HyperNeutrino
Tidak, itulah yang dimaksudkan untuk mencegah dengan menetapkan bahwa tiga nilai unik harus berupa karakter, angka atau pola bit.
Adám

Jawaban:

6

Japt , 42 40 byte

Disimpan 2 byte berkat @Oliver

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

Wah, itu butuh sedikit usaha. Input adalah string untuk dikonversi, dan satu karakter: uuntuk huruf besar, vuntuk huruf kecil, muntuk kasus judul.

Uji secara online!

Produksi ETH
sumber
Apakah Anda memerlukannya }0?
Oliver
@ Lebih Ya, kalau tidak ... tunggu, mungkin tidak ...
ETHproduksi
4

Python 3 , 92 byte

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

Cobalah online!

HyperNeutrino
sumber
Oh tidak! Sayangnya, itu adalah bagian penting dari tantangan.
Erik the Outgolfer
@EriktheOutgolfer diperbaiki, terima kasih
HyperNeutrino
3

05AB1E , 23 byte

Menggunakan 0 = lebih rendah, 1 = atas, 2 = judul

•^ŠX•4ôçIiR}`:"lu™"¹è.V

Cobalah online!

Emigna
sumber
3

Jelly , 50 byte

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

Cobalah online!

Program lengkap.

Fiuh, ini butuh banyak waktu untuk golf ...

Argumen 1: String (mungkin perlu diloloskan)
Argumen 2: 1untuk huruf besar, 2untuk kasus judul, 3untuk huruf kecil.

Erik the Outgolfer
sumber
1

Bersih , 649 279 275 274 246 byte

Ya, itu 123 122 94 94 byte impor, yang sudah lebih lama dari setiap jawaban lainnya.

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

Cobalah online!

Menentukan fungsi @, mengambil a Intdan a UString, dan mengembalikan a UString.
Mudah, UString(cara default Clean menangani Unicode), hanyalah jenis alias untuk [Int]- yang merupakan daftar yang Intberisi titik kode unicode karakter dalam string.
Nyaman , Text.Unicode.UCharsangat panjang, dan saya tidak bisa import StdEnvkarena definisi yang StdCharbertentangan dengan definisi di Text.Unicode.UChar(karena mereka tidak dimaksudkan untuk digunakan bersama).

Tiga nilai tersebut adalah 0, 1, dan 2 untuk huruf Besar, Kecil, dan Judul.

Suram
sumber