Проблема с шифром Цезаря заключается в том, что получаемые слова часто непроизносимы. Проблема с Pig Latin в том, что ее легко декодировать. Почему бы не объединить их?
вход
Слово, состоящее из 26 английских букв.
Выход
Сначала измените каждую согласную в слове на следующую согласную в алфавите. Итак, b переходит к c, d переходит к f, а z переходит к b. Затем измените каждую гласную на следующую гласную в алфавите (вы переходите к a). Последнее, только если первая буква слова является согласной, переместите эту букву в конец слова и добавьте «ay» в конец слова.
Примеры:
cat -> evday
dog -> uhfay
eel -> iim
- Это код-гольф , поэтому выигрывает самый короткий код.
- Дело не имеет значения.
- Будут использоваться гласные: A, E, I, O и U
z → bay
the → jivay
? (То есть, если слово начинается с нескольких согласных, мы можем переместить только одну из них?)Ответы:
Stax , 20 байт
Запустите и отладьте его
объяснение
Я прошел несколько итераций и, наконец, опустил его до 20. Мое исходное решение было 53 байта.
источник
Рубин ,
9669 байтПопробуйте онлайн!
Интересный факт дня: tr () соответствует строкам справа налево. Я всегда предполагал, что это было слева направо.
источник
R ,
8685 байтПростой способ.
chartr
обладает очаровательным и полезным свойством, позволяющим задавать диапазоны букв , что позволяет сэкономить несколько байтов.-1 байт, украдя строки перевода @ GB для Ruby-решения - подтвердите!
Попробуйте онлайн!
источник
Java (JDK) , 167 байт
Попробуйте онлайн!
кредиты
источник
05AB1E , 21 байт
Попробуйте онлайн!
объяснение
источник
Node.js 10,9,0 ,
121116 байтОжидает входную строку в нижнем регистре.
Попробуйте онлайн!
Идентификация гласных
И делает:
комментарии
источник
Python 2 ,
1531211109991 байтПопробуйте онлайн!
8 байтов срезано по предложению Мэтью Дженсена
источник
lambda s:[s[1:]+s[0]+"ux",s][s[0]in'aeiou'].translate(8*".ecdfighjoklmnpuqrstvawxyzb.....")
translate
в Python 2 ...T-SQL, 169 байт
Ввод осуществляется через уже существующую таблицу в соответствии с нашими стандартами ввода-вывода .
Сначала выполняется подстановка символов с помощью функции ( новичок в SQL 2017 )
TRANSLATE
, а затем проверяется первый символ.Раздражает долго в основном из-за длины ключевого слова SQL.
источник
Сценарий оболочки, 70 байт
Попробуйте онлайн!
источник
Haskell ,
10297 байтПопробуйте онлайн!
источник
Сетчатка 0.8.2 , 50 байт
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Подобный подход к ответу R. Объяснение:
o
относится к другому набору, т. е.aei\oub-df-hj-np-tv-zb
расширяется доaeioubcdfghjlkmnpqrstvwxyzb
,uo
расширяется доuaeioubcdfghjlkmnpqrstvwxyzb
. Это приводит к следующей транслитерации:Вторые
u
иb
игнорируются, так как они никогда не могут быть сопоставлены, поэтому это обеспечивает желаемый шифр. (Обратите внимание, что в Retina 1 вы, конечно, можете использоватьv
вместоaei\ou
5-байтового сохранения.)Если первая буква не является гласной, поверните ее до конца и добавьте суффикс
ay
.источник
Желе , 24 байта
Попробуйте онлайн!
Сохранено 1 байт благодаря Джонатану Аллану (используйте синтаксис из двух символов вместо кавычек).
источник
⁾ay
для байта.©
Может пойти после того ,e
так как это то , что вы храните. У меня естьØẹØḄ,żṙ€¥1ẎyṙḢe©ØḄƊ®⁾ayẋ
.> <> ,
9492 байтаПопробуйте онлайн!
Редактировать: 2 байта были сохранены, используя мод ввода 97, а не 32, чтобы словарь мог начинаться с начала строки. Предыдущая версия:
источник
Красный , 149 байт
Попробуйте онлайн!
Как (почти) всегда самая длинная запись
источник
F # (моно) , 197 байтов
Попробуйте онлайн!
источник
Perl 5 , 56 байт
Попробуйте онлайн!
источник
-
междуc
иd
илиg
и иh
?<s>58</s> 56 bytes
в шапке, и многие люди добавляют «Редактировать: 2 байта сохранены благодаря @Neil». или некоторые такие, когда им помогают в комментарии.Dyalog APL (SBCS), 57 байтов
Попробуйте онлайн!
Принимает ввод только в верхнем регистре! (Потому что
⎕A
это прописные буквы)⎕A{(⍺~⍵)⍵}'AEIOU'
: Вектор согласных и гласных(⊂⍵⍳⍨∊a)⌷∊1⌽¨a
: Использует индексы каждой буквы слова в обычном алфавите (⊂⍵⍳⍨∊a
) для индекса (⌷
) в шифре∊1⌽¨a
.('AY',⍨1⌽⊢)⍣(∊/⊃¨⍵a)
: Перемещает первую букву в конец и добавляет «AY», если первая буква является согласной.Спасибо за классный вызов!
источник
JavaScript (SpiderMonkey) , 107 байт
Попробуйте онлайн!
Ожидается ввод в нижнем регистре.
Заменяет каждый символ строки на один после него в строке
'aeiouabcdfghjklmnpqrstvwxyzb'
, а затем разбивает все на части с начальным согласным.источник
PHP, 112 байт
или
Предположим, вводится строчная буква. Запустите как трубу с
-nR
или попробуйте их онлайн .Вы могли бы также использовать
strtr($s,uzbcadfgehjklminpqrsotvwxy,range(a,z))
вместоstrtr($s,range(a,z),ecdfighjoklmnpuqrstvawxyzb)
.источник