Vaka katlama Almanca


9

Bir Alman dizesi ve bir vaka göstergesi (alt / üst / başlık) verildiğinde, dizeyi bu duruma katlayın.

Özellikler

  1. Giriş yalnızca a- zartı äöüß-,.;:!?'"büyük ve / veya küçük harflerden oluşacaktır .
  2. Hedef durum, tutarlı türde üç benzersiz değer (lütfen ne olduklarını belirtin) olarak alınabilir; üç karakter veya üç sayı veya üç bit deseni. (Diğer biçimlere şu anda vaka spesifikasyonunun cevabının "dış kaynak kullanımını" önlemesine izin verilmemektedir. Başka bir biçime izin verilmesi gerektiğini düşünüyorsanız yorum yapın.)
  3. Titlecase, bir harfi izleyen harfler (harfler a- zartıdır äöüß) dışında her şey için büyük harf anlamına gelir .

Sorunlar

  1. Ne zaman ßihtiyaçları büyük harf olması için, haline gelmelidir . Bazı vaka katlama yerleşik ve kütüphaneleri bunu yapmaz.

  2. Ne zaman ßihtiyaçları İlk harfler büyük olması için, haline gelmelidir Ss. Bazı vaka katlama yerleşik ve kütüphaneleri bunu yapmaz.

  3. ssmetinde oluşabilir ve asla ßveya biçimine dönüştürülmemelidir .

Örnekler

Büyük harf die Räder sagen "ßß ss" für dich, wegen des Öls!
olduğuDIE RÄDER SAGEN "ẞẞ SS" FÜR DICH, WEGEN DES ÖLS!

Küçük harf die Räder sagen "ßß ss" für dich, wegen des Öls!
olduğu die räder sagen "ßß ss" für dich, wegen des öls!

Başlık durum die Räder sagen "ßß ss" für dich, wegen des Öls!
olduğunuDie Räder Sagen "Ssß Ss" Für Dich, Wegen Des Öls!


2
Çıktılar ne için olurdu Ss? Ayrıca, örnek girişte eksikss
Rod

@ Çubuk SS Ss ss. Bunun neden belirsiz olduğunu söyleyebilir misiniz?
Ocak'ta


Python işlevlerinin üç benzersiz değerini yapma iznim var mı? (cevabımı gör)
HyperNeutrino

Hayır, üç benzersiz değerin karakter, sayı veya bit kalıbı olması gerektiğini belirterek tam olarak önlemeyi amaçlayan budur.
Adam

Yanıtlar:


6

Japt , 42 40 bayt

@Oliver sayesinde 2 bayt kaydedildi

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

Vay canına, bu biraz çaba gerektirdi. Girdi dönüştürülecek dize ve tek bir karakterdir: ubüyük harf, vküçük harf, mbaşlık durumu için.

Çevrimiçi test edin!


İhtiyacınız var }0mı?
Oliver

@Oliver Evet, aksi halde ... bekler, belki de olmaz ...
ETHproductions



3

Jöle , 50 bayt

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

Çevrimiçi deneyin!

Tam program.

Vay be, bu golf için çok zaman aldı ...

Argüman 1: Dize (kaçması gerekebilir)
Argüman 2: 1büyük harf için, büyük harf 2için, 3küçük harf için.


1

Temiz , 649 279 275 274 246 bayt

Evet, bu 123 122 94 baytlık ithalat, zaten diğer tüm cevaplardan daha uzun.

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

Çevrimiçi deneyin!

A ve a @alarak Intve a UStringdöndürerek işlevi tanımlar UString.
Uygun şekilde, UString(Clean'in Unicode'u varsayılan olarak işlemesi), dizede yer alan karakterlerin unicode kod noktalarını içeren [Int]bir liste diğer adıdır Int.
Rahatsız edici , Text.Unicode.UChargerçekten uzun ve yapamam import StdEnvçünkü tanımlarla StdCharçelişen tanımlar Text.Unicode.UChar(birlikte kullanılmaları amaçlanmadığı için).

Üst, Alt ve Başlık durumu için üç değer 0, 1 ve 2'dir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.