Задача
Случайно к тебе попало письмо с текстом будущего хита от твоего главного соперника за первое место в хит-парадах! Но, к сожалению, все сообщение оказалось закодированным. Твои помощники определили, что в песне используется два смысловых слова — Yo и Nice — причем, Nice означает конец очередной буквы, а количество предшествующих слов Yo определяет порядковый номер буквы в алфавите. Два подряд идущих слова Nice обозначают конец слова. В приведенном файле также содержатся другие слова-паразиты, которые не несут смысловой нагрузки, и бессмысленные знаки препинания (которые тем не менее используются для разделения слов). Расшифруй текст песни, содержащийся в файле. Если ты сделаешь все правильно, ты получишь текст только из букв и пробелов, без лишних пробелов и знаков препинания.
Решение
Что описывать в решении я не знаю... все очень просто. Но я попытаюсь.
У нас есть файл с кучей всяких слов. Которые нас не волнуют. Нас волнуют только две вещи:
- слово, которое встречаясь увеличивает порядковый код буквы в слове на единицу. Yo.
- слово "пробел" - разделитель слов. Nice. Когда оно встречается счетчик наших Yo обнуляется.
Наша задача получить символы из которых состоит файл. Эти символы буквы (латинские) и пробелы (так сказано в задании). Каждому символу соответствует число Yo. Для пробела между словами число Yo будет равно нулю (ровно столько Yo мы насчитаем между двумя идущими подряд разделительями Nice). Если заглянуть в ASCII табличку то мы это и увидим. Сначала пробел, а потом маленькие латинские буковки от 'a' до 'z'. Значит значение аски-кода символа связано со значением счетчика с неким постоянным смещением (96 - можно вычислить по таблице). Значит, для вычисления буковки мы берем полученный счетчик и прибавляем к нему 96. И делаем Convert.ToChar(Counter);
Значит нам нужно два вложенный цикла.
Внешний ползет по нашему мусору от обеда до следующего Nice. Доползя запоминает позицию откуда начал и где остановился и передает их во внутренний цикл.
Внутренний цикл ползет по тексту между этими позициями и считает Yo. Доползает до конца, вычисляет буковку, добавляет ее в результат.
Все.
Картинка. Проект. И бонусная песня, которую мы "слямзили" своими нечеловеческими усилиями.
Cкачать I Don't Want To Miss A Thing бесплатно на pleer.com

Комментариев нет:
Отправить комментарий