(Значение: конвертировать английский в Bleet)
Мы восхваляли коз как бога уже много лет.
Но если мы не можем перевести английский на «Bleet», язык козьего бога, мы не сможем с ними общаться.
Итак, чтобы общаться с ними, мы исследовали деятельность коз и извлекли эту модель, которая является ядром языка.
Скажите «Bleet» для длины каждого слова. Это означает, что количество «е» должно быть (длина-3) для слов длиннее 3 букв. Вы должны сократить «Bleet» для слов короче «Blt». Например, «be» становится «bl», а «cat» и «boat» становятся «blt» и «blet».
Похоже, что они на самом деле не меняют не алфавитные символы на «Bleet». Наше исследование показало, что «Привет, мир!» Bleet это "Bleet, Bleet!" не Bleeet Bleeet. Кроме того, козлы не такие умные (без обид), поэтому они, похоже, совсем не понимают не-ascii персонажей или диакритических знаков.
Теперь пришло время заставить переводчика общаться с богами козлов.
Bleeeeet (Значение: примеры)
Hello, World! => Bleet, Bleet!
lorem ipsum dolor sit amet. => Bleet Bleet Bleet Blt Blet.
We praise the Goat God! => Bl Bleeet Blt Blet Blt!
I have a pen => B Blet B Blt
0123456789_ => 0123456789_
0te_st1 => 0Bl_Bl1
it's
статьBlt
илиBl't
илиBl'B
?Jimmy's
:Bleee't
), относиться к ним как разделения слова (Jimmy's
:Bleet'B
), или рассматривать их как часть слова (Jimmy's
:Bleeeet
). Если бы мне пришлось выбирать один, я бы выбрал опцию «разделитель слов», так как это то, что делают 6 ответов.Ответы:
Сетчатка , 31 байт
Попробуйте онлайн!
объяснение
Превратить все буквы в
e
с.Включите первый
e
в каждом заездеB
.Превратись
Be
вBl
.Преврати последнее
e
в каждом забегеt
.источник
T1L
T
этап «оборачивает» пары перевода , так что вы можете превратить все письма , как чтоe
l
, а не a1
, но я не уверен, что вы подразумеваете под "переносом". Транслитерация просто повторяет последний символ в шаблоне цели, так что если бы это былоT`lL`ef
, вы бы карту ,a
чтобыe
и все другие письмаf
, не чередующимся кe
иf
.JavaScript (ES6),
797774 байтаАльтернативный подход, в настоящее время
8378 байтов:Лучшее, что я мог сделать рекурсивно - 88 байтов:
источник
'Blet'[i>1?2+!x[i+1]:i]
но, к сожалению, он такой же длины.PHP,
11588867775 байтpreg_replace
с массивами (требуется PHP 5.4 или новее)Запустите
echo '<string>' | php -nR '<code>'
или протестируйте его онлайн .сломать
Редакция 5: сохранено 9 байтов с цепочкой регулярных выражений Мартина Эндера .
(Это также исправляло регистры с неалфавитными символами слова = цифры / подчеркивания.)
источник
Haskell ,
135128 байтовПопробуйте онлайн! Использование
(""!) $ "some string"
. Без регулярных выражений это оказалось довольно длинным, может быть, какой-то другой подход короче. Изменить: Сохранено 7 байтов благодаря @nimi!источник
b
кa
вам могут применить его сразу после построения результирующей строки и опустить окончательный=<<
:b!(l:t)|...|1<3=a b++l:""!t;b!_=a b;(""!)
.Perl 5 , 47 байт
Сохранено 15 байт с использованием той же техники, что и ответ Retina Мартина Эндера . (Этот ответ в основном порт его ответа сейчас)
46 байтов кода +
-p
флаг.Попробуйте онлайн!
Старые версии: 62 байта:
И 68 байт:
источник
PHP, 84 байта
PHP, 117 байт
источник
-1+$l=...
\bl
не выполняется для неалфавитных символов слова:_we_
. Вам нужно явное утверждение:(?<!l)l
. То же самое дляe\b
->e(?!e)
(+7 байт)С
1201511401111081051049290 байтРаботая на "Это тест Джимми" -> Bl'B Bleet'B Blet
Вывод теперь является побочным эффектом, уничтожая исходную строку.
Я думаю, что это правильно по крайней мере сейчас
источник
Python 2.7,
129118114109959188 байтПросто
re.sub
цепьШаг за шагом
Пример ввода: « Мы восхваляем Бога козла! »
Псевдоним саб, чтобы мы могли сохранять байты при повторных вызовах
Заменить все символы слова на «е»
s("\w","e",i)
Выход:
ee eeeeee eee eeee eee!
Заменить все «е», которым предшествует граница слова (начало слова), буквой «В»
s(r"\be","B",s("\w","e",i))
Выход:
Be Beeeee Bee Beee Bee!
Заменить все "Be" на "Bl"
s("Be","Bl",s(r"\be","B",s("\w","e",i)))
Выход:
Bl Bleeee Ble Blee Ble!
Заменить все буквы "e", за которыми следует граница слова, буквой "t"
s(r"e\b","t",s("Be","Bl",s(r"\be","B",s("\w","e",i))))
Выход:
Bl Bleeet Blt Blet Blt!
источник
return
наprint
должна сохранить байт.r
r
), и я уменьшил его до 95 байтов. Спасибо за предложение!Пип , 28 байт
Принимает ввод в качестве аргумента командной строки. Попробуйте онлайн!
объяснение
Это было весело - я использовал модификаторы регулярных выражений и интерполяцию строк.
источник
Python 3, 271 байт
Я знаю, что это довольно долго, и я приветствую предложения о том, как уменьшить длину.
источник
x.append(y)
или в вашем случае,a(x,y)
вы можете сделатьx+=y,
(запятая требуется)сложено , 57 байт
Попробуйте онлайн! Принимает ввод с вершины стека.
Пусть a ( n ) = A136412 ( n - 2) = (5 × 4 n - 2 + 1) ÷ 3. Преобразование a ( n ) в основание 4 дает:
Отобразив индексы 0..3 в строку
Blet
, получим:Теперь, добавление
B
дает нам желаемую строку, учитывая длину. В основном. Нужно просто обработать специальные случаи для n ≤ 2. В моем случае это решается вычитанием ( n - 2 <1) числового логического значения (1 для «true» и 0 для «false»).Что касается специфики ответа:
источник
Python 2 ,
137114 байтПопробуйте онлайн!
источник
Java 7, 201 байт
Не очень доволен этим, и, конечно, можно играть в гольф еще немного ..
Объяснение:
Тестовый код:
Попробуй это здесь.
Выход:
источник
s.split("")
вместо того, чтобыs.toCharArray()
спасти некоторые, я верюx=c&~32
не будет работать со строкой, иx>64&x<91
оба больше не будут работать). Если вы можете сделать это короче с расколом, дайте мне знать, хотя.05AB1E , 36 байт
Попробуйте онлайн! или как тестовый набор
объяснение
Подготовить вход:
Это создает список, такой как
['hello', ', ', 'world', '!']
для вводаHello, World!
Перебрать список:
источник