请输入您要查询的百科知识:

 

词条 Competitive programming
释义

  1. History

  2. Overview

  3. Notable competitions

      Short-term    Artificial intelligence and machine learning  

  4. Online contest and training resources

  5. See also

  6. References

  7. External links

{{third-party|date=February 2018}}

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 ACM-ICPC which originated in the 1970s, and has grown to include 88 countries in its 2011 edition. Interest in competitive programming has grown extensively{{quantify|date=October 2012}} since 2000, and is strongly connected to the growth of the Internet, which facilitates holding international contests online, eliminating geographical problems.

Overview

{{Original research section|date=February 2018}}

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 3 hours. Long-term competitions can last from a few days to a few months.

Short-term

  • ACM-ICPC - one of the oldest competitions, for students of universities in groups of 3 persons each
  • ACSL - computer science competition with written and programming portions, for middle/high school students
  • Google Code Jam - competition held from 2003, provided and sponsored by Google
  • Facebook Hacker Cup - competition held from 2011, provided and sponsored by Facebook
  • HackerRank Ad Infinitum[5] - Math Programming Contest by HackerRank
  • CodeChef Cook-Off[6] - an ACM-ICPC style programming contest held on second last Sunday of every month
  • CodeChef LunchTime[6] - a Junior Programming series held on last Sunday of every month, for middle/high school students
  • CodeChef SnackDown[7] - An annual multi round global programming contest held by CodeChef
  • Codeforces Round[8] - typically two hour contest held every week since 2010 by Codeforces.
  • IEEEXtreme Programming Competition - annual competition for IEEE Student Members held since 2006 by IEEE
  • IOI - one of the oldest competitions, for secondary school students
  • Topcoder Open (TCO) - Algorithm - competition held since 2004 by Topcoder
  • Yandex Algorithm - competition held since 2013 by Yandex;
  • National Olympiad in Informatics, China - competition held in China since 1984

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 ===

  • CodeChef Long Challenges[6]
  • HackerRank Week of Code[9] – 7-day contest by HackerRank
  • 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][13]
  • Google AI Challenge – bi-annual competitions for students that ran 2009 to 2011
  • Halite[11] – An AI programming challenge. Halite I was held from November 2016 to February 2017 and Halite II is being held from October 23, 2017 to January 22, 2018. Both are sponsored by Two Sigma and Cornell Tech[12] Google has also provided support for Halite II[13]
  • 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 DescriptionWebsite
HackerRank HackerRank offers programming problems in different domains of Computer Science. It also hosts annual Codesprints which help connect the coders and Silicon Valley startups.hackerrank.com}}
Codeforces Russian resource, maintained by Saratov State University, which mostly provides frequent (up to two per week) short contests. Special features: ability to check correctness of other contestants' solutions during "hacking phase", virtual contests, trainings etc.codeforces.com}}
HackerEarth Bangalore, India based company providing online contest like environment aiming at providing recruitment assessment solutions.www.hackerearth.com}}
CodeChef 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 styled), and provides a contest hosting platform to educational institutions for free. The top two winners of the long contest win cash prizes while the top 10 global get a tee-shirt.www.codechef.com}}
CodinGame Puzzles (increasing difficulty), code golf. Hosts regular online competitions (AI сhallenges, optimization problems)www.codingame.com}}
Topcoder US resource and company, which organizes contests and also provides industrial problems as a kind of free-lance job; it offers dozens of short contests and several long ("marathons") every year. 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").www.topcoder.com }}
Project Euler Large collection of computational math problems (i.e. not directly related to programming but often requiring programming skills for solving).projecteuler.net}}
UVa Online Judge Contains over 4,500 problems for practising. Hosts regular online competitions.uva.onlinejudge.org}}
CodeCupAnnual international AI board game programming competition organized by the Dutch Olympiad in Informatics since 2003.[10][14]CodeCup.nl}}
InterviewBitA site which gamifies the experience of practicing for your interview and includes 300+ sample problems.[https://www.interviewbit.com/ interviewbit.com]
AtCoderA Japanese website for sports programming[https://atcoder.jp/ atcoder.jp]
CS AcademyA website for practicing programming algorithms and interview preparation[https://csacademy.com csacademy.com]

See also

  • Code golf

References

1. ^{{cite web|url=http://code.google.com/codejam|title=Google Code Jam|work=google.com|accessdate=2016-02-20}}
2. ^{{cite web|url=http://community.topcoder.com/tco12/overview-sponsor/tco12-sponsor-google/ |title=TCO12 Sponsor: Google - TCO 12 |work=topcoder.com |deadurl=yes |archiveurl=https://web.archive.org/web/20120216103218/http://community.topcoder.com/tco12/overview-sponsor/tco12-sponsor-google/ |archivedate=February 16, 2012 }}
3. ^{{cite web|url=http://www.facebook.com/hackercup|title=Facebook Hacker Cup|work=Facebook|accessdate=2016-02-20}}
4. ^[https://www.amazon.com/Programming-Challenges-Steven-S-Skiena/dp/0387001638 Programming Challenges (Skiena & Revilla)] {{ISBN|0387001638}}, {{ISBN|978-0387001630}}
5. ^{{cite web|url=https://www.hackerrank.com/infinitum|title=Programming problems and Competitions :: HackerRank|work=HackerRank|accessdate=2016-02-20}}
6. ^{{cite web|url=http://www.codechef.com/contests|title=COMPETE - CodeChef|work=codechef.com|accessdate=2016-02-20}}
7. ^{{cite web|url=http://snackdown.codechef.com|title=Snackdown Home - CodeChef|work=codechef.com}}
8. ^{{cite web|url=https://codeforces.com/contests|title=Codeforces contests|accessdate=2018-10-12}}
9. ^{{cite web|url=http://www.hackerrank.com/contests/w22|title=Programming problems and Competitions :: HackerRank|work=HackerRank|accessdate=2016-02-20}}
10. ^Lasse Hakulinen. [https://www.academia.edu/1606336/Survey_on_Informatics_Competitions_Developing_Tasks Survey on Informatics Competitions: Developing Tasks] – Olympiads in Informatics, 2011, Vol. 5, 12–25.
11. ^{{cite web|url=https://www.halite.io|title=Halite Artificial Intelligence Programming Challenge|work=www.halite.io}}
12. ^{{cite web|url=https://tech.cornell.edu/news/two-sigma-announces-public-launch-of-halite-ai-coding-game|title=Two Sigma Announces Public Launch of Halite|work=tech.cornell.edu}}
13. ^{{cite web|url=https://cloud.google.com/blog/big-data/2017/10/halite-helps-students-and-developers-compete-to-build-better-ai-on-google-cloud-platform|title=Halite helps students and developers compete to build better AI on Google Cloud Platform}}
14. ^{{cite web|url=http://lesley.ws/files/polyy14.pdf|title=Monte-Carlo Tree Search for Poly-Y|last=Wevers|first=Lesley|year=2014|accessdate=16 September 2018|location=University of Twente|archive-url=https://web.archive.org/web/20170413210719/http://lesley.ws/files/polyy14.pdf|archive-date=13 April 2017}}

External links

Open-source project for running contests
  • [https://github.com/cms-dev/cms Contest Management System] Open-source tool in Python to run and manage a programming contest on a server IOI 2012 and IOI 2013.

1 : Programming contests

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/13 10:34:30