2012 World Wide APL Programming Contest - Questions & Answers
This page will be updated as new questions (and answers) arise.
All times are in GMT/CUT/UTC.
- 6/14/2012: Updated Contest Materials
We were made aware that the function stubs for tasks 2 and 3 in Problem 1 in Contest2012.dws and Contest2012Sample.dyalog did not match the syntax given in ProblemDescriptions.pdf. "BestHand" and "Showdown" did not specify a left argument, "community". These files have been amended and are available for download.
- 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).
- Summary of Prizes
A total of $12,600 in prize money will be given away in the 2012 running of this contest.
The money is split into $6,300 to be won by students and $6,300 to be given as referral awards to people who refer winning student(s) into the contest.
The grand prize winner is expected to attend the Dyalog'12 Conference in Elsinore, Denmark commencing 14 October 2012 to receive his or her prize in person and present the work that led 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.
Anyone who solves at least two tasks will participate in the drawing for 20 consolation prizes of $100 each.
- 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 any of the cash prizes other than the referral awards, you must meet the criteria for a free Dyalog Educational Licence.
If you do not already have a Dyalog Educational Licence 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 tasks.
- Identical Submissions
If more than one person makes nearly identical submissions, all of them will be disqualified.
However, you may make repeated submissions under your own name, where each one replaces the previous one.
Please also see below.
- 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.
- How do I win?
To win the Grand Prize, you must correctly solve all the tasks of the problems which are described in the Problem Descriptions document .
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 Interpreter, Version 12.1 or later.
The submission format is a UTF-8 text file which describes a Dyalog Namespace which contains a sub-namespace for each problem which
has been solved. An valid example of the file format can be downloaded from the Sample Submission 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.
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
To win a Referral Award, simply
be the person or institution who refers a person who wins any of the prizes. Anyone can win a referral award.
- I have no hope of being the best APL programmer in the contest. Why should I
If you solve just two of the tasks 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 a Referral Award.
- 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 Dyalog'12 Conference in Elsinore, Denmark. In addition to any prize you win, you can receive referral awards for any other winners whom you refer. However, you cannot refer yourself.
- If you are not a student or do not submit an entry: You could still win a Referral Award of $2,500 if you referred the Grand Prize winner. In theory, if you referred all the cash prize winners, you could receive up to $6300.
However, if you wish to go to the conference, you must make your own arrangement.
- What is an acceptable problem solution?
- Guidelines for an acceptable solution may be found in the Problem Descriptions document.
- 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.
- 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.
- 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.
- I am not a student. May I submit answers?
Yes. We encourage non-students to try the problems and submit solutions.
You will not be eligible for a prize, however, we're very interested in seeing how you go about solving the problems and
you might receive an honorable mention when we announce the winners.
- How do I make a submission?
Guidelines for an acceptable solution may be foind in the Problem Descriptions document.
- 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.
- 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 Legrand's 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.
- 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 any of the cash prizes other than referral awards.
- 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 Elsinore, 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 Licence separately. You can apply for a Dyalog Educational Licence here.
- How do I maximize my chances of winning?
To maximize your chance of winning a prize, do the best job you can on your
You can increase your chances of winning one or more Referral Awards by referring other people who enter valid submissions. In fact, a person can win a Referral 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 23 cash prizes and a Grand Prize that includes all expense travel
(from anywhere in the world) to receive the award in person in Elsinore, Denmark!
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_2012/index.html
Best of luck, and please pass this along to your friends.
- Must I use Dyalog APL?
No. There are vendors of other APL systems, and you may develop using any of them. However, you must eventually convert your solutions into a UTF-8 file as described here.
- What resources are available?
There are a number of Dyalog mail reflectors and discussion groups. Finding them is part of the challenge.
- Where do I submit questions about the contest?
You can send your questions to email@example.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 and
the Facebook group Dyalog Programming Contest.
- How do I appeal the results?
You don't. All award decisions are final, no matter how flawed.
- Does it matter when I send in my submission, as long as it's before the deadline?
No. The judging of submissions will not begin until after the submission deadline of 12:00 UTC (Noon), Sunday 5 August 2012.
While there is no strategic advantage to submitting early, it is advisable to submit sufficiently in advance of the deadline to help ensure that receipt of your submission is confirmed.
- 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.
- 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, the judges may contact you to discuss your entry. Be prepared to talk about it intelligently.
- May I use a Dyalog Educational or Non-Commercial Licence 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 licences - so long as the contests are open to students - or to the general public. It is therefore perfectly legal to use the educational licence to create your contest entry.
- Dyalog has established a Twitter account where you can post questions and seek additional information. Log into the Dyalog Twitter
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.
None at present
Questions submitted by Contest Particpants