Sie sind auf Seite 1von 24

Sear Y…

Competitive
programming

This article may rely excessively on sources too


closely associated with the subject, potentially
Learn more

It has been suggested that List of programming


contests be merged into this article. (Discuss)
Learn more
Open championship on programming
Yandex.Algorithm, August 22, 2013.

Competitive programming is a mind sport


usually held over the Internet or a local
network, involving participants trying to
program according to provided
specifications. Contestants are referred to
as sport programmers. Competitive
programming is recognized and supported
by several multinational software and
Internet companies, such as Google[1][2]
and Facebook.[3] There are several
organizations who host programming
competitions on a regular basis.

A programming competition generally


involves the host presenting a set of
logical or mathematical problems to the
contestants (who can vary in number from
tens to several thousands), and
contestants are required to write computer
programs capable of solving each
problem. Judging is based mostly upon
number of problems solved and time
spent for writing successful solutions, but
may also include other factors (quality of
output produced, execution time, program
size, etc.)

History
One of the oldest contests known is ICPC
which originated in the 1970s, and has
grown to include 88 countries in its 2011
edition. Interest in competitive
programming has grown extensively since
2000, and is strongly connected to the
growth of the Internet, which facilitates
holding international contests online,
eliminating geographical problems.

Overview
This section possibly contains original research.
Learn more

The aim of competitive programming is to


write source code of computer programs
which are able to solve given problems. A
vast majority of problems appearing in
programming contests are mathematical
or logical in nature. Typical such tasks
belong to one of the following categories:
combinatorics, number theory, graph
theory, geometry, string analysis and data
structures. Problems related to artificial
intelligence are also popular in certain
competitions.

Irrespective of the problem category, the


process of solving a problem can be
divided into two broad steps: constructing
an efficient algorithm, and implementing
the algorithm in a suitable programming
language (the set of programming
languages allowed varies from contest to
contest). These are the two most
commonly tested skills in programming
competitions.

In most contests, the judging is done


automatically by host machines,
commonly known as judges. Every
solution submitted by a contestant is run
on the judge against a set of (usually
secret) test cases. Normally, contest
problems have an all-or-none marking
system, meaning that a solution is
"Accepted" only if it produces satisfactory
results on all test cases run by the judge,
and rejected otherwise. However, some
contest problems may allow for partial
scoring, depending on the number of test
cases passed, the quality of the results, or
some other specified criteria. Some other
contests only require that the contestant
submit the output corresponding to given
input data, in which case the judge only
has to analyze the submitted output data.

Online judges are online environments in


which testing takes place. Online judges
have ranklists showing users with the
biggest number of accepted solutions
and/or shortest execution time for a
particular problem.[4]

Notable competitions
There are two types of competition
formats: short-term and long-term. Each
round of short-term competition lasts from
1 to 5 hours. Long-term competitions can
last from a few days to a few months.

Short-term …

International Collegiate Programming


Contest (ICPC) - one of the oldest
competitions, for students of
universities in groups of 3 persons each
American Computer Science League
(ACSL) - computer science competition
with written and programming portions,
for middle/high school students
CodeChef - competition held from 2009,
there are two short contests held every
month[5] and an annual competition
called CodeChef SnackDown[6]
Codeforces Round - typically two hour
contest, held every week[7]
Facebook Hacker Cup - competition held
from 2011, provided and sponsored by
Facebook
HackerRank - multiple competitions[8]
Google Code Jam - competition held
from 2003, provided and sponsored by
Google
IEEEXtreme Programming Competition -
annual competition for IEEE Student
Members held since 2006 by IEEE
IOI - one of the oldest competitions, for
secondary school students
National Olympiad in Informatics, China
- competition held in China since 1984
Topcoder Open (TCO) - Algorithm -
competition held since 2001 by
Topcoder

In most of the above competitions, since


the number of contestants is quite large,
competitions are usually organized in
several rounds. They usually require online
participation in all rounds except the last,
which require onsite participation. A
special exception to this is IEEEXtreme,
which is a yearly 24-hour virtual
programming competition. The top
performers at IOI and ACM-ICPC receive
gold, silver and bronze medals while in the
other contests, cash prizes are awarded to
the top finishers. Also hitting the top
places in the score tables of such
competitions may attract interest of
recruiters from software and Internet
companies.

Long-term …

HackerRank Week of Code[9]


ICFP Programming Contest – annual 3-
day competition held since 1998 by the
International Conference on Functional
Programming
Topcoder Marathon Matches
Artificial intelligence and machine
learning

Kaggle – machine learning


competitions.
CodeCup – AI board game competition
held annually since 2003. Game rules
get published in September and the final
tournament is held in January.[10][11][12]
Google AI Challenge – bi-annual
competitions for students that ran 2009
to 2011
Halite[13] – An AI programming
challenge sponsored by Two Sigma,
Cornell Tech,[14] and Google[15]
Russian AI Cup open artificial
intelligence programming contest

Online contest and training


resources
The programming community around the
world has created and maintained several
internet-resources dedicated to
competitive programming. They offer
standalone contests with or without minor
prizes. Also the past archives of problems
are a popular resource for training in
competitive programming. These include:
Name Description Website

Maintained by Directi, it hosts a 10-day-long contest and a couple of


short contests every month (one IOI styled and other ACM ICPC www
CodeChef styled), and provides a contest hosting platform to educational .codechef
institutions for free. The top two winners of the long contest win .com
cash prizes while the top 10 global get a tee-shirt.

Annual international AI board game programming competition codecup


CodeCup
organized by the Dutch Olympiad in Informatics since 2003.[11][12] .nl

Russian resource, maintained by ITMO University, which mostly


provides frequent (up to two per week) short contests. Special codeforce
Codeforces
features: ability to check correctness of other contestants' solutions s.com
during "hacking phase", virtual contests, trainings etc.

www
Puzzles (increasing difficulty), code golf. Hosts regular online
CodinGame .codingam
competitions (AI сhallenges, optimization problems)
e.com

www
Bangalore, India based company providing online contest like
HackerEarth .hackerear
environment aiming at providing recruitment assessment solutions.
th.com

HackerRank offers programming problems in different domains of


hackerran
HackerRank Computer Science. It also hosts annual Codesprints which help
k.com
connect the coders and Silicon Valley startups.

Large collection of computational math problems (i.e. not directly


Project projecteul
related to programming but often requiring programming skills for
Euler er.net
solving).

Topcoder US resource and company, which organizes contests and also www
provides industrial problems as a kind of free-lance job; it offers .topcoder
dozens of short contests and several long ("marathons") every year. .com
Specific feature - participants have a chance to check correctness
of other contestants' solutions after coding phase and before final
automatic testing (so called "challenge phase").

uva
UVa Online Contains over 4,500 problems for practising. Hosts regular online
.onlinejud
Judge competitions.
ge.org

See also
Code golf

References
1. "Google Code Jam" . google.com.
Retrieved 2016-02-20.
2. "TCO12 Sponsor: Google - TCO 12" .
topcoder.com. Archived from the
original on February 16, 2012.
3. "Facebook Hacker Cup" . Facebook.
Retrieved 2016-02-20.
4. Programming Challenges (Skiena &
Revilla) ISBN 0387001638, ISBN 978-
0387001630
5. "CodeChef Monthly Contests" .
6. "Programmers from all over the world
compete at CodeChef SnackDown -
ExchangeMedia" .
7. "Codeforces contests" . Retrieved
2018-10-12.
8. "Programming problems and
Competitions :: HackerRank" .
HackerRank. Retrieved 2016-02-20.
9. "Programming problems and
Competitions :: HackerRank" .
HackerRank. Retrieved 2016-02-20.
10. "CodeCup" . www.codecup.nl.
11. Lasse Hakulinen. Survey on
Informatics Competitions: Developing
Tasks – Olympiads in Informatics,
2011, Vol. 5, 12–25.
12. Wevers, Lesley (2014). "Monte-Carlo
Tree Search for Poly-Y" (PDF).
University of Twente. Archived from
the original (PDF) on 13 April 2017.
Retrieved 16 September 2018.
13. "Halite Artificial Intelligence
Programming Challenge" .
www.halite.io.
14. "Two Sigma Announces Public Launch
of Halite" . tech.cornell.edu.
15. "Halite helps students and developers
compete to build better AI on Google
Cloud Platform" .

External links
Open-source project for running
contests
Contest Management System Open-
source tool in Python to run and manage
a programming contest on a server IOI
2012 and IOI 2013.
Retrieved from
"https://en.wikipedia.org/w/index.php?
title=Competitive_programming&oldid=929974787"

Last edited 8 days ago by Birdofpreyru

Content is available under CC BY-SA 3.0 unless


otherwise noted.

Das könnte Ihnen auch gefallen