Німецький футляр


9

Враховуючи німецький рядок та вказівку на регістр (нижній / верхній / заголовок), складіть рядок до цього випадку.

Технічні умови

  1. Введення буде складатися лише з a- zплюс äöüß-,.;:!?'"у верхньому та / або малому регістрі.
  2. Цільовий випадок може сприйматися як будь-які три унікальні значення (будь-ласка, вкажіть, що вони є) послідовного типу; або три символи, або три цифри, або три бітні візерунки. (Інші формати наразі заборонені, щоб запобігти "аутсорсингу" відповіді на специфікацію випадку. Прокоментуйте, якщо ви вважаєте, що слід дозволити додатковий формат.)
  3. Заголовок означає великі регістри всього, крім букв, які слідують за літерою (букви a- zплюс äöüß).

Gotchas

  1. Коли ßпотрібно мати великі регістри, це має стати . Деякі вбудовані корпуси та бібліотеки цього не роблять.

  2. Коли ßпотрібно бути заголовком, він повинен стати 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. Чи можете ви сказати мені, чому це незрозуміло?
Адам


Чи дозволено мені зробити три унікальні значення функції 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))

Спробуйте в Інтернеті!

Визначає функцію @, приймаючи a Intі a UStringі повертаючи a UString.
Зручно, що UString(очищення за замовчуванням спосіб обробки Unicode) - це лише псевдонім типу [Int]- це список, Intщо містить кодові точки Unicode символів у рядку.
Незручно , Text.Unicode.UCharце дійсно довго, і я не можу, import StdEnvтому що визначення StdCharсуперечать визначень у Text.Unicode.UChar(оскільки вони не призначені для спільного використання).

Три значення - 0, 1 і 2 для верхнього, нижнього та заголовкового.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.