В английском языке, безошибочный способ сделать произносимое сочетание нонсенса письма , чтобы сделать его полностью из согласного гласного пара, например, Wu ко - ра га , или, Me фа ро , согласного первый, а затем гласным .
Вызов:
Напишите программу или функцию, которая при заданном пользователем количестве букв создаст случайное имя, используя этот принцип. Это так просто.
Входные данные:
Целое число, большее или равное 2, которое обозначает требуемое количество букв в выводе. Ввод может быть взят из STDIN, аргументов командной строки или аргументов функции.
Выход:
Строка заданной длины, содержащая случайно выбранные пары согласных и гласных. Он может быть распечатан в STDOUT или ближайшую альтернативу или возвращен в случае функции.
Правила:
- У каждого согласного английского алфавита должна быть равная вероятность быть выбранной для первого символа каждой пары, и у каждого гласного английского алфавита должна быть равная вероятность быть выбранной для второго символа каждой пары.
- Буквенные пары могут повторяться.
- Поскольку это имя, первая буква должна быть заглавной.
- Если ввод нечетный, пара произвольно выбранных букв в имени должна быть дополнена y или h в конце. Выбор y или h также должен быть случайным.
- Стандартные лазейки не допускаются.
- Наименьший код в байтах побеждает.
Буквенные определения:
Согласные:
bcdfghjklmnpqrstvwxyz
Гласные звуки:
aeiou
Пример ввода / вывода:
Input: 6
Output: Mefaro
Input: 9
Output: Wukohpaha
Наслаждайтесь!
Ответы:
Pyth, 33 байта
Демонстрация.
источник
JavaScript ES6,
187180168 байтРедактировать: я переключился с использования регулярных выражений замены на простой цикл for, который значительно улучшил длину. Разгруженный код и тестовый интерфейс ниже. Введите отрицательное число на свой страх и риск, потому что это делает бесконечный цикл. (Спасибо unclemeat за указание на это.)
источник
SWI-Пролог,
286285 байтПример:
a(13).
выходыLeqihsekeqira
.Примечание: Вы , возможно , потребуется заменить
`
с ,"
если у вас есть старая версия SWI-Prolog.источник
Pyth,
5242 байтаВы можете попробовать это в онлайн-компиляторе здесь.
Спасибо Jakube за дальнейшую игру в гольф, NinjaBearMonkey за прояснение проблемы и за создание команды Pyth и непреднамеренное обучение меня
X
.Эта программа случайным образом выбирает согласную и гласную для заполнения строки, добавляет «h» или «y» к одной паре, если ввод нечетный, затем вводит заглавные буквы первого символа. Вот разбивка:
Кажется неэффективным добавлять 'h' или 'y' к первой паре согласных и гласных, а затем скремблировать список. Я пытался добавить случайную пару, но код всегда был длиннее этого.
источник
rX1
буквыX
.t
это то же самое , как_P_
.J
, так как вы используетеJ
только один раз.Perl,
253238 байтЯ, вероятно, могу сыграть в гольф дальше, но это должно сделать пока.
Изменения:
источник
Юлия, 141 байт
Это создает безымянную лямбда-функцию, которая принимает целое число в качестве входных данных и возвращает строку. он использует тот факт, что строки в Julia могут индексироваться и ссылаться как массивы символов. Чтобы назвать его, дайте ему имя, например
f=n->...
.Ungolfed + объяснение:
Примеры:
источник
Python 2,
148169156Изменить: понял, что это не с заглавной буквы первой буквы. Я посмотрю, смогу ли я завтра сыграть в гольф.
Редактировать 2: Помнил,
.title
но я думаю, что это будет.источник
SmileBASIC 2 (Petit Computer),
197177 байтСОВРЕМЕННОЕ РЕДАКТИРОВАНИЕ МАЙ 2018 : Это было мое первое представление, почти 3 года назад! Мои навыки значительно улучшились с тех пор; -20 только из мелких корректировок.
Он начинается с приглашения (оно оставлено пустым для сохранения байтов, поэтому это просто?), Где вы указываете длину (хранится в переменной
L
).Я уверен, что участие с неясным языком Бейсик не даст мне ничего, кроме странных взглядов, но мне удалось сделать его довольно маленьким для Бейсика. Это использует странные причуды SB (такие как условные вычисления, оценивающие в 1 или 0, так как нет логического типа), чтобы исключить столько байтов, сколько я мог бы иметь, когда писал это в 3 часа ночи.
источник
Marbelous, 203 байта
Проверьте это здесь (онлайн переводчик).Ввод через аргументы. Библиотеки и цилиндрические доски должны быть включены.
Комментируемая / читаемая версия:
Это примерно эквивалентно следующему псевдокоду (
random(a,b)
генерирует числа междуa
иb
включительно):источник
Рубин, 119 байт
13 байт для заглавных букв ...
Использование:
Выход:
источник
C, 219 символов
Кажется, работает, я все еще новичок в этом.
источник
rand()%(n-1-i)<2
вместо того,rand()%(n-1)<(i+2)
чтобы получить равномерное распределение, если только вы не сгенерируете это случайное число только один раз и не сохраните его где-нибудь.🙋
которые используют более одного байта.R 166 байт
Принимает ввод из STDIN и выводит в STDOUT.
объяснение
Некоторые тесты
источник
К5, 131 байт
Это НЕ будет работать на Kona или kdb +; вам нужно использовать интерпретатор K5, как ОК .
Живая демоверсия. (Попробуйте установить
5
в конце другое число, чтобы попробовать разные входы.)источник
Рубин,
316 238216 символовКомбинации с нечетным числом заканчиваются на
h
илиy
.Спасибо @blutorange за полный словарь советов по рубиновой игре в гольф.
Вау, я сократил свой код на 100 символов.
источник
j
была опечатка.for i in ?a..?z;...;end
можно заменить на(?a..?z).map{...}
;then
После того, как неif
является обязательным.v.include?(i)||c.push(i)
это сокращение отunless v.include?(i);c.push(i)
. Используйтеc<<i
дляc.push(i)
.c.map{}
корочеc.each{}
.i%2==1?1:2
это сокращение отif i%2==1;1;else;2;end
.print "Enter..."
Не требуется в codegolf; )Perl 5 , 112 байт
Попробуйте онлайн!
источник