Jump to content


Check out our Community Blogs

Register and join over 40,000 other developers!


Recent Status Updates

View All Updates

Photo
- - - - -

CodeCall Contest - Suggestions

suggestions

This topic has been archived. This means that you cannot reply to this topic.
8 replies to this topic

#1 Sundance

Sundance

    CC Devotee

  • Validating
  • PipPipPipPipPipPip
  • 572 posts

Posted 21 April 2014 - 10:11 AM

Thank you all for your contribution to the Codecall contest! 

 

If you have any suggestions or tips for the next contest they may be posted here!

ALL suggestions are welcome so don't be afraid to post!


Please read the

FaQ & Guidelines


#2 0xDEADBEEF

0xDEADBEEF

    CC Devotee

  • Senior Member
  • PipPipPipPipPipPip
  • 790 posts

Posted 21 April 2014 - 11:17 AM

Some suggestions:

 

1) Maybe give more time (say 2/3 days) to allow slightly more complex tasks, or give people who only have a few hours of downtime in the day to compete.

2) Have more feedback through the competition; maybe even a leader board

3) The easy/medium/hard tasks all appeared to be evolutions of the previous task. Maybe they should renamed to level 1/2/3

 

Otherwise again thanks for doing this.


Creating SEGFAULTs since 1995.


#3 sepp2k

sepp2k

    CC Addict

  • Advanced Member
  • PipPipPipPipPip
  • 183 posts

Posted 21 April 2014 - 03:14 PM

First of all, I had a lot of fun participating in the contest, so thanks for that and please don't be disheartened by the fact that the below list turned out rather long. :-)

One thing that would definitely be nice would be more "rigorous" problem description where each word or phrase that could be interpreted in multiple ways is explicitly defined and the definition is precise enough that it leaves no ambiguity (like whether "Otto" is a palindrome or not - i.e. whether "O" == "o" for the purpose of the task). Where appropriate it would also help to know what the possible range of inputs is (like you need to work with strings, will they be ASCII? Or when working with numbers, what's the largest number that we need to be able to work with).

One thing that definitely helps is when you provide example inputs and outputs for the tasks.

It might also help if you define what the format of input and output is (like "XYZ should be taken as a command line parameter; n should be given as input on a line of its own etc."). On the other hand that might be too restricting (because if you said the input is like a number n followed by n lines of input, people couldn't submit a GUI as a solution). On the other hand it would mean that submissions would be more easily comparable and definitely more easily testable. But maybe that's not so important. I guess I'm not really sure whether this a good idea or not.

I also think it would be nice if the next time the tasks would be a bit more varied. In this contest it seems that all of the problems except the palindrome one and the game one fell into the "general utility" category. The palindrome task was kind-of algorithmic in nature, but really only the easy part. The other parts where just about file handling (in fact a lot of problems where about file handling, which is probably a large part of why it felt like there was a lack of variety to me). I think it would be interesting if tasks would be about a larger variety of areas the next time. For example there could be an algorithmic task whose medium and hard parts actually require some deeper algorithmic thinking. And then there could be ones about, say, image processing and AI or algorithmic learning and so on. They wouldn't need to be hard ones (certainly not the easy parts), but just a small glimpse into those areas would be nice, I think. You already did that with cryptography here, so something like that, but for many different areas and with medium and hard parts that go a bit more in-depth into that subject, is what I'm talking about. I'd personally enjoy it a lot if one of the tasks was about programming languages, which is my favorite topic.

I also found that in some cases the medium and/or hard sub-problems weren't really harder - just more work. That is anyone able to solve the easy problem would also be able to solve the medium and hard problems without necessarily learning anything new - it'd just take them more time.

So taking all that into account, here's an example of how I'd have done a task about palindromes:

A string s is a palindrome if and only if reversing¹ s results in a string whose contents are equal to s. For the purpose of this task we define capital letters to be equal to their lower case counter parts, such that the string "Otto" would count as equal to "ottO" and would thus be a palindrome. All inputs will be in ASCII. Input can be accepted in whichever way you choose (be it as a command line parameter, read from stdin or through a GUI). Similarly output may also be produced in whichever way you choose (say writing to stdout or through a GUI).

1 (Easy): Write a program that takes a single word (that is a string without any spaces, tabs, carriage returns or newlines) and outputs "Palindrome" if the word is a palindrome or "Not a palindrome" if it is not.

2 (Medium): Write a program that takes a single word and outputs "Permuted Palindrome" if the any permutation² of the word is a palindrome or "Not a permuted palindrome" otherwise. The program should take at most O(n) time to run.

3 (Hard): Write a program takes a single word and outputs the longest prefix³ of that word that is a palindrome.

¹ Where by reversing we mean creating a string t of size n (where n is the size of s) such that the ith character of t is equal to the (n-i)th character of s for all i between 1 and n (inclusive).

² A permutation of a string is a string that contains the same characters and the same number of each character as that string, but not necessarily in the same order. (Note that a string is always a permutation of itself.)

³ A string s of length n is a prefix of string t of length m if and only if n <= m and for each i from 1 to n (inclusive), the ith character of t is equal to the ith character of s. (Note that a string is always a prefix of itself.)


The problem I see with the hard subproblem here is that it's quite hard if you don't already know the solution and don't google it, but becomes comparatively easy if you google it (still harder to code than the medium problem, but a lot easier than not googling it). Not really sure how to work around that in an online competition.

#4 wim DC

wim DC

    Roar

  • Expert Member
  • PipPipPipPipPipPipPipPip
  • 2681 posts

Posted 22 April 2014 - 05:08 AM

From my pov:

  • 1 a day was too much
  • making the medium / hard part would often - ideally - require me to change methods that I used for easy/medium, (partially) invalidating them. It would be cool if only submitting hard would count for all 3.


#5 Vaielab

Vaielab

    Programming God

  • Expert Member
  • PipPipPipPipPipPipPip
  • 1382 posts

Posted 22 April 2014 - 05:35 AM

I once went to a conference where they build their own interpreter.

It was really basic, some very simple math operation, simple memory management (If I remember correctly, we only had 12 memory space to store variables), and some very simple chars manipulation.

They give us a list of possible command (maybe 20 differents commands), and with that, we had to create simple task.

But, when the language is new, and so basic, simple task can be pretty hard. I remember one task was to find the square root of a number, and we had some pretty hard time to do so.

When executing, each operation took 0.1seconds.

 

The idea behind this was not to show us how to use a language, but how to make optimized code with something very bad.

So even if some were genius in c++, on thoses task, we were all on the same level.

 

I do understand that it will take some work to create your own "language emulator / interpreter", but it could be a good idea for next contest.


You can now stalk me on linkedin: http://ca.linkedin.c...elle/24/b44/88/ !


#6 0xDEADBEEF

0xDEADBEEF

    CC Devotee

  • Senior Member
  • PipPipPipPipPipPip
  • 790 posts

Posted 22 April 2014 - 06:21 AM


I do understand that it will take some work to create your own "language emulator / interpreter", but it could be a good idea for next contest.

 

+1

 

I like the idea of a slightly longer task; with maybe points to hit. So for-example create an interpreted language and some standard library elements. Then create some other tasks with it.

 

I think its hard to balance between providing a challenge to some of more experienced users; as well as providing access for newer users. So varying between having one-day long challenges; to multi-day challenges should cater for all.


Creating SEGFAULTs since 1995.


#7 WingedPanther73

WingedPanther73

    A spammer's worst nightmare

  • Moderator
  • 17757 posts

Posted 22 April 2014 - 06:44 AM

I recall when we did some challenges based on the Euler Project problems. It was not uncommon for people to have issues with them just based on their strength at math, knowledge of algorithms, etc.

 

Of course, I'm still a bit ouchy about when we did voting for solutions on one contest, and incorrect solutions would win. *sulk sulk*


Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog

My MineCraft server site: http://banishedwings.enjin.com/


#8 Ritwik I the programmer

Ritwik I the programmer

    CC Addict

  • Advanced Member
  • PipPipPipPipPip
  • 244 posts

Posted 23 April 2014 - 04:40 AM

One solution against Googling is to set new, creative algorithm based problems(basic console stuff, but a lot of brainpower and only basic knowledge of a language required). However that would really be unfair to experienced programmers, and WingedPanther would almost invariably win them. :D

And... I know this is not a suggestion, but when is the next one?(just asking) :)


I can believe, but why should I?


#9 Sundance

Sundance

    CC Devotee

  • Validating
  • PipPipPipPipPipPip
  • 572 posts

Posted 23 April 2014 - 05:13 AM

I know this is not a suggestion, but when is the next one?(just asking) :)

 

After it's been planned and worked out it will be announced but I would say the next "CodeCall" contest will be around the end of May. 


Edited by Kadence, 23 April 2014 - 05:13 AM.

Please read the

FaQ & Guidelines