Музыкальная строка является любой строкой , которая может быть воспроизведена на клавиатуре пианино.
Для тех из нас, кто не был вынужден учиться играть на фортепиано в детстве, вот как выглядит клавиатура.
Таким образом, строка feed a dead cabbage
является музыкальной строкой, потому что каждая отдельная буква соответствует одному из этих узлов.
Ваша задача - написать программу, которая принимает строку в качестве входных данных из STDIN и находит самую длинную музыкальную подстроку. Тогда ваша программа должна напечатать подстроку, и ее длину. Вот несколько примеров входов / выходов.
Вход: «ПОДАРОК МНЕ! Я голоден!»
Выход: подача 4
Вход: нет, нет, нет, musistrin!
Ouput: 0
Входные данные:
"A **bad** !!!fAd82342"
Выход: abadfad 7
Вход: "Хороший гольф!"
Выход: дг 2
правила
Ваш вывод может быть в верхнем или нижнем регистре, но не должно быть знаков препинания или пробелов.
Во входной строке будут прописные буквы и знаки препинания, но это не влияет на то, считается ли подстрока «музыкальной» или нет.
Между музыкальной подстрокой и номером должен быть пробел.
Ответы:
Pyth,
2523 байта2 байта сохранены благодаря @Jakube.
Демонстрация. Тестовый жгут.
Объяснение:
rz0
: Ввод в нижнем регистре.@Grz0
: Удалить любые не алфавитные символы..:@Grz0)
: Генерировать все подстроки.+k.:@Grz0)
: Добавить в пустую строку.f ... +k.:@Grz0)
: Отфильтруйте эти строки.-T<G7
: Фильтровать каждую строку для не музыкальных персонажей.!-T<G7
: Отрицательный результат. ЭтоTrue
если и только если строка была музыкальной.f!-T<G7+k.:@Grz0)
: Отфильтровать музыкальные струны.ef!-T<G7+k.:@Grz0)
: Возьми последнюю такую строку..:
упорядочивает подстроки по размеру, так что это также самая длинная музыкальная подстрока.Jef!-T<G7+k.:@Grz0)
: Присвоить результатJ
.pdJ
: ПечатьJ
сd
пробелом в качестве конечного символа.lJ
Затем распечатайте длинуJ
.источник
Рубин,
8375 знаковДовольно очевидный.
Использует тот факт, что Ruby может разбивать строки в regex (
.split(/[^a-g]/)
).источник
Perl, 58
Использование:
или
источник
Ява, 268
Expanded:
источник
Perl 5 (106)
источник
R,
9894 байтаUngolfed + объяснение:
Предложения приветствуются!
Примечание: вывод теперь в смешанном регистре, что допускается при редактировании ОП. Это сэкономило 4 байта.
источник
golflua ,
848584 байтаСначала я
вводю строчные буквы, затемубираюпробелы,не являющиеся буквами, а затем удаляю все немузыкальные буквы на входе (stdin). Затем я просматриваю каждое оставшееся слово и сравниваю его длину перед выводом наибольшего и длины (stdout). Вероятно, есть более короткий способ сделать цикл, но на данный момент это то, что у меня есть.Код Lua без гольфа
источник