Worldwide Programming Contest 2011 - Questions & Answers
Note: all times are in GMT/CUT/UTC.
Error in Problem 4, Task 4a
The example for Problem 4, Subtask 4a found on page 8 reads:
Show toRGB C convolve Logos ⍝ embossed gray-scale logos
It should read:
Show toRGB C convolve toGray Logos ⍝ embossed gray-scale logos
Is it search or seek in Problem 5, Task 5 ?
In Problem 5, Task 5, the task description indicates to write a function named seek.
However the example uses a function named search.
The Problem5 namespace in the contest contains a stub function named search.
You may use either name (search or seek) in your solution.
I don't see a bitmap in the form when I call Problem3.show !
There was a bug in the code of the function show in the namespace Problem3.
The workspace on the website was updated at 2011-05-16 14:13 with a fix for this problem.
If you download the workspace again the bitmaps should now appear.
You can check that you have the correct version by running
.. this should display the sponsors' logos.
There appear to be errors in two of the problems
The formula for the Gaussian blur matrix (Problem 3, Task 5) was incorrect.
The sample output in Problem 3, Subtask 4a was incorrect.
The problem descriptions, ProblemDescriptions.pdf, were updated at 2011-05-16 20:09 to reflect
Our thanks to Stefano Lanzavecchia for pointing out the errors!
- 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 2011 running of this contest.
The money is split into $6,300 to be won by students and $6,300 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
Dyalog'11 Conference in
Boston Massachusetts, October 2-5 2011 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 the Grand Prize 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 problems.
- 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 item 14 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, solve as many of the tasks as possible
which are described on the Dyalog Programming Contest 2011
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 Interpreter, Version 12.0 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 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.
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 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.
- I have no hope of being the best APL programmer in the contest. Why should I
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.
- 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'11 Conference in Boston Massachusetts.
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.
- 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.
- 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?
Send an email with a subject line with the single word: Submission.
In the body, you write:
- 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)
Your code should be submitted in a UTF-8 Dyalog APL script (.dyalog) file which you will attach to the email.
If you are using Dyalog APL under Windows, the easiest way to create the script file is to run the function "SubmitMe" in the contest workspace AFTER you
have completed the programming tasks. Using SubmitMe requires that all code for a problem be located in the namespace
corresponding to that problem. SubmitMe will open a form for you to enter submission information and then create
the APL script file. Alternatively, you can create your own script file by using the
sample script file as a start.
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.
- 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 the Grand Prize or any of the consolation prizes, no matter how many questions you answer.
- 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 Boston, 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 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 23 cash prizes and a Grand Prize that includes all expense travel
(from anywhere in the world) to receive the award in person in Boston, Massachusetts.
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: /contest_2011/index.html
Best of luck, and please pass this along to your friends.
- 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 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?
You can send your questions to firstname.lastname@example.org. 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.
- Where do I submit my appeal of the results?
You don't. All award decisions are final, no matter how flawed.
- 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
- 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, expect the judges to 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.
- Question on Problem 2:
Should task 1 (addNoise) only add noise to alphabetical characters ignoring everything else or should it treat all characters the same (or just ignore white space) ?
addNoise should treat all characters the same (white space included).