Есть одна интересная задача:
Ограничение по времени: 2 секунды
Ограничение по памяти: 256 Мбайт
Работа со строками. Дана последовательность из N строк произвольной длины. Необходимо для каждой строки определить ее последний символ.
Формат входных данных:
В первой строке содержится число N(1 <= N <= 100).
В следующих N строках содержатся произвольные последовательности символов.
Формат выходных данных:
N строк, в каждой из которых содержится последний символ соответствующей строки в исходном файле.
Пример входных и выходных данных:
task2.in
5
adeetd
awt6
shekueywul*
jkueyeskuy
atgs
task2.out
d
6
*
y
s
Примечание: входной файл - task2.in ; выходной - task2.out
Посмотрел, увидел, думаю: Проще некуда. Код моего решения снизу.
В текстовых файлах решение работает отлично.
Правда, есть одна важная особенность - система, тестирующая ответы, называется Yandex Contest.
Копирую код, кликаю "отправить", а мне приходит сообщение об ошибке при прохождении первого же теста (того, что сверху) - неверный ответ.
Я все думал, думал и думал ... Прочитал в инструкции:
Если ваша программа читает файл по одному байту и явно обрабатывает формат переноса строк Windows, т. е. строки заканчиваются двумя байтами 13 10 (\r\n), то некорректная обработка концов строк может привести к получению вердикта WA или PE.
Так вот, вопрос: как это исправить?
with open('task1.in', 'r') as f_o:
lines = f_o.readlines()
del lines[0]
with open('task1.out.txt', 'a') as f_o:
for line in lines:
if line == lines[-1]:
f_o.write(line[-1])
else:
f_o.write(line[-2] + '\n')