Поиск закономерностей
Часть раздела Основы путешествия по Ruby на Coddy — урок 87 из 88.
Задание
ЛегкоПрочитайте строку из входных данных и найдите наименьший повторяющийся паттерн, из которого состоит вся строка.
Допустимый паттерн должен:
- Иметь длину, на которую нацело делится общая длина строки
- При повторении соответствующее количество раз в точности воссоздавать исходную строку
Если строка состоит из повторяющегося паттерна, выведите этот наименьший паттерн. Если повторяющегося паттерна не существует, выведите исходную строку.
Чтобы проверить, подходит ли паттерн, вы можете использовать умножение строк: pattern * count создает новую строку, повторяя паттерн.
Например, если на вход подается abcabcabc, результатом должно быть:
abcЕсли на вход подается xyxyxyxy, результатом должно быть:
xyЕсли на вход подается aaaa, результатом должно быть:
aЕсли на вход подается hello, результатом должно быть:
helloЕсли на вход подается abcdef, результатом должно быть:
abcdefПопробуйте сами
# Прочитать входную строку
s = gets.chomp
# TODO: Напишите свой код ниже
# Найти наименьший повторяющийся шаблон, который образует всю строку
# Подсказка: Проверьте длины шаблонов, которые делятся нацело на длину строки
# Используйте умножение строк (шаблон * количество), чтобы проверить, подходит ли шаблон
result = s # Замените это вашим решением
# Вывести результат
puts resultВсе уроки раздела Основы
4Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 3Логические операторы. Часть 47Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Продвинутая работа с массивами
Срезы массивов через диапазоныСрезы массивов через индексыОператоры массивовМетод include?2Переменные и типы данных
Числа и переменныеСтроковый тип данныхЛогический тип данныхТип данных SymbolПроверка типов данныхПравила именованияПовторение: создание переменных5Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторВложенные конструкции If - ElseОператор Unless8Циклы
Цикл For с диапазонамиЦикл WhileОператор BreakОператор NextПовторение: ФакториалЦикл TimesЦикл UntilВложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСокращенная арифметикаИтоги: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод с помощью putsВывод с помощью print и pВывод с переменнымиВвод с помощью getsМетод chompПреобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложь