ตัวพิมพ์เล็กแบบเยอรมัน


9

กำหนดสตริงภาษาเยอรมันและการบ่งชี้กรณี (ล่าง / บน / ชื่อเรื่อง), พับสตริงเพื่อกรณีที่

ข้อมูลจำเพาะ

  1. ข้อมูลที่ป้อนจะประกอบด้วยa- zบวกäöüß-,.;:!?'"ในตัวพิมพ์ใหญ่และ / หรือตัวพิมพ์เล็ก
  2. กรณีเป้าหมายอาจถูกนำมาใช้เป็นค่าที่ไม่ซ้ำกันสามค่า (โปรดระบุสิ่งที่เป็น) ของประเภทที่สอดคล้องกัน; ตัวอักษรสามตัวหรือตัวเลขสามตัวหรือรูปแบบสามบิต (ขณะนี้รูปแบบอื่นไม่ได้รับอนุญาตให้ป้องกัน "จ้าง" คำตอบของข้อมูลจำเพาะของเคสแสดงความคิดเห็นหากคุณคิดว่าควรอนุญาตรูปแบบเพิ่มเติม)
  3. Titlecase หมายถึงทุกอย่างเป็นตัวพิมพ์ใหญ่ยกเว้นตัวอักษรที่ตามหลังตัวอักษร (ตัวอักษรคือa- zบวกäöüß)

gotchas

  1. เมื่อความต้องการที่จะเป็นตัวพิมพ์ใหญ่มันจะต้องกลายเป็นß บิวด์อินตัวพิมพ์เล็กและตัวพิมพ์ใหญ่บางตัวไม่ทำเช่นนี้

  2. เมื่อßความต้องการที่จะ titlecase Ssมันจะต้องกลายเป็น บิวด์อินตัวพิมพ์เล็กและตัวพิมพ์ใหญ่บางตัวไม่ทำเช่นนี้

  3. ssอาจเกิดขึ้นในข้อความและไม่ควรที่จะแปลงหรือß

ตัวอย่าง

ตัวพิมพ์ใหญ่die Räder sagen "ßß ss" für dich, wegen des Öls!
คือDIE RÄDER SAGEN "ẞẞ SS" FÜR DICH, WEGEN DES ÖLS!

ตัวพิมพ์เล็ก die Räder sagen "ßß ss" für dich, wegen des Öls!
คือ die räder sagen "ßß ss" für dich, wegen des öls!

กรณีชื่อdie Räder sagen "ßß ss" für dich, wegen des Öls!
คือDie Räder Sagen "Ssß Ss" Für Dich, Wegen Des Öls!


2
สิ่งที่จะเป็นผลลัพธ์Ssหรือไม่ นอกจากนี้อินพุตตัวอย่างจะหายไปss
Rod

SS Ss ss@Rod คุณบอกฉันได้ไหมว่าทำไมจึงไม่ชัดเจน
อดัม


ฉันได้รับอนุญาตให้สร้างฟังก์ชั่นสามค่า Python ที่ไม่เหมือนใครหรือไม่ (ดูคำตอบของฉัน)
HyperNeutrino

ไม่นั่นคือสิ่งที่ต้องการป้องกันโดยการระบุว่าค่าที่ไม่ซ้ำกันสามค่าต้องเป็นอักขระตัวเลขหรือรูปแบบบิต
อดัม

คำตอบ:


6

Japt , 42 40 ไบต์

บันทึก 2 ไบต์ขอบคุณ @Oliver

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

ต๊ายที่ใช้ความพยายามค่อนข้างบาง อินพุตคือสตริงที่จะแปลงและอักขระเดี่ยว: uสำหรับตัวพิมพ์ใหญ่vสำหรับตัวพิมพ์เล็กสำหรับตัวพิมพ์mหัวเรื่อง

ทดสอบออนไลน์!


คุณต้องการ}0?
โอลิเวอร์

@Oliver ใช่มิฉะนั้นมันจะ ... รออาจจะไม่ ...
ETHproductions



3

เยลลี่ , 50 ไบต์

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

ลองออนไลน์!

โปรแกรมเต็มรูปแบบ

ว้าสิ่งนี้ใช้เวลาในการเล่นกอล์ฟมาก ...

อาร์กิวเมนต์ 1: สตริง (อาจจะต้องหนี)
อาร์กิวเมนต์ที่ 2: 1สำหรับพิมพ์ใหญ่2สำหรับกรณีชื่อ3สำหรับตัวพิมพ์เล็ก


1

ทำความสะอาด , 649 279 275 274 246 ไบต์

ใช่นั่นคือ123 122 94 ไบต์ของการนำเข้าซึ่งมีความยาวมากกว่าคำตอบอื่น ๆ ทั้งหมด

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

ลองออนไลน์!

กำหนดฟังก์ชั่น@พาIntและและกลับUString สะดวกสบาย(วิธีการจัดการค่าเริ่มต้นของ Clean ในการจัดการ Unicode) เป็นเพียงนามแฝงประเภทสำหรับ- ซึ่งเป็นรายการที่มีโค้ดพอยน์แบบผสมของอักขระในสตริง ลำบาก , มันนานและฉันไม่สามารถเพราะคำจำกัดความในความขัดแย้งกับคำจำกัดความใน(เช่นที่พวกเขาไม่ได้มีไว้สำหรับการใช้งานร่วมกัน)UString
UString[Int]Int
Text.Unicode.UCharimport StdEnvStdCharText.Unicode.UChar

ค่าสามค่าคือ 0, 1 และ 2 สำหรับตัวพิมพ์ใหญ่, ล่างและหัวเรื่อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.