Задача e-olymp 506.
Оригинальное решение.
Решение на Try Haxe!
Задача. Вам необходимо преобразовать множество старых программ для новой версии компилятора. Для этого необходимо заменить «->» на «.» везде, кроме комментариев. Комментарии в данном языке программирования начинаются с символов «//» и продолжаются до конца строки. Напишите программу, выполняющую такое преобразование.
Входные данные:
Входной файл содержит от 1 до 500 строк длиной не более 50 символов с ASCII-кодами от 32 до 127 – текст программы, которую нужно преобразовать.
Выходные данные:
В выходной файл вывести преобразованный текст программы.
Тесты:
Входные данные | Результат |
---|---|
test program —> int main(); | test program -. int main(); |
coments write like // not -> | coments write like // not -> |
coment you can wtite -> // not -> \\ | coment you can wtite . // not -> \\ |
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
class Main { static function main() { var str = new Array < String > (); var new_str = ""; var arrowFlag: Bool; var commentFlag: Bool; var commentFullFlag: Bool; var i = 0; while ((new_str = Sys.stdin().readLine()) != "") { str[i] = ""; var arrowFlag = false; var commentFlag = false; var commentFullFlag = false; for (j in 0...new_str.length) { var symb = new_str.charAt(j); if (!commentFullFlag) { if (symb == "/") { commentFullFlag = commentFlag; commentFlag = true; str[i] += symb; } else if (symb == "-" && !arrowFlag) { arrowFlag = true; } else if (symb == ">" && arrowFlag) { str[i] += "."; arrowFlag = false; } else { str[i] += symb; } } else { str[i] += symb; } } i++; } var output = Sys.stdout(); for (i in 0...str.length) { output.writeString(str[i] + "\n"); } } } |
Алексей Маслеев недавно публиковал (посмотреть все)
- e-olimp 4650. Граф-Турнир - 26.06.2017
- А400 - 13.05.2017
- e-olymp 905. Какой треугольник? - 13.05.2017
Вы месяц ждали моей проверки? А я месяц ждал, чтобы Вы просмотрели свою работу сами. Вы победили 🙂
— Расставьте, пожалуйста отступы. Потом буду дальше смотреть. Если никак не удаётся понять принцип расстановки отступов в коде, воспользуйтесь какой-нибудь автоматической системой. Например, http://jsbeautifier.org. Потом можно будет на досуге разобраться с результатом её работы.
Расставьте, пожалуйста отступы. Уверен, при помощи google.com или какого-нибудь online code beautifier у Вас всё получится.
Возможно, Вам кажется, что я придираюсь к мелочам, но я просто обязан уберечь Вашего будущего тимлида от суицида 🙁
P.S. Если совсем-совсем не удаётся ничего сделать, попробуйте скопировать вариант расстановки скобок от http://jsbeautifier.org:
видимо что-то пошло не так ведь именно там, по Вашему совету, я и делал отступы. Итак, попытка 3
беречь «будущего тимлида» не надо, если его не будет
Не зарекайтесь. Вполне возможно жизнь сложится так, что работать всё же придётся 🙂
Ммм нет
Теперь нужно сделать какое-то пояснение к решению. В ходе его написания должно возникнуть желание исправить код. Сейчас в исходной работе Ани Шогиной 4 условных оператора. У Вас их 6. Минимум от двух стоит избавиться. Такой процесс называется «рефакторинг».
Провел рефакторинг