LINUX.ORG.RU

Python для олимпиад годится?

 


0

2

Есть здесь у кого опыт использован я этого языка на олимпиадах? Насколько мне известно там требуется уложится в объем памяти и во время выполнения кода, плюс ко всему этому нельзя ставить доп. модули, а только использовать стандартную библиотеку. Python

  1. Хватит скорости?
  2. Хватит выделяемой памяти?

плюс ко всему этому нельзя ставить доп. модули, а только использовать стандартную библиотеку

Нет. Python не предназначен для использования без сторонних модулей.

Что делать на олимпиаде (по программированию, я надеюсь) без numpy.ndarray?

aquadon ★★★★★
()
Последнее исправление: aquadon (всего исправлений: 1)

Я не профессиональный олимпиадник, но обычно python’а вполне хватало. Правда было пару случаев, когда вроде правильное решение просто не проходило по скорости, только потому, что я сам выбрал такой алгоритм,который проигрывал по скорости. Так что, если выбран оптимальный алгоритм, то все будет в порядке.

Мой друг, постоянно сидит и решает олимпиады на codeforces, пишет на python, вроде один из самых крутых в олимпиадном движении нашего вуза.

P.S. Я в основном решаю задачи на плюсах, достаю питон на задачах, где надо работать со строками, просто потому что там это удобно.

snake266 ★★
()
Последнее исправление: snake266 (всего исправлений: 1)

В целом и на питоне можно что-то толковое писать. Проблема в том, что большинство толковых библиотек написано на С, если брать чистый питон и изобретать велосипеды, то далеко ты не уедешь. Точнее, может и уедешь, но не факт, что быстро.

ZERG ★★★★★
()
Последнее исправление: ZERG (всего исправлений: 1)
Ответ на: комментарий от aquadon

Что делать на олимпиаде (по программированию, я надеюсь) без numpy.ndarray?

Зачем он там? Олимпиадные задачи никогда не требуют какого-то числодробления, а всякие одноразовые умножения матриц если надо, можно на коленке запилить.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от aquadon

В языке-то «с батарейками»? По-моему всё что нужно, в Python уже есть в стандартной библиотеке.

a1batross ★★★★★
()

О каких олимпиадах идет речь?

В школьных олимпиадах возможность решения проверяется на cpp, но в большинстве задач решение на python проходит.

Python годится, но не для всех задач. Часто используется из-за встроенной длинной арифметики.

Tanger ★★★★★
()

Олимпиады не нужны. А на хакатонах без питона и nodejs-а особо не уедешь, т.к. сроки поджимают (обычно пара суток), ограничений на инструменты обычно нет, а задачу хоть в первом приближении решить надо, исключение когда хакатон не про задачу, а про язык или технологию.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)

Хинт: не обязательно решать все задачи на одном языке.

Может пригодится наряду с Java в ситуациях, когда задача подразумевает использование длинной арифметики.

KivApple ★★★★★
()

если в олимпиаде допущен этот язык, то хватит и скорости и памяти.

fsb4000 ★★★★★
()

Когда я участвовал в школьных олимпиадах, включая Всероссийскую, то были разрешенными только бэйсик и турбо-паскаль. То есть, даже не бейсике можно было решать. Там главное было не кодинг, а алгоритмы, идеи решения задач, хотя попадали и немного дурацкие задачи (время было такое).

Поэтому не вижу ничего плохого против питона, но сейчас могло все поменяться. Поэтому прислушайся тех, кто более в теме.

dave ★★★★★
()
Последнее исправление: dave (всего исправлений: 1)

Как подготовиться к олимпиадам по информатике

О том, как стать успешным олимпиадником по информатике, рассказали Филипп Рухович, преподаватель Олимпиадных школ МФТИ, финалист ICPC 2014, победитель KPI-Open 2013 и Открытого чемпионата по программированию в Гродно, и Олег Христенко, преподаватель Олимпиадных школ МФТИ, главный судья Moscow Workshops ICPC, главный редактор Snarknews.info, координатор Открытого кубка по программированию.

В первую очередь надо выбрать язык программирования. Из популярных сейчас вариантов есть C++, Python, Java, Pascal. Надо понимать при выборе, что Pascal на студенческих олимпиадах по программированию не пригодится, потому что его отменили. Python часто используется на олимпиадах, очень многих школьников учат ему, но в реальности он является интерпретатором и на нем нельзя решить все задачи, потому что он медленный. Если вы уже знаете Python, это поможет решить несколько простых задач, например, задачи с длинной арифметикой. Либо что-то быстро написать – какой-то скрипт для тестирования. Но в целом рекомендуемый язык для олимпиад по информатике – это C++.

greenman ★★★★★
()
Последнее исправление: greenman (всего исправлений: 1)

не все задачи на нем пройдут по рамкам олимпиадного программирования. В основном по времени

saibogo ★★★★
()

нет, за допинг снимут

buratino ★★★★★
()
Ответ на: комментарий от saibogo

не все задачи на нем пройдут по рамкам олимпиадного программирования. В основном по времени

Вы думаете организаторы олимпиад совсем ебобо и не пишут тесты и эталонные реализации, которые проходят эти тесты?

fsb4000 ★★★★★
()
Ответ на: комментарий от greenman

Наркотики - это плохо, дети. Не слушайте сумасшедших и тех, кто находится в невменяемом состоянии или попросту бредит. Страшно далеки они от науки.

peregrine ★★★★★
()
Ответ на: комментарий от fsb4000

Почему вы уверены что вообще пишутся эталонные реализации на всех допустимых языках? В основном пишутся тесты, которые программа должна пройти. А олимпиада она потому и олимпиада, что участник должен сам выбрать метод решения задачи

saibogo ★★★★
()
Ответ на: комментарий от greenman

Надо понимать при выборе, что Pascal на студенческих олимпиадах по программированию не пригодится, потому что его отменили

Python часто используется на олимпиадах, очень многих школьников учат ему, но в реальности он является интерпретатором и на нем нельзя решить все задачи, потому что он медленный

Круто! Создавать себе проблемы, исключая подходящие ЯП, и потом героически решать их.

А я-то всегда думал, что на олимпиаде оценивают в первую очередь алгоритм (который можно и на бумажке записать), а не умения джуна кодера-тестировщика.

seiken ★★★★★
()
Ответ на: комментарий от seiken

А я-то всегда думал, что на олимпиаде оценивают в первую очередь алгоритм

Честно говоря, я тоже так думал. Но те, кто участвует в олимпиадах, говорят, что в реальности по-другому.

greenman ★★★★★
()
Ответ на: комментарий от seiken

А я-то всегда думал, что на олимпиаде оценивают в первую очередь алгоритм, а не умения джуна кодера-тестировщика.

на олимпиадах оценивают умение решать олимпиадные задачи. К джуну/мидлу не имеет отношения. Обычный сеньор, у которого нет хобби решать олимпиадные задачи, не решит олимпиадные задачи по программированию по олимпиадным правилам.

  1. Запрещены сторонние библиотеки

  2. Отключён интернет

  3. 6-8 задач для которых нужно знать алгоритмы при том что даётся ~2-3 часа. То есть 15-20 минут на задачу.

Если хочешь расстроиться, что какой-то школьник/студент решает абстрактную чушь лучше тебя, то можешь поучаствовать завтра, конечно погружение будет не полным, так как у тебя будет доступ к интернету, но всё же…

https://codeforces.com/blog/entry/74406

fsb4000 ★★★★★
()

Для олимпиад обычно нужен мельдоний.

te111011010
()
Ответ на: комментарий от seiken

А я-то всегда думал, что на олимпиаде оценивают в первую очередь алгоритм (который можно и на бумажке записать

Тупой перебор - тоже алгоритм, тоже дает правильное решение.

Serral
()
Ответ на: комментарий от Stremitelnyj

но это не оптимальный способ решения.

Именно, поэтому и нужны ограничения.

Serral
()
Ответ на: комментарий от fsb4000

К джуну/мидлу не имеет отношения. Обычный сеньор, у которого нет хобби решать олимпиадные задачи, не решит олимпиадные задачи по программированию по олимпиадным правилам.

Я как раз и говорю, что по-хорошему, все эти запускания на компе и программизмы не должны играть большой роли, а самое главное - алгоритм. А его можно записать на каком угодно ЯП. Конкретный ЯП тут важен только потому что проверяющие знают ограниченный набор ЯП, и во-вторых, проведение эксперимента на компе используется в качестве эмпирической проверки решения. Ну или если в задаче необходимо найти конкретное решение.

seiken ★★★★★
()
Ответ на: комментарий от AntonI

да, что-то я не подумал. ну тогда всё ещё интереснее.

ZERG ★★★★★
()
Ответ на: комментарий от seiken

А я-то всегда думал, что на олимпиаде оценивают в первую очередь алгоритм (который можно и на бумажке записать), а не умения джуна кодера-тестировщика

ну смотри. Есть задача с двумя решениями: «умное» за O(n log n) и «тупое» за O(n^2). Как гарантированно отсечь первые от вторых? Только повышая ограничения на параметры тестов. Но часто это возможно только до какого-то предела, после которого либо участникам придется сильно усложнять код, например писать длинную арифметику (к вопросу об оценке в первую очередь алгоритма), либо начнутся тормоза тестирующей системы, либо еще что-нибудь такое.

И чем больше разница в скорости, тем труднее подобрать подходящие ограничения. Поэтому организаторы олимпиад, как правило, пишут эталонные решения на C++ и Java, а про все остальное говорят «мы не гарантируем существование решения на этом языке».

Lrrr ★★★★★
()
Ответ на: комментарий от Lrrr

Есть задача с двумя решениями: «умное» за O(n log n) и «тупое» за O(n^2). Как гарантированно отсечь первые от вторых?

Асимптотическую сложность - только анализом алгоритма. Все остальное, как то: увеличение размера задачи, прогоны на компе с секундомером и предоставление «эталонного решения» - это психологические пилюли и самоуспокоение.

seiken ★★★★★
()
Ответ на: олимпиада от VolanQ

Было немало задачек, которые даже с правильной асимптотикой алгоритма укладывались в лимит времени с запасом всего 2-3x (запас организаторы обычно все же делают). Питон же легко может дать 10x и все - придется тратить время на не алгоритмическую оптимизацию и прочий профайлинг, а вот времени на кодинг на соревновании всегда впритык.

snizovtsev ★★★★★
()

Для олимпиад хватит, но в случае неидеальных решений(неоптимальных алгоритмов) в задачах с возможностью набрать часть баллов будет значительно хуже чем Си++, т.е. если делаешь всё правильно то будет ок, если вынужден будешь импровизировать, то будет недобор баллов, вообще для олимпиад почти все гуру используют плюсы - это лучший путь.

AKonia ★★
()
Ответ на: комментарий от snizovtsev

в мои времена точно не годился для как минимум четверти задач.

В мои времена его просто не было. Решение писалось на листочке ручкой (обычно на бейсике, хотя у особо продвинутых был еще паскаль в ходу), показывалось учителю и тебя пускали в компьютерный класс его ввести и попробовать - компьютеров было сильно меньше чем участников.

Слова «С++» вызывали трепет у всех, никто его не видел но все знали что это какая то страшная крутая и загадочная вещь!

AntonI ★★★★★
()
Ответ на: комментарий от AKonia

вообще для олимпиад почти все гуру используют плюсы - это лучший путь

сейчас это даже преуменьшение. Вот например недавно состоявшаяся олимпиада школьников. Можно настроить фильтры и посмотреть статистику посылок. Питон использовало использовало примерно 10 участников из почти 600 (при этом на нем решались только самые простые задачи), Java - примерно столько же, паскаль - ровно 0 попыток (а ведь еще лет 10 назад этот язык был основным для школьников), про всякие шарпы и т.п. вообще молчу. Остальные 97% - это только C++.

Lrrr ★★★★★
()

Используй CL, если об этом можно предварительно договориться с организаторами олимпиады. По скорости будет примерно как С++/Pascal - может раза в 3 медленнее. Этого хватит с головой с учетом того, какие кривые алгоритмы обычно там пишут участники. Python тоже классный язык, похуже CL, но явно лучше всего того, что обычно там предлагают, на решение типичный задач будешь тратить в 100 раз меньше времени, но если жесткие ограничения по скорости то можешь пролететь. Обычно таких ограничений у нас не было (лет 18 назад, хехе). Узнай на счет технической возможности поставить CL или haskell и тренируйся писать на них - сэкономишь вагон времени на обдумывании реализации самой задачи. И скорость будет приемлемой, на уровне сишки.

alienclaster ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.