SPOJ

From Wikipedia, the free encyclopedia
Jump to: navigation, search

SPOJ (Sphere Online Judge) is an online judge system with over 200,000 registered users and over 20000 problems. The solution to problems can be submitted in over 40 languages. SPOJ has a rapidly growing problem set/tasks available for practice 24 hours/day, including many original tasks prepared by the community of expert problem setters associated with the project. SPOJ allows advanced users to organize contests under their own rules and problems. It also includes a forum where programmers can discuss how they can solve a particular problem.

Apart from the English language, SPOJ also offers its content in Polish, Portuguese and Vietnamese languages.

History[edit]

This system was originally created to apply an online judge in the teaching of students. It basically focused on the students and lecturers of universities and members of a wider programming community, interested in algorithms and programming contests.

Aims[edit]

It aimed at different users for different purposes such as: [1]

  • For young people and beginner programmers to take a shine to algorithms.
  • The students of universities are given a chance to do their homework, honestly, thoroughly and without cheating.
  • ACM contest pros can solve tasks without being cramped by the restraints of too few programming languages or an inconvenient user interface.
  • Enthusiasts of functional or object oriented programming can solve contest problems in their favorite language.
  • Any persons willing to share an interesting task with the rest of the SPOJ community can do so nearly automatically (one mail to the admins requesting problem-setter's privileges is enough),
  • Any person, wishing to organize a programming contest, with nearly any rules they may decide upon, may do so at any time they choose, without the help of system admins.

Problems[edit]

The archived problems in spoj are divided in 5 categories: [2]

  • Classical: These are binary scored problems. Either Accepted or Wrong answer.
  • Challenge: These allow users to submit worse or better solutions. There is not definite answers to a particular problem.
  • Partial: These are like challenge problems but for educational purpose.
  • Tutorial: These are like classical problems but easier or with generally known algorithm and for educational purpose
  • Riddle: These are problems which contains puzzles.

Judging[edit]

Clusters[edit]

The submission are judged on two clusters: [3]

  • Pyramid (Intel Pentium III 733 MHz): It consists of old solid Pentium III machines that are serving SPOJ since its very beginning in 2004. These machines are slow compared to other judge. On this cluster memory limit for submissions is 256 MB.
  • Cube (Intel Pentium G860 3 GHz): This new cluster consists of modern and fast Intel Pentium G860 CPUs. On Cube your submissions will run from 30 to 50 times faster than on Pyramid so you can expect that if you test your solution at home then it will have similar execution time on SPOJ. On this cluster memory limit for submissions is 1536 MB.

Scoring[edit]

The scores are given based on the category in which problems are divided. [4]

  • Classical: The score for one problem is   \tfrac{80}{40+\mathrm{number\_of\_people\_who\_have\_solved\_it}}    points.
  • Challenge: The score has two criteria as follows:
    • for a top score in any challenge: 3 points,
    • for any lower score in a challenge: (user's score relative to the top score) points.
  • Partial: 0 points
  • Tutorial: 0 points
  • Riddle: 0 points

The formulae used for calculating the scores are currently evolving

Languages[edit]

SPOJ supports about 40 languages in which the users can submit their solutions. They are:
Ada, Doc(no testing), Assembler, Awk, Bash, Brainfuck, C99 strict, Clps, Clojure, Lisp, LISP, D, Erlang, Fortran,Go, Intercal, Jar, JavaScript, Lua, Nemerle, Nice, Node.js, Ocaml, Pascal, Pdf, Perl, Php, PostScript, Prolog, Scala, Scheme, Sed, Smalltalk, Tcl, Tecs, Text, Whitespace, C, C++, Java, Python, C#, Go, Haskell, OCaml, F#, Ruby, Icon, Intercal and Pike.

See also[edit]

References[edit]

  1. ^ Kosowski, Adrian (September 3, 2004). "What is SPOJ's _purpose_?". SPOJ. Retrieved September 22, 2014. 
  2. ^ "PROBLEMS". SPOJ. Retrieved September 22, 2014. 
  3. ^ "Clusters". SPOJ. Retrieved September 22, 2014. 
  4. ^ "http://www.spoj.com/ranks/users/". SPOJ. Retrieved September 22, 2014. 

External links[edit]