Worldwide Programming Contest 2010 - Questions & Answers


  1. What is the purpose of this contest?
    The purpose of this programming contest is to encourage students, and others, to investigate APL (A Programming Language).
  2. Summary of Prizes
    A total of $15,000 in prize money will be given away in the 2010 running of this contest. The money is split into $7,500 to be won by students and $7,500 to be given as introduction awards to people who refer winning student(s) into the contest.

    The grand prize winner is expected to attend the APL2010 Conference in Berlin Germany, September 13-16 2010 to receive his or her prize in person and present the work that lead to winning the grand prize. Dyalog will pay travel costs (up to $3,500), $500 for incidental expenses, and all conference fees.

    The winning student is responsible for visas, travel documents, and other necessary arrangements, and must be legally able to travel. Transportation for only the winner will be provided.

    The winner will also receive a cash prize of $2,500, the second prize winner will be awarded $1,200 and third prize winner will be awarded $600. Three cash prizes of $500, $400 and $300 will be awarded for the best presentations of data generated while solving the tasks which have been set. Anyone who solves at least two tasks will participate in the drawing for 20 consolation prizes of $100 each.
  3. Who is eligible in this programming contest?
    This contest is open to everyone (except contest organisers and employees of Dyalog Ltd.). However, to be eligible for the Grand Prize you must meet the criteria for a free Dyalog Educational License. If you do not already have a Dyalog Educational License you can apply for one here.

    You must be a full time student at any primary or secondary school, college or graduate University and winners must submit proof of full-time enrollment in a school or a university. You may be on a break as long as you will be returning to full-time student status within a year.

    Twenty (20) consolation prizes of $100 will be selected at random from all submissions which has solved 2 or more problems.
  4. Identical Submissions
    If more than one person makes nearly identical submissions, all of them will be disqualified. However, you make make repeated submissions under your own name, where each one replaces the previous one. Please also see item 14 below.
  5. How will prizes be paid?
    All prizes are denominated in US Dollars and will be paid by electronic transfer to the bank account the winner informs us to pay into. If electronic transfer is not possible, a cheque will be issued. No other forms of payment will be made.
  6. How do I win?
    To win the Grand Prize, solve as many of the tasks as possible which are described on the Dyalog Programming Contest 2010 Task Description web page.

    Note: in order to be eligible for any prize you must solve at least two of the tasks nominated as the problems to solve in this contest.

    We will accept any APL code that can be loaded and run by a Windows or Linux Dyalog Version 12.1.

    The submission format is a UTF-8 text file which describes a Dyalog Namespace. This must begin with a line containing the text ":Namespace Contest2010" and end with the line ":EndNamespace". Between these markers, the body of each APL function must be listed, with a leading and trailing "Del" character – but without line numbers. This is the file format which is created by the Dyalog ]SAVE user command. An example file can be downloaded from the Sample Submissions web page. Thus, you may also use any other Version of APL as long as the code that you submit will run under Dyalog APL, and you are able to generate the required UTF-8 file containing your submission.

    If you are using Dyalog APL, you may submit a workspace containing the namespace.

    You must be a full-time student to win the Grand Prize, the second or third prize, one of the three presentation prizes or a consolation prize.

    To win an Introduction Award, simply be the person or institution who refers a person who wins any of the prizes. Anyone can win an introduction award.
  7. I have no hope of being the best APL programmer in the contest. Why should I bother?
    If you solve just two of the problems posed, you will have the same chance as everyone else of winning a consolation prize. And, the more people you refer to the contest who make submissions (even if they aren't the Grand Prize winner), the greater your chances of winning an Introduction Award.
  8. What is the most that I can win?


    • If you are a student: You could win the grand prize of $2,500 plus the trip to the APL2010 Conference in Berlin Germany. You cannot refer yourself so the person who referred you to the contest will win the equivalent Introduction Award, not you.

      If you further referred for example 3 consolation prize winners, you could win an additional $100 each, for a total of $2,800 plus the trip.
    • If you are not a student: You could still win an Introduction Award of $2,500 if you referred the Grand Prize winner. If you further referred the 2 runner up winners you could receive an additional $1,800 for a total of $4,300 cash.

      However, if you wish to go to the conference, you must make your own arrangement.
    • If you do not even submit an entry: You can still win up to $4,300 by introducing all three contest winners.

      Your chances of winning depend on the number of entries from people that you have referred.
  9. What is an acceptable problem solution?


    • Your solution to each problem must be an APL function which accepts the arguments and returns the results described in the task description, delivered in the format described under question #6.
    • Your solution must be unique. If your solution is identical to, or substantially similar to, any other entrants' solutions, none of you will receive credit for your solution. This is tricky because for many problems, the solution that occurs to most APL programmers will be identical. However, you can make your submission unique by:

      (a) Adding comments in your own words making it clear that you understand what the code does

      (b) Adding your name to the comment.
  10. Judging submissions
    If your submission meets the above criteria in item 9 - judgement will be applied. Except where explicitly stated in a task description, the judges will evaluate your solution in terms of completeness, use of APL's features, speed of execution and other criteria as they see fit.
  11. Judges determinations are final and cannot be contested under any circumstances.
    This is a contest for people who love a challenge and learning new things for their own sake, and the chance of winning a prize is just the icing on the cake. It is conceivable that someone could cheat us, we could lose your submission, or for some other reason we may not pick you as a winner when perhaps we should have. The judges cannot bear the risk of being responsible if this happens. NOTE THEREFORE: When you submit your contribution to the contest you automatically agree that you will not sue the judges, Dyalog or any of the other sponsors over anything related to this competition.
  12. I am not a student. May I submit answers?
    Yes. We encourage non-students to try the problems and submit solutions. You will be ineligible for a prize, however, we're very interested in seeing how you go about solving the problems.
  13. How do I make a submission?
    Send an email with a subject line with the single word: Submission.

    In the body, you write:


    • Name:
    • Address:
    • E-Mail: (which must be the same as the e-mail you submit from)
    • Phone Number: (including country code)
    • Student? (yes/no)
    • School: (or university / institution, if you are a student)
    • Referred By: (e-mail address of the person who referred you to this contest)


    Attach a Dyalog APL workspace, or a UTF-8 text file named: firstname_lastname_n, with an extension of .dws if the file is a workspace, or .dyalog if it is a text file.
    In the file name, 'firstname' should be your first name, 'lastname' your last name, and 'n' the number of problems you have solved. For example, if Bob Jones solved 3 problems, then his file would be called: bob_jones_3.dyalog. The file must contain the representation of a Dyalog namespace containing the functions that you have developed as solutions to the problems that you have solved, named as specified in the Task Descriptions.

    The namespace must also contain the following character vector variables:


    • MyEmail containing your e-mail address, identical to the one you used to submit your entry. This will uniquely identify you. You may not share an e-mail address with another contestant!!
    • ReferredBy the character vector containing the e-mail address of the person who referred you to the contest. This is the e-mail of the person who will win the matching prize if you win something.
    • Student: binary variable, 1= yes, 0=no
    • AboutMe - a text vector in which the applicant describes themselves.
    • Reactions - thoughts and comments about the APL contest.

    Any number of other functions can exist in the namespace that may be called by the main functions, which must have the names specified in the Contest Task Description. However, all code must be written in APL. You may not call non-APL code even though APL permits you to do so.


    An example of a UTF-8 file that meets our criteria can be found here.
  14. Will I be informed of receipt of submission?
    We will endeavour to confirm receipt of your submission within 2 business days. If you do not hear back by then, please email to ask for a status with the subject line of: Status Request.

    Do not include an attachment with your status request because it may have been a problem with the attachment that caused us not to receive your submission in the first place.

    After you make a submission, you may make another one at a later time to replace the first. For example, you might submit a solution a week before the deadline just to make sure you have submitted something, and then, as time permits, continue to solve additional problems and replace your entry with a new one. In other words, we will only consider your most recent submission. Previous submissions will be ignored.
  15. I don't know APL - I don't even understand what you mean by "namespace". What am I supposed to do?
    That's the point of this contest, to get you to learn about this stuff. You might want to start by taking a look at the manuals here. Hard copies of the manuals can be purchased from Lulu.

    We recommend Bernard Legrands tutorial Mastering Dyalog APL: A Complete Introduction to Dyalog APL. This book can be downloaded free of charge as a PDF file or purchased from Amazon. (Ignore the "out of stock" comment, the book is available).
  16. Who is ineligible to join this contest?
    Employees of Dyalog and the volunteers who are running the contest are ineligible to participate. If you are not a student you may still submit but you cannot win the Grand Prize or any of the consolation prizes, no matter how many questions you answer.
  17. May I collaborate with other people?
    Yes you may, however the submission must be by a single individual and only that one individual will be awarded a prize. If you chose to share your winnings with other people, you must make your own arrangements. If you win the Grand Prize you may choose to send a collaborator in your place to accept the prize in Berlin, however that person is expected to be able to competently present the work.

    If you collaborate with others in learning APL and solving the problems, you may make separate entries as long as your code if different by at least the comments, and you must be licensed for a Dyalog Educational License separately. You can apply for a Dyalog Educational License here.
  18. How do I maximize my chances of winning?
    To maximize your chance of winning a prize, do the best job you can on your single submission.

    You can increase your chances of winning an Introduction Award (or even multiple prizes) by referring other people who enter valid submissions. In fact, a person can win an Introduction Award without making a submission.

    If you want to win a prize do not worry too much about the referring competition. Remember, if they beat you on the prize, you win the same amount of cash for referring them.

    So, send an e-mail to all your friends suggesting they look at the contest rules. Here is a sample e-mail:

    Subject: Computer Programming Contest

    I have found a computer programming contest with 26 cash prizes and a Grand Prize that includes all expense travel (from anywhere in the world) to receive the award in person in Berlin, Germany.

    If you win, I will also receive a prize for referring you therefore please include my e-mail address with your submission as the person who introduced.

    You can find more information at: http://www.dyalog.com/contest_2010

    Best of luck, and please pass this along to your friends.


  19. Must I use Dyalog APL?
    No. There are other vendors of APL, and you may develop in any of them. However, you must eventually convert your solutions into a Dyalog workspace or a UTF-8 file as described here.
  20. What resources are available?
    There are a number of Dyalog mail reflectors and discussion groups. Finding them is part of the challenge.
  21. Where do I submit questions?
    You can send your questions to contest2010@dyalog.com. We do not guarantee that we will answer them, and if we do, we are most likely to add your question and the answer to this page so check back frequently for updates, clarifications, and so on. You can also look for additional information via the dyalogapl Twitter .
  22. Where do I submit my appeal of the results?
    You don't. All award decisions are final, no matter how flawed.
  23. Is it the first person to complete all the problems correctly who wins?
    The date on which you make the submission will have no influence on the likelihood that you will win a prize (so long as it is by Noon UTC on July 18th)
  24. Is there a way to do loops, or should I write pseudo loops using recursion. Is execution order guaranteed in (for example) 'each', should I exploit that? (or I could just copy paste a line a few times... but that's just silly).
    You are expected to find the answer to these questions yourself using the materials provided with APL.
  25. I heard about your programming contest from school and it sounds really nice. When I went to get the license, I saw that you have a condition that I must write a report each year about my use of the software.  Is it implied that this is only for as long as I use the software or does it require that I continue to write to you each year for the rest of my life saying I didn't use it?
    The condition regarding the annual report only applies if you wish to continue to use the software after one year (generally there will be a new release of the product and we'll be asking for your report when you ask us for the upgrade). If you get a license in order to enter the contest and you submit an entry, we would consider this to be your first 'annual report'. You do not need to continue writing to us if you do not use the software.
  26. May I utilize functions or code snippets from the workspaces that come with Dyalog (like DFNS) or other sources that I can find on my own?
    Yes, you may. However, bear in mind that you will be judged both on uniqueness and evidence of understanding of what you are doing. The judges read the Dyalog Forums and other similar channels, and will notice if contestants are trying to get "too much" help. So, at a minimum, include comments (in your own words) indicating that you understand what it is doing - don't just copy someone else's comments along with their code. If you really want to score well, you might want to see if you can improve on the code you find elsewhere. What's more, if you are in the running for a top prize, expect the judges to contact you to discuss your entry. Be prepared to talk about it intelligently.
  27. May I use a Dyalog Educational or Non-Commercial License to enter this competition, or does the possibility of winning prize money classify this as Commercial Use of the product?
    Dyalog Ltd. will not consider participation in programming contests to be a violation of the terms of these licenses - so long as the contests are open to students - or to the general public. It is therefore perfectly legal to use the educational license to create your contest entry.
  28. Dyalog has established a Twitter account where you can post questions and seek additional information. Log into the Dyalog Twitter feed here.

Best of luck!!

This contest is run and sponsored by APL programmers who owe their careers (and a good deal of pleasure) to their work in the language. We hope that you find exposure to APL broadens you horizons and tickles your fancy.

 

 

 

Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player

 

Questions and Answers

Task Descriptions

Sample and Downloads