Yes, point B is very valid. I have seen some people sharing links to their sites/blogs in order to increase traffic to their sites. But, the worst part is that they are posting solutions as well as detailed explanations to problems solved by them on a daily basis. . And they are posting advertisements beside them.
Point C - This is esentially 'Spirit of SPOJ' point. I feel that this point should not get weakened among the other "factual" points as against this philosophical point. One should lay ample stress on this. And this point is the one which would influence people the most.
P.S. - And lesser would be affected those who would go on the seventh heaven after cracking a 2000 user problem in 1st attempt or share their silly mistakes as if it were a marked historical event of importance .
Yeah, I don't understand why make such comments as well. They're probably motivated by the fact that there are many such comments (so it seems natural).
That's I'm in the slow process of removing comments on Polish SPOJ - to discourage posting meaningless comments by new users. After that, I'll start even slower process of removing them from main SPOJ. But frankly, I think it will take a year to do that. Because it's extremely boring and I'm doing only few problems at a time.
And as for posting posts on blogs with solution to problems on SPOJ, I can understand it and even relate to it as I do that myself (but in Polish and describing problems from SPOJPL). So I think it's ok if you describe the algorithm and thus teach people the way of thinking. But of course providing a bare code allows only few users to learn as they have to understand the code reading it line by line.
I beg your pardon sir, but I seem not to concur with this idea . Let us take an example - Say, a guy is struggling on a problem, for about 3-4 days, which has only been successfully done by 10 users(or may be 1000, doesn't hamper the point of argument). Now, some other guy comes across a blog which explains that "algorithm". He reads it and codes the problem in 15 minutes(Not to mention the side effects - got AC in 1st attempt, in 15 min, 10 line code .... bla bla in comments ). So, do you allow me to imply from your statement that this scenario is perfectly ok? And what would those 10 geniuses have to their kitty? Yeah, one can claim that the guy who spend 3-4 days had a REAL learning and what not ! But does that not defeat the purpose of SPOJ. One of the consequence that I saw during my short stint at practicing SPOJ is that some tougher problems have been cracked by more number of people and the easier ones by much lesser. Why? Because the algorithm/solution is easily available. And on "learning" - there are a 1000 more websites with each having 10000 questions with each question having 1000s of different solutions(the order of billions !). One can learn there. Let SPOJ remain the unique "SPOJ" and not become CODECHEF or GCJ or something else. At SPOJ, the user can resist the temptation of not peeking into the solution because of its sheer unavailability. That's the uniqueness. In case the creators of SPOJ want it to be like that, somebody else must not overrule it !
Sorry for answering so late. I wanted to think about the problem for some time and then I had other things to do.
Anyway, in my opinion the most important thing is to learn as much as you can. And editorials help with that. So if one of these 10 geniuses you mentioned decides to reveal the algorithm, many others will benefit as problems with only 10 ACs contain probably much knowledgde compressed. So also users from TOP100 can benefit and they can learn from editorials less often.
But I understand your argument that there should be a judge where user have to solve every problem on his own. I don't know if I'd like SPOJ to be that judge. It certainly would be a good idea if there were a few problems. But there are many of them. Anyway, we can't forbid users to share their solutions and even post codes as they can always post it under another name. So it can't be stopped. We could only forbid it and threaten to ban them. But I don't think it's a good idea. And even if I did, my opinion matters only a little as the policy states that it's possible to post whatever one want and when I asked about these publishers as I call them, the answer was to (shortened) 1) ban cheaters 2) leave publishers 3) maybe even allow to publish codes or editorials inside SPOJ. So it won't happen.
I hate to disappoint others so I've fortunately came up with an idea. It probably won't satisfy you but in my opinion it has potential. So, we can't implement your idea on SPOJ but... SPOJ unlike other online judges (I think) allows to create separate contests! So we can create a contest where the rule is not to publish your solutions anyway and if you do, you'll be banned from the contest (and your Problem Setters and Contest Setters rights will be taken if you do so as you're unfair). So Problem Setters would have a choice - add a problem to main SPOJ or add it to my(?) contest NO_PUBLI. Maybe there won't be many PSs that would like to add there problem or perhaps there would be many.
What do you think about my idea? I haven't made the contest yet and I'm not promising I will as perhaps some users will make some strong arguments against it.
==/!\ This message may contain some errors or approximations ; it's a quick answer to give my sentiments.== ==
I don't think publish solution is a good idea. I think we can't stop people who want publish, but we can forbid links in signatures, moto, to solutions blog...
==
But democracy will speak, and if it would happen that publishing is allowed or promoted, then, if it's spoj_inside, here my 'recommendations' : * Only after solved a problem we should be able to see editorials, not before, else solve a task is a non sens. * The psetter "solution" should strongly be the first to be "visible", it could be a part of rule for setting a problem : to publish an official solution by psetter. (Visible by all when the problem is first solved) * Other "solutions" could be published in a kind of forum thread like there is at Project_Euler. (PE is a great reference!!!) * It is important to give rules about license on those publishing ; I strongly vote for Creative Commons ones that could be enhanced by other in the spirit of author, completed, ... and such that no commercial use can be made with. * Anyway I prefer not to see that!
==
Publishing solutions will kill classical as it is one of the only remaining coding place where you can find lot of (easy or moderate or hard) problems without any available solution so that you can search on those that suit the best for you and solve it and can be proud of solving it by your own. In contrast Project_Euler (excellent quality) have very few problems with non available solutions, and those ones are often way too hard for me (or I suppose that), I really would like no publishers have spoiled them. I remember the time where I struggled to solve my first ones and I saw some known people massively cheat... The good answer of Project_Euler was to give credits only to solvers who solved fast recent tasks : excellent answer ; but way too hard for me. The funny part was the Eulerians absent from new ranking table! After I found in SPOJ a way to practice my poor skills, and I tried (very often) to solve tasks with a very fast method so that mine was truly mine, and to continuously experiment new ideas : it was a vector of progress for me. I never progress as much as when I tried to time like numerix or Mitch ; many thanks to them by the way. (I hope some users will follow some similar experiments to understand by their-self so many coding tricks). There's maybe other reasons whom I'm not sure, and I'm not the only psolver to do that, each of us have its own reasons maybe different. For me a problem with an available solution that can be googled have (and it's a shame) no value at my eyes. I'm proud when I can solve a new uspoiled task, and I feel bad when a beautiful problem fall by the fault of an irresponsible publisher. It is maybe rude to qualify them of irresponsible, but I just note that I don't think any high ranked user have published his solutions ; we massively find middle skilled psolver. kokosek is maybe the only known exception of a talented psolver that publish some solutions.
I think the only way to learn something is to search methods by our own, read unrelated papers for general methods. Read a solution won't profit to anybody. If you think you need that : just go to codechef tutorials or other sites (I don't know them, but there's maybe a lot of similar as pointed previously).
If SPOJ should become a place with published solutions, I will maybe solve no more tasks, and only work on setting new problems. (I yet work more on setting new tasks than solve others, but I like both, and I've too a full time job unrelated to coding.)
Edit : There's challenge section too with lot of good remaining tasks, Mitch is the boss here and I understand well why it is a good investment. (and I write 'no value', it's too hard word ; sorry).
Sorry, but I didn't see your opinion about my idea of a contest where it's forbidden to publish solutions. Isn't that a solution for the problem. Problem Setters who don't want their problems to be described in a contest would be able to add them in a safe place where users can solve them on their own. As I recall, you'd like that, Francky. So these Problem Setters would provide problems for this contest and users like jbourne who doesn't want the editorials would have a place where there are none of them.
The more I think about it, the better solution is seems. Of course at first the number of problems wouldn't be big but in time...
Or instead create a new section where it is allowed to publish solutions ; classical should be the one with grand father clause and no publishing should have been the rule for classical. Are the psetter historically thought spoj will allow publishing solutions? I doubt. (We can move spoiled and killed problems to that new section, maybe or maybe not.)
== or symmetric attitude
But we can create as you proposed a section without publishing (name ??? say WP), and move classical problems that have been 'protected from spoil' for now and that will benefit of a new official protection. This would give a great amount of good challenging problems to this section ; but in the same time some job (choose them and move them). But is it fair ??? It's a big question. Do nothing isn't fair anymore. Abandon of old good classical in publish_allow_section is a crime too. For the problems killed by publishers the crime is yet done...
==== What do others think about publishing ? Is it really need ?
In any case, for the sake of the ranking system, can a problem with published solution give points ??? I doubt ! Or you can make several ranking tables ; at least one that don't take spoiled problems into account. For me it would become the only valid rank, but if others want to see more points it would be possible... eg : Table 1 : (points of challenge + WP) . Table 2 : (points of 'spoiled problems').
==== Please note that I have nothing special against publishing as I provide some posts in PE threads and I was proud to be one of the first with enough kudos to get all 'Forum Post Awards' in particular "Esteemed Journalist". But those posts didn't spoil the problems as there are available only when the problem is solved ; that makes all the difference. (please note that it was mainly on some 'easy' problems and as I provided some new little tricks, I got lot of kudos on some easy problems with lot of visitors. There are many much more valuable contributions by some solvers in some way harder problems that merits much more than my poor posts)
I like quality problems, and I hope the best for the spoj problem set.
I'm not a friend of the "another new sub-SPOJ contest". It would split the one and only SPOJ into parts and take something away from its "spirit". I would be prefer not to change too much. Of course, it is unsatisfying as it is, but maybe there is not so much that can be done to generate a satisfying state.
Changing old classical problems into a kind of "published and thus worthless/pointless etc." problem is not fair for all those, that solved the problem either before they were published or nevertheless completetly on their own. I do not believe that the main interest of all new problemsolvers is to find a published solution and get their points for submitting that. Of course, there are such "problemsolvers" (which in fact are not what the name says), and whenever one of those is detected, he/she should be banned.
What could be done in my opinion without too much effort is: 1. If problemsolvers have a link on there user side that leads directly to published solutions, explain to them the effect of that action and ask them friendly to remove that link. I they do not react, ask them again (not so friendly), set a time limit and ban that user after time is over. 2. If problemsolvers do not have a link on the user side, but a blog/site or whatever with published solutions that is connected to the user name, explain to them the effect of that action and ask them ... see above.
Maybe in some cases it would help to offer those publishing users an alternative, as they seem to like telling the world about their solved problems. instead of publishing the solution, they could explain the/one idea that is behind the problem and an approach for solving it. Even this is a kind of spoiling, but it is by far better than a complete AC code, that has only to be copied and pasted to get a green SPOJ-light. Anyway a link even to those publications shouldn't be allowed on the user page.
My experience: I tried item 1 of my above suggestions upto the "ask friendly" part. Result was, that this user (with link to published solutions on the user page) apologized and removed that link immediately. He was not aware of what was done with his publications.
I concur very much with @Francky and partly with @numerix. @Kokosek - Some points would be a repetition of above to press harder on the fact. My main concern was the vulnerability & futility of the ranking system. I mean, apart from practicing well, we also get an appreciation from SPOJ by our ranks and points by which we can assess/rate ourselves( and may be boast to our employer , in some cases !). The points is a big aberration from reality in many cases .
And as they said, a new category(WP) would be a diversion to say the least. And let's look-up to the formidable pool of the order 15000 or so Classical questions. Agree with "the Grand Father clause" thing Although, I, personally, like the idea of 2 types of rankings(2 tables as mentioned) - 1. all problems solved(this can help resolve the issue of tutorials too. Give score for all solved problems, including tutorials. And you see that is why the tutorial section suffers from lack of participation. No motivation to do it. 2. all problems whose solution is not to be found anywhere. I think, this would make people refrain from posting solutions just as a show-off. Because cheaters and solution-inspiration seekers would not refrain from copying because for some of the users the take-away is the rank and not the learning.
But, it is very difficult to implement . And many won't agree to this.
Although, the ones posting links to blogs should be strictly dealt with. I would press on the fact again, that there is no dearth of Programming sites. Millions of questions and solutions. "The sake of Learning" is no excuse at SPOJ. I come to SPOJ when I wanna practice the "no solution" problems. Otherwise, I would go to codechef or codeforces or GCJ practice set.
I can even absorb the fact that some people have "public-git-repos"(I had this earlier, have taken corrective measures), hence, their solutions are exposed. But, not able to digest the idea of explicitly creating blogs, putting advertisements. This is kinda invitation in itself to exploit SPOJ and make a mockery of its ranking system(and earn money & popularity in return ! Wow,I would also love to do that.The spirit goes to hell ).
The idea of a new ranking system can 'solve' all problems about clones, spoiled, published, etc, problems.
No new section would be create, clones* could come back to classical, BUT only unspoiled problems are taken into account in the ranking system. ie spoiled problems are 0.00 valued problems, but as they are sometimes great can be placed in classical.
It's not a perfect system, as it is always possible to find some weaknesses but it seems quite fair. What do you think about that ?
Maybe I missed something or misunderstood, but as I see it (please correct me, if I'm wrong), that would lead to the following situation: I solve a problem of the "unspoiled section", I am happy (maybe proud) about solving it and getting some points as regard. Then, maybe weeks, months or years later, an EB member notices, that someone published a solution for that problem. As a result of that, it is moved to the "you get no point for that problem"-spoiled / classical or whatever it will be called section and all honest, hard working problem solvers lose their points because of a single user that published that solution.
Yes, the publisher kill the problem. So it's a bad idea ; it's true. What to do ?
To be honest (and you know that), the actual situation is : when a publisher kill a problem, some new 'psolvers' (sic!) will decrease the number of points of the problem, and with the time put it to near 0.
@numerix is right on nullifying marks. Although, I would not mind giving a fresh start to SPOJ, but the MASTERS & GRANDMASTERS would be at a great loss(esp. those who have left SPOJ and still manage to be in top 100, say).
I think, taking strict action against the solution publishers is a good and stable thing to start with. SPOJ is very weak on that part. And you see the trade-off - nobody would want their account to be banned or say points-made-zero in lieu of one's blog advertisements. One would have to protect the chicken to keep getting the eggs . Why can't we start with this? Some publishers don't even know/realize that it is incorrect. Many of those might stop doing it in "Spirit".
Well, definitely more users have Google account than there are users who are active on this forum and we wanted to reach as many users as possible. And we had to use a tool that force to log in in order to complete the survey if we wanted to be 95% sure that each user will answer the survey only 1 time (the only other way is to make multiple accounts). So someone always would be discontented. We could also make an email with the survey but it would reach even nonactive users and that we didn't want.
What would be a good replacement in your opinion? It's probable that there would be more surveys so we'd switch the tool if yours met all the requirements.
Sorry for compelling to have/create a Google account.
OK, I did it, and I saw that the only proposed solution is the creation of a new problem set with no available solution. As the only option, I have some questions: * are all unspoiled classical problems aimed to be moved to the 'protected' set ? (I hope that) * (else) are all classical problems aimed to be spoiled by publishing ? (I don't wish that) * _____(or) will publishing be available only after the first AC ? (not perfect, but maybe acceptable) * What about copyright issue : where are stored those 'papers' (will it be a spoj feature ?), what will be the license ? (very important questions)
Why not simply allow publishing on some selected tutorial tasks? This would work as a test. If conclusive it could lead to a next level with published solution.
Well, it won't be any option you mentioned, I think. I think we shouldn't force anything. So moving all unspoiled problems to the new problemset and leaving all unspoiled problems in the classical problemset are both not very good solutions. I think it would be better for Problem Setters to decide. So, we'll make a list of unspoiled problems, then make a set (not multiset) of PSs who created these problems and will ask them which problemset they'd prefer. If they don't answer I think that we'll move their problems to the new problemset (but we'll see how the survey goes).
And as for publishing solutions - everything would be the same. If someone wants to do it - fine, but not on SPOJ (at least for now, as there are many many more important features to implement and bugs to fix). But we'll inform them about the statistics of cheating, perhaps.
I've been writing something up and hopefully it could be useful.
A lot of this discussion arises from the fact that the score for classical problems is calculated based on number of solvers, specifically 80 / (40 + number_of_solvers). For this type of score system we have:
1) high granularity 2) objectivity (avoids subjective decisions on how many points a problem is worth) 3) harder problems tend to be worth more points 4) a problem's point value becomes negligible (very close to 0) when there are very many solvers 5) no domain knowledge needed, similar to general machine learning algorithms (no need to entrust anyone with the responsibility of deciding a problem's point value -- the system just "figures it out") 6) cheaters (users who submit code that they found and didn't write) lower point values of problems that they submit to 7) everybody's classical scores go down over time if they don't solve more problems, but the point values of older and harder problems are more stable than newer and easier problems
This is in contrast to other score systems, for example the Polish SPOJ rank table ( http://www.mariosoft.pl/spoj/rank.php4 ), where Easy problems are worth 1 point, Medium 2, Hard 3, Challenge 4.
Lately we have been discussing unfairness arising from point (6). Some of my ideas, observations, or opinions:
A) I think it's very good that the current system allows some solvers such as Min_25 to get very high rank by focusing more on harder problems and not as much on quantity of problems solved. B) When cheaters lower a problem's point value, it does not affect the relative rankings between two people who both solved that problem or both didn't solve that problem. C) It's not obvious how much cheating is actually occurring, and how much it is affecting point values. We don't have good data / statistics on that. D) The formula was created many years ago, when SPOJ user base was smaller. It could be worth considering adjusting the formula to e.g. 120 / (60 + number_of_solvers) to counteract "inflation". Those are just example numbers I pulled out of thin air, I didn't do any analysis there. E) Another possible modification to the score system: we could make it so that problems are worth at least e.g. 0.1 points no matter how many solvers there are. This could make doing the easier problems a seem little more worthwhile for beginners? For now, any problem that is solved by more than 760 people will be worth less than 0.1 points. (And I also didn't do any analysis to choose 0.1, maybe a different value could make more sense.) F) Very rarely do cheaters rise to the very top ranks. The only ones I can remember are arena (Rully Soelaiman) and baladeva, and they were removed from the main rankings. G) Even if cheaters undermine the point values, it does not change how interesting or uninteresting the problems themselves are. H) The cheating issue bothers me a bit, but not very much. I'd rather spend my time working on new problems than worrying about such things. But it is good to see that the issue is being given serious consideration. I) It seems reasonable to take into account that the SPOJ problem set is not the same as a live contest with a deadline and possibly prizes involved, where the rankings could be considered more "important" and cheating more closely tracked. J) Instead of creating a new problem set, maybe it would be more interesting to try to do something like ALGOLIGA1 but in English (also similar to the DASM contests many years ago). (Francky and I discussed the idea in some previous email correspondence, but I hadn't thought about it for a while.) K) I'm not convinced that we should hold publishers (of solutions or editorials) responsible for the cheating that occurs. I think the blame really rests on the cheaters, and the publishers are in some sense innocent. For publishers, I think that they should just try to be discreet if they can -- maybe write a note discouraging cheating, modify code or only give pseudocode so that it can't be copied and pasted, make it non-obvious to search for, or some things like that. Aside from that, it seems to make more sense to target cheaters and not publishers. L) It is not practical to try to police the whole Internet. We have limited resources. M) Giving any publisher the power to make a problem worth 0 points just by publishing a solution seems rather bad / silly. (This was stated nicely be numerix.) N) Making any big changes that affect the rankings of many honest solvers negatively should be avoided if possible.
I know those are a lot of points. Point (J) is most relevant to the recent posts in this thread.
Well, my idea was to add an additional feature, as Francky suggested. There would be another problemset "unspoiled" and there would be another ranking for unspoiled problems. The old ranking would include both problems from "classical" and "unspoiled" problemsets. So I don't think anyone would be dissatisfied. Or am I not seeing something?
As for AlgoLiga, I don't understand how it solves the problem. Problems from current round would be unspoiled but later when they are moved to main SPOJ (would they be moved?) they can be spoiled again. So people would have limited time to solve some unspoiled problems. It is a good idea to make such a contest but just in parallel with the new problemset. // And BTW, we made AlgoLiga because there was no regular Polish programming contest. And in English there is CodeForces where Problem Setters can even earn money for preparing problems for a round. But if someone wants to make such a contest I don't have anything against.
That sounds like it might work. I don't think those details were presented in the survey or this forum thread, so it was unclear what was being discussed. And I only offered mild criticism for what it vaguely sounded like. Now with the details, I do have a few hesitations:
a) It seems like it might help cheaters a little, by clearly identifying which problems are known to have published solutions and which are not. b) It seems kind of unnecessary, but I don't know. The current ranking system still gives a pretty good indication of where people are in relation to each other, doesn't it? I'm just not sure if we gain a lot by doing it that way.
Well, "So people would have limited time to solve some unspoiled problems" is really the point I was making. That seems to be a big feature of live contests in general. And it also seems to apply to the proposed idea of adding a new problem set.
For comparison, Project Euler was the first problem solving contest site that I participated in, before I knew SPOJ existed. It was clear to me while participating on that site that the way to prove you were not a cheater was to get on the list of fastest solvers for several problems, if you could. (Of course, trying to solve those problems as fast is possible is also a fun and hard challenge, regardless of whether there are any cheaters there or not.)
With a contest like ALGOLIGA, aside from being interesting in itself, cheating could be monitored more closely, and then after deadline the results get locked in permanently, so there is no possibility to have the points diluted by cheaters at some future date. After deadline, problems could be added to main SPOJ without any official solutions posted, and treated like other classical problems.
We know that there are many honest problem solvers on SPOJ. (For evidence, just look at the status page and see how many non-ACs are getting submitted all the time.) But some may worry that their rank will not be taken very seriously because of the effect of cheaters, and that it may not be easy to tell whether or not you are one of them. While I think the main ranking is still a decently meaningful metric, having another contest with rounds and deadlines might be a nice alternative option for those who would be interested. (And maybe a way to generate some extra excitement in the SPOJ community, and encourage new, original and high quality problems to be published.)
It's just an idea that seemed to apply to the discussion. It doesn't really have to be considered in the light of cheating. It is really a separate idea that can stand by itself.
And I know it would take a lot of work to organise such a contest. I'm not suggesting admins would need to devote any time to it (besides possibly making announcements of new rounds coming up). It would only be an option if we happened to have enough skilled problem setters who wanted to see the project happen.
That's good to know. My knowledge of other programming contests is generally quite limited (aside from knowing their names).
Maybe the idea of a contest like ALGOLIGA but in English (with a similar connection to main SPOJ that ALGOLIGA has to Polish SPOJ) is redundant considering other contests like CodeForces, TopCoder, Google Code Jam, etc. I hadn't considered that much. I guess it would require looking at a lot of details, to see if there was anything really new to offer. (Although maybe it would be worth doing even if feels a little redundant, for various reasons like the effect on the community.)