Форум Всеукраїнської інтернет-олімпіади NetOI


На форумі обговорюються лише питання, пов'язані з олімпіадою

Ви не зайшли.

#1 2017-11-01 19:36:17

jurij
Новий користувач
Зареєстрований: 2009-01-23
Повідомлень: 40

Программирование на JAVA

Решил попробовать выполнить задачи на JAVA. Все задачи, кроме Column, в онлайн проверке дают Time out.
Как в таком случае можно протестировать решения? И будут ли задачи на Java оцениваться по тем-же временным лимитам, что и программы на С++?
И еще - для проверки принимаются файлы под именем Main.java для всех задач. При попытке проверить файл с именем например Chess2k17.java происходит ошибка компиляции.

Відредаговано jurij (2017-11-01 19:40:36)

Поза форумом

 

#2 2017-11-02 02:40:28

Dim_ov
Новий користувач
Зареєстрований: 2009-11-29
Повідомлень: 281
Вебсайт

Re: Программирование на JAVA

jurij написав:

Решил попробовать выполнить задачи на JAVA. Все задачи, кроме Column, в онлайн проверке дают Time out.

Часові ліміти в цій олімпіаді доволі жорсткі. І так, через природу джави (JIT і взагалі відносно "важкий" рантайм) рішення цією мовою можуть не проходити деякі тести по часу. Для задач зі швидкими розв'язками можна бути майже впевненим, що рішення на джаві по часу не зайде, бо запуск навіть пустого джава класу займає близько 100 мс. Для більшості задач з рішеннями за константний/логарифмічний час встановлюється ліміт порядку 10 мс, бо програми на C/C++/Pascal часто встигають все порахувати в таких випадках за 1-2 мс.

jurij написав:

будут ли задачи на Java оцениваться по тем-же временным лимитам, что и программы на С++?

Так, обмеження однакові для усіх рішень, незалежно від використаних мов програмування.

І журі не гарантує, що програми на джаві можуть набрати повний бал, про що написано великими червоними буквами в правилах.

jurij написав:

Как в таком случае можно протестировать решения?

Для онлайн перевірки можна запастися терпінням і тиснути f5 на сторінці результатів перевірки. Колись може пощастити і програма виконається за ~90 мс, а не за 100. Але відправляти таке рішення на офіційну перевірку я б не радив smile

jurij написав:

И еще - для проверки принимаются файлы под именем Main.java для всех задач. При попытке проверить файл с именем например Chess2k17.java происходит ошибка компиляции.

"Проблема на вашій стороні" (с). Щойно кілька разів відправляв файл Chess2k17.java з аналогічним іменем класу і жодних помилок компіляції не отримав. Все чудово запускалося і валилося собі в більшості випадків по тайм ліміту, як і варто було б очікувати.
А ще "помилок компіляції" буває не одна і не дві. Якщо ви очікуєте на допомогу, то варто було б вказати, яку конкретно помилку ви отримали. Бо вгадувати її, боюся, ніхто не буде.

Відредаговано Dim_ov (2017-11-27 16:48:35)

Поза форумом

 

#3 2017-11-02 20:33:59

jurij
Новий користувач
Зареєстрований: 2009-01-23
Повідомлень: 40

Re: Программирование на JAVA

Дякую Dim_ov за відповідь. Intellij Idea , якою я користуюсь, автоматично створюэ файл з ім"ям класу. Тобто якщо я створюю клас   Chess2k17, то створюэться Chess2k17.java. У такому випадку буде помилка компіляціі.
Я змінив назву класу на Main у текстовому редакторі  і зараз все працюэ. Дякую.
Після цього є можливысть використовувати f5. Я так і зробив і після 3 спроб отримав PASSED 0.09s

Раніше була помилка:
Компилятор вернул сообщение об ошибке:

/var/tmp/Main.java:7: error: class Chess2k17 is public, should be declared in a file named Chess2k17.java
public class Chess2k17 {
       ^
1 error

Исправьте ошибку и попробуйте еще раз.
NetOI-2017 Test Robot

Хоч я і відправляв файл Chess2k17.java

Відредаговано jurij (2017-11-02 20:40:57)

Поза форумом

 

#4 2017-11-02 21:08:06

Dim_ov
Новий користувач
Зареєстрований: 2009-11-29
Повідомлень: 281
Вебсайт

Re: Программирование на JAVA

Проблема в тому, що ваш клас публічний. Для public класів дійсно треба щоб їм'я класу співпадало з іменем файлу (а файл рішення при перевірці отримує ім'я Main.java)

Якщо називати так клас незручно, то достатньо просто не робити його публічним. Ось таке "рішення" приймається системою без помилок

Код:

class Chess2k17
{
    public static void main (String[] args)
    { 
        System.out.println(1);
    }
}

Поза форумом

 

Нижній колонтитул

Powered by Likt
© Copyright 2002–2009 Likt