Close challenges

Add a reply

Posted by psycho 788 days ago:
How about closing the challenges after some time - perhaps 3 months - and make the solutions visible to everybody? I know I would love to see some of the other solutions...
Posted by carldr 788 days ago:
How about closing the challenges after some time - perhaps 3 months - and make the solutions visible to everybody? I know I would love to see some of the other solutions...

The way I think we're going to do this is as follows :

- All challenges are always open.
- You get to see a solution if it's 2 weeks old, AND you've beaten it in the same language.

The thinking being that we don't want to get into the situation where if someone joins in a few months, it's not possible for them to end up on the overall leaderboard because there aren't enough open challenges, and that by just being able to see code you've beaten, you will probably still pick up a few nice tricks, but it doesn't stop you coming back to challenges as you improve generally.
Posted by ben 788 days ago:
...AND you've beaten it in the same language.

It seems like this is the only metric needed. What does a two-week delay buy?

Though I will admit, I'd love to see the entries of people who have beat me by 10s of bytes in the same language :)
Posted by carldr 788 days ago:
...AND you've beaten it in the same language.

It seems like this is the only metric needed. What does a two-week delay buy?

A chance for someone to improve their solution to avoid giving away all their tricks! Perhaps 2 weeks is a bit long. We're planning on releasing new challenges weekly, so using 1 week would fit with that better.

I should clarify that we'll only consider the best entries for each user when deciding if you can see them or not - If you have entries at 230 and 200, and I have entries at 215 and 210, I won't be able to see any of your code, but you'll be able to see my 210 entry, and that entry alone.
Posted by ben 788 days ago:
I should clarify that we'll only consider the best entries for each user when deciding if you can see them or not - If you have entries at 230 and 200, and I have entries at 215 and 210, I won't be able to see any of your code, but you'll be able to see my 210 entry, and that entry alone.

I'm not sure I understand the reasoning here. If I've beaten both, why can't I see both? For that matter, if you've beaten my entry at 230, you should be able to take a look at it.

Perhaps it's a fundamental disconnect in my perception of the purpose of the site. Yeah, the challenges are fun, but at the end of the day I want to learn something. I would imagine that most people feel the same way I do. Allowing us to see all the code that we've beaten gives us a better opportunity to learn.

I do understand that it may give the better competitors an edge in that they can learn from others code, make theirs smaller (and therefore harder to beat), but that's also in the spirit of learning.

Just my two cents, I suppose :)
Posted by carldr 788 days ago:
Just my two cents, I suppose :)

And a good two cents too. What does everyone else think?
Posted by will 788 days ago:
Just my two cents, I suppose :)

And a good two cents too. What does everyone else think?

I would also like to see others code, but the problem would be that you are giving the leader in a competition an advantage over the other players by only allowing the person with a smaller code size to see others code. A reverse handicap if you like. At the same time you can't make all the code available to everyone and keep the competitions open or everyone will get 10,000 points on each challenge.

Maybe the best way to do it would be to close the competitions after x (4+?) weeks or so, release the code and remove points gained in that competition. That would make it easier for noobs to start as the points would keep rolling.
Posted by psycho 788 days ago:
it's difficult. I understand Carl's reasoning for not closing a challenge. But I think every competitor, even a bad one, should be able to see other people's code. I posted a message on ruby-talk and my blog and learned a lot from the responses. How about this:

* you can only see other code if you are logged in
* when you have loocked at other code you are no longer allowed to submit code for this challenge

You could still cheat by creating multiple accounts but I think it could work most of the time...
Posted by will 788 days ago:
You could still cheat by creating multiple accounts but I think it could work most of the time...

You are still leaving it open to cheating which will penalise the honest players. I think you would have to close a challenge if you released the code.
Posted by carldr 788 days ago:
I would also like to see others code, but the problem would be that you are giving the leader in a competition an advantage over the other players by only allowing the person with a smaller code size to see others code. A reverse handicap if you like.

Yes, but the leader probably won't benefit from seeing larger code. Sure, they might pick up the odd trick, but it's unlikely. In fact, I would hope it would prompt the better players to help out the guys lower down without removing the fun of getting their solution shorter in the same way that Psycho benefited from suggestions and help from other people.

Maybe the best way to do it would be to close the competitions after x (4+?) weeks or so, release the code and remove points gained in that competition. That would make it easier for noobs to start as the points would keep rolling.

True, but then there aren't any long-term benefits to playing Codegolf and doing well in all the challenges, and a new user has to find one of the few open challenges interesting or they won't bother playing.

I understand Carl's reasoning for not closing a challenge. But I think every competitor, even a bad one, should be able to see other people's code. I posted a message on ruby-talk and my blog and learned a lot from the responses.

I imagine that in most challenges, the choice of algorithm is the key to getting the shorter solutions. There is no point showing such code to other users unless they also understand the reasons why that particular algorithm was chosen or else they don't learn, they just copy. And I don't think it would be a good idea to mandate that users submit an explanation alongside their code.

You could still cheat by creating multiple accounts but I think it could work most of the time...

I'm with Will on this one, I don't think this is a good idea.

As Psycho says it's difficult - Firstly because there are clearly a number of ways to approach the problem, but also because it fundamentally affects how the site works.

Personally, I'm still wanting to go with my first suggestion, and place the emphasis on discussion in the forums/IRC channel so people can ask for hints and tips on the approach they're using, perhaps pick up little golfing shortcuts, but still be left to create a new solution by themselves and still feel as though they've acheived something.
Posted by Kiwi 787 days ago:
Personally, I'm still wanting to go with my first suggestion, and place the emphasis on discussion in the forums/IRC channel so people can ask for hints and tips on the approach they're using, perhaps pick up little golfing shortcuts, but still be left to create a new solution by themselves and still feel as though they've acheived something.

This is nice, but it assumes that the ones from which you'd like to see the code:
- are willing to share their ideas
- are reading the forums
:)

(I'd personally really like to see how people found a way to make their solution 10-20 characters shorter than what I found... mmh, maybe ascii instead of utf-8 ?... :D)
Posted by Ciaran 787 days ago:
Perhaps rather than opening people's code up you could just post one possible solution after a period. This could consist of the most viable algorithm for defeating the challenge, with a good breakdown of it, and maybe sample code for each of the languages you've beaten the challenge in.
This would only be displayed to people who've beaten the challenge in at least one language.
Posted by psycho 787 days ago:
Another idea 'Code Golf League':
* any number of consecutive challenges are one season
* stats on the front page are for the current season
* when the season is over (4 weeks after last challenge) the results for this season are final and the code will become public
Posted by Mine GO BOOM 787 days ago:
True, but then there aren't any long-term benefits to playing Codegolf and doing well in all the challenges, and a new user has to find one of the few open challenges interesting or they won't bother playing.

So why not make it like real golf? You have a season, say every three months. You get little trophies for placing in the season, and then it starts anew for the next season. You can look at a person's current season stats, previous seasons, and lifetime.

Thus the old guys to the site will be sitting on tons of awards and lifetime points, but new people can come in and win seasons over top them. There is no fair way to have new users come in and play old challenges, so why not start everyone fresh every so often?

A side benefit of this is when a season is getting close to ending, you'll get the people trying harder for those last few points to rank higher. The people in the top ten would be writing their best stuff there to try and keep their lead.
Posted by carldr 787 days ago:
So why not make it like real golf? You have a season, say every three months. You get little trophies for placing in the season, and then it starts anew for the next season. You can look at a person's current season stats, previous seasons, and lifetime.

Thus the old guys to the site will be sitting on tons of awards and lifetime points, but new people can come in and win seasons over top them. There is no fair way to have new users come in and play old challenges, so why not start everyone fresh every so often?

A side benefit of this is when a season is getting close to ending, you'll get the people trying harder for those last few points to rank higher. The people in the top ten would be writing their best stuff there to try and keep their lead.

I think you guys are onto something here - I really like this idea, I think this will be the way to go.

Thanks for everyone's input so far, it's been great getting everyone's opinion on this.
Posted by will 784 days ago:
I think you guys are onto something here - I really like this idea, I think this will be the way to go.

I aggree, the season idea is a good one.
Posted by Mine GO BOOM 784 days ago:
A thing to watch out for with the seasons is what time of the year it is. Between Thanksgiving till New Years, certain weeks will be killer for some users. Thus, you may want to make that whole time specifically in one season, so thoses that will be unable to compete during those times can just take off one season, instead of it effecting two seasons.
Posted by carldr 784 days ago:
A thing to watch out for with the seasons is what time of the year it is. Between Thanksgiving till New Years, certain weeks will be killer for some users. Thus, you may want to make that whole time specifically in one season, so thoses that will be unable to compete during those times can just take off one season, instead of it effecting two seasons.

Good point, thanks for raising it. I'll have a final proposal by the end of this week as to how it'll all work!
Posted by dgrant 780 days ago:
I kind of like the way it is now, it being a complete mystery what technique others have used. I have now worked my way up from about 10th on 2 challenges to around 2nd or 3rd on both (I can't remember exactly) and during that process I learned a ton of python tricks that I hadn't done before. If I had been able to see the code of the competitors that I beat, I not have gone through the same learning process that I went through. Perhaps we could be allowed to see other people's code (perhaps only ones that are worse than our best) after we have submitted, but after we do so, we can no longer submit code and you are stuck with your best entry. I think that in terms of the competitive aspect of this site, that is fair, and it is compatible with the learning aspect of this site too.
Posted by Leafy 776 days ago:
I agree with the last post. I'm new to this site and have been concentrating on "99 bottles of beer" for the last week. After 2/3 days I reached an impass and thought that I would never be able to improve on my code of 256bytes for php. I *would* have given in to temptation and I'm still intrigued as to how someone has got it down to 181bytes!

Having said that, the fact that I know it's a) physically possible to improve on my code and b) that I am competing on an equal footing with everyone else (ie no-one else has been given hints or shown a solution code) has spurred me on to continue. I'm now down to 215bytes and have learnt so much in the process. I'm proud of my 6th php place for that challenge.

I agree that one day soon it would be great to see the winner's (and perhaps everyone else on the top 10's) answer, but I don't think it should be so soon. In a few weeks I'll move on to the other challenges and then am likely to return once I've had another brainwave.
And all the methods of trying to reveal answers to certain people but not others will just be too hard to police.

My two-cents would just be to keep the challenge going for a decent period of time ~6months-1year. Top 10-ers will keep returning to nitpick at their code and newbies will see what's possible and will no doubt knock everyone else off. Who knows...someone may even beat 181bytes for that challenge! ;-) By the end of the year you'll have so many new challenges (we hope) that you can retire the originals. Keep the challenge there for those that want it, but stop allowing people gaining points from it and allow people to view everyone else's answers.

My worry about releasing the "answers" to one challenge so soon is that it would stop people like myself playing it (I would assume everyone higher than me in the table had just cheated :o) and I would give in and look myself...once you've seen the best solution a proper coder can come up with, what's the point of someone as rubbish as I am trying to improve on it...)
I would also be tempted to just look at the answers to some of the earlier challenges so that I can nick some of the coding tricks to use in later challenges!

Leafy
Posted by hehejo 776 days ago:
I like the season idea very much.
But could I be a problem, that you ran out of "cool" challenges?
Posted by Leafy 754 days ago:
If a challenge is ever "closed" and everyone's code is revealed then I think that you should display the shortest code for each language in a seperate "Perfection?" section of the challenge page, and allow people to submit entries if they can beat them. That way, with everyone's code, algorithms and tricks visible we would effectively be using the combined talent of everyone here to come up with the ultimate answer to each challenge (Which may, of course, already have been achieved by the current leaders).

One extra comment on the "close" debate. At the moment the challenges are really testing both people's abilities to come up with good algorithms and their knowledge of tricks and features within the language that they are using. When you start opening up challenges people will quickly pick up these tricks by reading through others old code, which is likely to change the dynamic of this site. Something to bear in mind anyway.

It's a great site either way!
Leafy

ps. down from 215 to 185 bytes and up to 2nd in php bottles of beer...don't close it just yet ;o)
Posted by stutter 734 days ago:
I think the season approach would be a good solution. Maybe, expanding on that idea, seasons could consist of 4 challenges, released 1 per week (4 challenges/month roughly). However, instead of closing the season at the end of the 4th week, close the season at the end of the 8th week. This would give users who don't have all the time in the world to write and optimize code, an extra week per submission, on average. Plus, new users could join in any 2 month period and participate in 2 seasons simmultaneously.

The timeline would be similar to:

Week 1 - Season 1 starts, 1st challenge posted
Week 2 - 2nd challenge for season 1 posted
Week 3 - 3rd challenge for season 1 posted
Week 4 - 4th challenge for season 1 posted

Week 5 - Season 2 starts, 1st challenge for season 2 posted - still accepting entries for S1:C1,2,3,4
Week 6 - 2nd challenge for season 2 posted - still accepting entries for S1:C1,2,3,4
Week 7 - 3rd challenge for season 2 posted - still accepting entries for S1:C1,2,3,4
Week 8 - 4th challenge for season 2 posted - still accepting entries for S1:C1,2,3,4

Week 9 - Stop accepting entries for Season 1, Start new Season and repeat.

Just my two-cents. :\
Posted by Zapp 712 days ago:
Hi @all,
3 weeks and no news?
when will i get a chance to improve my code golfing ??

or is it bad taste to publish any challange solutions?
(even if it misses the black belt in code-fu?)

Zapp
Posted by dfg59 692 days ago:
Any update on this? It seems closing challenges in some fashion would be really helpful to a lot of users.
Posted by pbx 678 days ago:
What dfg59 said -- I'm new, so feel free to ignore this, but I like the idea of seasons or a rolling window. There are lots of ways to keep a historical record of individual performance without paying the big penalty of keeping all that code a secret!

This would also give you a way to phase in changes to scoring etc. that would be hard or contentious otherwise.
Posted by reyalp 647 days ago:
As a newcomer to the site, I'm glad all the old challenges are open. Of course, I would also like to see the code eventually, but I don't think there is much of a hurry. By the age of this thread, I guess I'm not the only one :)

I also like the idea in carldr's first post.
Posted by Iain 618 days ago:
I'm posting partly to keep this topic alive, but here's a suggestion: add a per-submission option to make the submission public, so each user can decide how much to reveal. For example, I might decide to make my 140-char solution public, but keep my 120-char solution secret.
Posted by dfg59 495 days ago:
Looks like challenges are never going to be closed, which is a real shame. I think http://projecteuler.net/ got the concept right, in that challenges are never closed, but forum threads are only viewable when you've submitted a correct answer to the specific question. Then, people are free to paste their answers as they see fit. Hence, people can share if they would like or keep their solutions hidden if they feel like it. Also, you are unable to view any thread until you've completed the challenge. What are the down sides here?
Posted by valerauko 47 days ago:
If what i say counts at all, i'd go with the seasons idea. Though seeing that it's normal if there's no challenge for 200 days, i'd guess this is a dead hope. It'd be great to see how others have beaten me by tens of characters, when i'm really stuck...

Add a reply