TopCoder介绍

2024-04-20 06:08
文章标签 介绍 topcoder

本文主要是介绍TopCoder介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

From Wikipedia, the free encyclopedia

TopCoder is a company which administers contests in computer programming. TopCoder hosts weekly online algorithm competitions — known as SRMs or "single round matches" — as well as weekly competitions in design and development. The work in design and development produces useful software which is licensed for profit by TopCoder. Competitors involved in the creation of these components are paid royalties based on these sales. The software resulting from algorithm competitions — and the less-frequent marathon matches — is not usually directly useful, but sponsor companies sometimes provide money to pay the victors. Statistics (including an overall "rating" for each developer) are tracked over time for competitors in each category.

<script type="text/javascript">// </script>

Types of competitions

  • Algorithms (competition length 2 hours): Competitors are given a set (usually three) of algorithmic problems and have 75 minutes to correctly solve as many as they can.
  • Design (competition length 1 week): Competitors are given a set of user requirements and attempt to convert them into a usable software design specification. Their efforts are judged on a variety of "real-world" criteria on how correct and practical their design is.
  • Development (competition length 1 week): Competitors are given a set of design specification and attempt to write software components that match those specification. These components are judged on their functionality and coding style.
  • Marathon Matches (competition length 1 week): Contestants are given a particularly difficult algorithmic problem. The scoring is done by computer based on criteria specifically suited to the problem.

Algorithm competitions

TopCoder has been hosting algorithm competitions since 2001. Each SRM consists of four phases:

  • Coding phase (75-85 minutes): Coders write programs to solve three short problems using C++, Java, C#, or Visual Basic. Each problem set consists of an easy, medium, and hard question, the difficulty of which is reflected in each problem's point value. The problems' point values vary from match to match; a common point value distribution is 250-500-1000. Also, the quicker a coder writes a given problem, the more points that coder gets.
  • Intermission (5 minutes): After the coding phase ends, there is a short break before the challenge phase begins. This time can be used to think of challenge cases.
  • Challenge phase (10-15 minutes): Coders can challenge the submitted problems of other participants in their room by constructing test cases in an attempt to generate erroneous output. The challenger receives 50 points for a successful challenge, and loses 25 points for an unsuccessful challenge. If a coder's solution is successfully challenged, that coder receives no points for the problem. Each successful challenge is added to the set of tests to be run during the system testing phase.
  • System-testing phase: Each problem that survives through the challenge phase is run on many test cases. If a coder's solution fails the system tests, that coder receives no points for the problem.

At the end of the contest, ratings are updated to incorporate each participating coder's performance.

Component design and development competitions

TopCoder hosts design and development competitions in which coders can compete to create components and applications that are either generally useful, or that third parties have contracted for.

TopCoder design and development competitions are week-long competitions. New components are posted every Thursday, and coders can choose a component from a list of Java and .NET components, and they have a week to design or develop their chosen component. Each week new components are posted. Development components are generally components that have been designed in a previous component design contest.

Marathon matches

Larger problems than are asked during a traditional TopCoder algorithm round are posted. They provide a more flexible competition format with an extended timeline.

Tournaments

  • Google Code Jam: Each summer Google sponsors a set of TopCoder competitions with qualifying rounds and a tournament structure. Google has also held regional Code Jams restricted to Europe, Latin America, China and India.
  • TopCoder Open: An annual event which features algorithm, design, and development competitions in a tournament structure, culminating in a live finale for the top competitors.
  • TopCoder Collegiate Challenge: An annual event in which college students compete for money and school glory.
  • TopCoder High School: An annual event in which high school students compete for scholarship and school glory. This tournament is started on 2007

Prizes

TopCoder initially awarded money every week to coders who did well in the weekly competitions, or Single Round Matches (SRMs). For a while, prize money was only awarded twice a year to winners and finalists of the TopCoder Collegiate Challenge (TCCC, which is in the spring) and the TopCoder Open (formerly the Invitational, which is in the fall). As of June 2005, some weekly SRMs began to once again award prize money, being sponsored by outside companies such as Google and Yahoo!.

Statistics

Although 100,000 people[3] have registered as members at TopCoder website as of December 14, 2006 - less than 18% of them have participated in at least one algorithm competition with only 5% were active (participated during last 6 months). Even less have participated in component design (0.3%) and development (0.6%)[4].

 Competitions, ratings, and divisions

In the early days, the Iron Man system was set up under which coders were grouped into rooms of ten according to skill level (determined by rating, similar to ELO chess rating), in order to encourage newcomers (who would have little hope of beating out the best coders for prize money) to stay and compete. After the contest, the 3 highest scoring coders in each room were paid according to the skill level of the room (winners in the room of contestants with the top 10 ratings were paid more than those in the room with coders 11-20, and so on). This created some paradoxical situations such as the possibility of coming fourth in the whole contest and getting no money, while the 111th placed contestant got paid, and gave rise to ratings diving. Ratings diving, or taking a ratings dive was accomplished simply by doing very poorly on purpose in a particular contest (by opening and not submitting any problems or submitting incorrect challenges). As a result, a contestant would, in their next contest, be placed in a room with 9 coders among whom they had a good chance of winning some money. The idea was that the dramatically increased chance of winning money made up for the fact that the money to be won was a lesser amount given the lower average rating of the room.

Coders have since been divided into two divisions, Division I and Division II. Division I consists of all coders with a rating of at least 1200, and Division II consists of all coders with a rating of 1199 or less. Coders are grouped in rooms with other members of their division, in groups of up to 20 coders in such a way that within each division, the average coder ratings in each of the rooms are roughly equal.

TopCoder as a business

The business plan behind TopCoder comprises several objectives. One goal is to be a recruitment center where companies can come to find programmers who are proven to be highly skilled, and where talented programmers can display their skills to a worldwide audience. Large companies sponsor TopCoder events to gain credibility with and exposure to talented developers. TopCoder also sells software licenses to use the growing body of components that have been developed in competition. Finally, TopCoder acts as an outsourcing center, allowing companies to farm out custom design and development tasks to TopCoder competitors.

See also

  • ACM International Collegiate Programming Contest (ICPC)
  • ICFP Programming Contest

References

  1. ^ TopCoder management team. Retrieved on 2006-11-27.
  2. ^ Topcoder Jobs and Profile. Yahoo! HotJobs. Retrieved on 2006-11-29.
  3. ^ TopCoder Celebrates 100,000 Members.

External links

  • Official TopCoder website.
 

width="728" scrolling="no" height="90" frameborder="0" align="middle" src="http://download1.csdn.net/down3/20070601/01184120111.htm" marginheight="0" marginwidth="0">

这篇关于TopCoder介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/919463

相关文章

Java中 instanceof 的用法详细介绍

《Java中instanceof的用法详细介绍》在Java中,instanceof是一个二元运算符(类型比较操作符),用于检查一个对象是否是某个特定类、接口的实例,或者是否是其子类的实例,这篇文章... 目录引言基本语法基本作用1. 检查对象是否是指定类的实例2. 检查对象是否是子类的实例3. 检查对象是否

什么是ReFS 文件系统? ntfs和refs的优缺点区别介绍

《什么是ReFS文件系统?ntfs和refs的优缺点区别介绍》最近有用户在Win11Insider的安装界面中发现,可以使用ReFS来格式化硬盘,这是不是意味着,ReFS有望在未来成为W... 数十年以来,Windows 系统一直将 NTFS 作为「内置硬盘」的默认文件系统。不过近些年来,微软还在研发一款名

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

JAVA SE包装类和泛型详细介绍及说明方法

《JAVASE包装类和泛型详细介绍及说明方法》:本文主要介绍JAVASE包装类和泛型的相关资料,包括基本数据类型与包装类的对应关系,以及装箱和拆箱的概念,并重点讲解了自动装箱和自动拆箱的机制,文... 目录1. 包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和自动拆箱2. 泛型2