22 ОКТЯБРЯ ЯВЛЯЕТСЯ МЕЖДУНАРОДНЫМ ДЕНЬМ ЗАМКА КАПСОВ ! К сожалению, НЕКОТОРЫЕ НЕ ПРИЗНАЮТ СЛАВУ ВСЕМОГУЩЕЙ ЗАМКИ. Они говорят, что это выглядит "отвратительно" или "как кричать" или какая-то бессмыслица. ЧТОБЫ СООТВЕТСТВОВАТЬ ЭТИМ ЯВНЫМ ИЛЛОГИЧЕСКИМ И БЕЗУМНЫМ ЖАЛОБАМ, ПОЖАЛУЙСТА, НАПИШИТЕ МНЕ ПРОГРАММУ, КОТОРАЯ ВКЛЮЧАЕТ НОРМАЛЬНЫЙ ТЕКСТ В «ЧУВСТВИТЕЛЬНЫЙ» ИЛИ «РАЗУМНЫЙ» ТЕКСТ, ЧТОБЫ СДЕЛАТЬ ЖАЛОПУ ОСТАНОВИТЬ ЖАЛОБУ.
Описание
Входными и выходными данными для вашего решения будут строки, содержащие только печатные символы ASCII.
Входная строка будет содержать ноль или более заглавных букв . A Caps Lock запуска (или CLR , для краткости) определяется следующим образом :
CLR не должен содержать строчных букв (
a-z
), кроме как в качестве первого символа слова .- Слово , для целей этой задачи, представляет собой последовательность не-пространств. Таким образом,
PPCG
,correcthorsebatterystaple
иjkl#@_>00()@#__f-023\f[
все это считается слово s.
- Слово , для целей этой задачи, представляет собой последовательность не-пространств. Таким образом,
CLR также должен содержать хотя бы один пробел; следовательно, это должно быть как минимум два слова s.
Каждое слово s в CLR должно содержать как минимум две буквы (
A-Za-z
).- Обратите внимание, что это относится к CLR, взятому сам по себе, без каких-либо окружающих символов, которые, возможно, не были включены в CLR. Например, это не CLR , потому что строка сама по себе имеет слово s менее двух букв.
foO Bar
O B
- Обратите внимание, что это относится к CLR, взятому сам по себе, без каких-либо окружающих символов, которые, возможно, не были включены в CLR. Например, это не CLR , потому что строка сама по себе имеет слово s менее двух букв.
CLR должны анализироваться «жадно», то есть вы всегда должны находить самые длинные CLR.
Как только вы определили все CLR во входной строке, поменяйте регистр всех букв внутри CLR и выведите полученную строку.
Контрольные примеры
Первая строка является входной, а вторая - выходной. Части ввода, выделенные полужирным шрифтом, представляют собой подстроки, которые считаются CLR.
CAPS LOCK IS THE BEST!
caps lock is the best!
I really LOVE pROGRAMMING pUZZLES AND cOde Golf!
I really love Programming Puzzles and Code Golf!
This is a challenge on PPCG. This is a test CASE. TEST
This is a challenge on PPCG. This is a test case. test
LorEM iPSUM DOLoR sIT amet, conSECTETur ADIPISciNG eLIT. MAECENAS iD orci
Lorem Ipsum doloR sIT amet, conSECTETur ADIPIScing Elit. maecenas Id orci
;'>}{/[]'"A*(389971(*(#$&B#@*(% c'>#{@D#$! :,>/;[e.[{$893F
;'>}{/[]'"a*(389971(*(#$&b#@*(% C'>#{@d#$! :,>/;[e.[{$893F
iT'S cAPS lOCK DAY!!! cELebraTE THis WONDERFUL key
It's Caps Lock day!!! Celebrate this WONDERFUL key
aBcDE fGHIj KLmNO pQrST (uVwXY) ZZ___Zz__Z
aBcde Fghij KLmno PqrST (uVwxy) zz___zz__Z
#aA# aA
#aA# aA
правила
Вы можете предположить, что входные данные никогда не будут содержать два или более пробелов подряд и что он никогда не будет содержать начальный или конечный пробел.
Бонус 20% (умножьте длину кода на 0,8), если весь ваш код является CLR. ;) (в основном просто для удовольствия, так как вряд ли победитель получит этот бонус)
Это код-гольф , поэтому выигрывает самый короткий код в байтах.
PPCG. T
содержит пробел)Ответы:
CJam,
100868381 байтПопробуйте эту скрипку в интерпретаторе CJam или проверьте все тестовые случаи одновременно .
Алгоритм
Определите максимально длинный CLR, который начинается с первого символа.
Если он существует, поменяйте его регистр, распечатайте его и удалите из начала строки.
Иначе, удалите один символ из начала строки и напечатайте его без изменений.
Если осталось больше символов, вернитесь к шагу 1.
Как это работает
источник
Perl
968280 байтПроходит все тесты. Предполагается ввод с
STDIN
, печать наSTDOUT
.Как это работает:
установить регулярное выражение (
$y
), которое соответствуетсопоставлять несколько экземпляров строк, разделенных пробелами, которые соответствуют
$y
, использоватьs///
для инвертирования регистраЯ уверен, что есть место для улучшения. Если есть способ избавиться от всей
join-map-split
сделки, у вас все еще может быть шанс получить бонус :)источник
a-z
вместо[:lower:]
. Кроме того,-pe
обычно считается как 1 байт, а одинарные кавычки - как нулевые байты.Javascript, 193
Объяснение:
источник