Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Алгоритмы
Курсы ККДП
Дистрибутивы
Ссылки

HotLog


 
Вернуться
Тема: Проверяющая система выдает TL при считывании строки (PascalABC.NET): var s: string; begin read(s); end.
1
  1  Хворых Павел, 03 января 2017 г. 20:06:57
      Меньшиков Фёдор Владимирович, если в задаче указано, что кодировка файла - win1251, то да, не включать. Потому что в данной кодировке не определён символ 0x98 и он не может встретится в файле с данной кодировкой. Собственно об этом Python и сообщает, выкидывая исключение. Я в одной из задач указал на это администратору, и он поправил условие (заменил фразу "файл в кодировке win1251" на "файл в 8-битной кодировке"). И эта задача отлично сдаётся на питоне, если задать файлу какую-нибудь полную 8-битную кодировку (например, koi8_r), либо просто работать с файлом бинарно.
P.S. По-умолчанию Python использует системную кодировку, а это как раз win1251.
  2  Меньшиков Фёдор Владимирович, 03 января 2017 г. 17:03:30
      А может предложить желающим писать на PascalABC читать не строчку, а посимвольно в такой ситуации? Вообще-то в других языках тоже не всё просто с некоторыми аспектами ввода, например, Python вылетает при наличии байта с номером 98hex. Так что после этого - не включать такие байты в тесты что ли? Я думаю это задача пишущего на языке найти способ обхода. Один из способов уже найден ниже - читать из файла. Подозреваю, что посимвольное чтение тоже будет работать. И вообще, на реальных олимпиадах никто тепличные условия не гарантирует.
  3  Артур Альметьевск, 02 января 2017 г. 20:03:24
      Задача 82. Один и тот же код выдает на FP и Delphi - Accept, a на Pascal ABC. Net - TLE на 10 тесте.
  4  Беляев Сергей Николаевич, 30 декабря 2016 г. 14:21:05
      Добавил во всех задачах во всех тестах пустую строку в тех случаях, когда она отсутствовала и перетестировал все решения на PascalABC.NET, у которых был TLE 1. Таковых было 85, из них осталось 3, у которых действительно TLE 1. Теперь такой проблемы нет. Однако, есть опасения, что в некоторых задачах эта строка могла оказаться лишней. Если вдруг кто-либо это обнаружит, просьба отписаться мне на электронную почту: "bsn @ mail . ru" (адрес без пробелов).
  5  Хворых Павел, 30 декабря 2016 г. 12:28:22
      Похоже на глюк. Может разработчикам PascalABC.NET написать? Но от обязательного символа переноса строки в конце всех файлов я, разумеется, не откажусь.
Оффтоп: это всё является следствием того, что перенос строки означает завершение строки, а не начало новой, именно поэтому общепринятой нормой является ставить перенос строки в конце файла. Мы с вами это уже обсуждали, когда у меня 80-я задача падала. Разумеется, все языки должны уметь и умеют обрабатывать файлы без символа переноса в конце. Поэтому мне кажется, что данная ситуация - это глюк компилятора.
  6  Беляев Сергей Николаевич, 30 декабря 2016 г. 9:03:28
      Да, действительно. Я понял, что это происходит, когда файл не оканчивается пустой строкой и читаемая строка последняя во входных данных. Можно попробовать добавлять пустую строку ко всем входным данным. Вопрос: во всех ли задачах это допустимо? :) Есть подозрение, что во всех.
  7  Гариханов Айдар, 29 декабря 2016 г. 23:17:39
      При чтении из файла ошибок не возникает
  8  Меньшиков Фёдор Владимирович, 29 декабря 2016 г. 23:13:22
      А при чтении из файла?
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2017, ICQ: 151483