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

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


 
Вернуться
Тема: Формат данных в 6 тесте задачи №984 - нет ли лишних переносов строк
1
  1  Федорук Семён Романович СибГУ, 03 июня 2025 г. 15:37:11
      Фёдор Владимирович, вы абсолютно правы! Именно это в 431 и происходит.
Go/fmt LN равно как и F"\n" дописывают только 10 в байтовом представлении. А задача действительно принимается только с CR LF.

Благодарю!
  2  Беляев Сергей Николаевич, 30 апреля 2025 г. 5:16:59
      В тестах 6+, возможно, нет пустой строки в конце, а последняя строка с числами заканчивается лишним пробелом. Для реализации на С++ вряд ли это проблема, но в некоторых языках сложности могут возникнуть.
  3  Меньшиков Фёдор Владимирович, 29 апреля 2025 г. 19:35:22
      В 431 возможно требуется строго Windows перевод строки 13 10.
  4  Федорук Семён Романович СибГУ, 29 апреля 2025 г. 12:01:24
      В догонку хочу спросить про форматы ответа 431. PE это WA? Первый тест по прежнему такой же, как и в примерах (иначе как тогда могут не проходить №23267358, №23267284, №23267266) ?
Буквально не проходит первый тест
Println("...@.")
Println(".@@..")
Println("....@")
Println(".....")
Println(".....")
  5  Неизвестный, 23 апреля 2025 г. 13:27:56
      sdsd
  6  Федорук Семён Романович СибГУ, 23 апреля 2025 г. 11:50:10
      Считать данные на Go само по себе искусство, но мне всё никак не даёт покоя факт, что решение 23242359 даёт WA.

Обнаружено, что количество чисел в последней строке, прочитанных программой, почему-то не соответствует заявленной p (WA гарантирован только в этой ситуации)
for i := 0; i < p; i++ {
if i >= len(parts) {
fmt.Print("wtf")
return
}
t[i].m, _ = strconv.Atoi(parts[i])
}

В "ИСХОДНИК РЕШЕНИЯ №23242554" картина следующая (WA):
scanner.Scan()
if scanner.Text() == "" {
fmt.Print("wtf!!!")
return
}

Проверка того, что или между последним названием и строкой P+2 есть какой-то неучтенный символ переноса, или строк меньше.

ИСХОДНИК РЕШЕНИЯ №23242567
scanner.Scan()
if scanner.Text() == "" {
for scanner.Text() == "" {
scanner.Scan()
}
}

Всё тот же RE

ИСХОДНИК РЕШЕНИЯ №23242599
Ну мало ли. Пошёл от начала. P читается вполне корректно. RE
if (len(parts)) != 3 {
fmt.Println("WTF")
}

ИСХОДНИК РЕШЕНИЯ №23242701
Проверяем, что между названиями универов не затесались такие же непонятные переносы
for i := 0; i < p; i++ {
scanner.Scan()
if scanner.Text() == "" {
fmt.Print("wt...")
return
}
t[i].e = scanner.Text()
}

RE6. Лишних пустых строк там нет

ИСХОДНИК РЕШЕНИЯ №23242714
Достигаем ли мы конца ввода
if !scanner.Scan() {
fmt.Println("WTF")
return
}
Именно так, мы в конце уже там.
Программа ведёт себя так, словно университетов на 1 меньше, чем заявлено в P

ИСХОДНИК РЕШЕНИЯ №23242882
В очередной раз убеждаемся, что строка пуста
parts = strings.Fields(scanner.Text())
if 0 == len(parts) {
fmt.Print("wtf")
return
}

А в чём, собственно, дело?
1

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

Красноярский краевой Дворец пионеров, (c)2006 - 2025, ИНН 246305493507, E-mail: admin@acmp.ru