marvellik
я под тест автора привел решение в котором данные в тестирующей системе подаются в таком виде
Ввод данных бывает двух видов: по длине и по маркеру. Ввод по длине - это когда в начале пишут число элементов, а потом подают эти элементы. Ввод по маркеру - это когда данные идут сразу, но их окончание можно определить по какому-то признаку конца. В данном случае используется ввод по маркеру, где маркером является ноль. В чём минус маркерного ввода? В том, что ты уже ноль в последовательности не можешь использовать, он совпадёт с маркером. То есть подавать можно только натуральные числа, а целые числа ты уже не подашь, потому что в них есть ноль, вся последовательность может из одних нулей состоять.
Вот ты написал функцию, она у тебя расчитана на маркерный ввод. Стоит только расширить эту задачу с натуральных до целых чисел и маркерный ввод надо будет заменить на ввод по длине, что очень часто бывает в таких задачах. И тут-то ты понимаешь, что из-за такой мелочи тебе нужно переписывать всё.
Надо было две функции написать, понимаешь? Одна бы вводила данные, а другая бы их преобразовывала (разворачивала в данном случае). Тогда бы оно не только всё приняло на сайте, но и было бы открыто как для изменения ввода данных, так и для изменения самого преобразования. Ты не смог выделить преобразование в отдельную функцию. Таким образом ты не можешь заменить одно преобразование на другое.
А что это даёт? И зачем это надо?
На курсере десяток таких же заданий и везде разный ввод и разные преобразования. То есть все задания имеют шаблон
<ввод данных><пребразование данных>
Так вот, написав один раз функцию ввода данных, ты десятки раз её потом используешь во всех заданиях. А когда ты её не написал, ты десятки раз пишешь одно и то же, затрачивая на это время.
Поэтому они должны быть разделены, даже если в задании там написано крупными буквами, что они могут быть слитными. Автор задания сегодня может сам не догонять, что он будет писать завтра новое задание, похожее на это задание своим вводом или своим преобразованием.