16 / 33
Jan 2015

==/!\ 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 stuck_out_tongue, in some cases !).
The points is a big aberration from reality in many cases frowning .

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 smile
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 frowning . 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 stuck_out_tongue .
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".

There's a news:

The here link is goo.gl/forms/VsktGdeRPx2

I don't want to use any google account. How can I see the survey and answers ?

I thought a survey could be launched in the forum ; phpBB should do that. Why the use of an (evil?) external tool ?

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.

What do you think about this idea?

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.)

Well, I don't see how it helps. If cheater wants to solve problem XYZ he just needs to google "spoj XYZ solution". So it's already as easy as possible. And as for the "unspoiled" problemset - banning will be not only for cheaters but for publishers as well. So it will be a holy ground.

That's why we did this survey. If there are not many users who would like such a problemset, it won't be implemented.

As for AlgoLiga, I understand now it's relevance to the topic but I still think that these ideas should be parallel. But it would be awesome to have regularly new problems coming to the new problemset. smile
So if you want, make another topic called "AlgoLeague" if you want to organize this contest. Some PSs should be interested in preparing some problems from time to time if we were able to find them only in Poland.

  • I like the '0.1 points idea' given by Cyclops. This would encourage people to solve 'problems that are otherwise a good learning, but grown unpopular(ironically) because a number of users have solved them'. As, in case of no-incentive(or very low incentive - say, 0.001 points), users tend to avoid these problems.

  • Problems with Creating a new category -
    Broadly, there are 4 types of people at SPOJ. Those who are there for -

  • learning (unaffected by points)
  • only points
  • both learning & points
  • others( categorised for the sake of completeness)

Strangely, cheaters fall in all the categories(considering both knowingly or unknowingly). I believe, the category 3 has most users.

Now, if we make a new category, claiming - 'This is the real Arena; here are the unpublished, un-spoilt problems', who would care for the 'older problems' then? The consequence would be - all the people from category 2,3 would definitely switch to 'only the new problems' for practice. And most from 1,4 would follow suit. So, the old classical problems would be brought down to the worth of tutorial problems.

I'm not sure what I had suggested, in what context, but I don't feel good with a new problem set with 'protected' problems, as it would implies other are 'abandoned'
and psolvers would be encouraged to publish solutions (I read that somewhere).

I didn't see in survey a question like "Are opposed to publishing ?" or "Do you want to discourage publishing ?"
I know we can't force people to do what they want out of spoj, a basic freedom.
But I think we should discourage them as possible to publish, and forbid links in profile.
After that, if a cheater want to use google, he will find something he will think as learning (even if it's the opposite).

I will support anything in the way to protect the largest classical problems, split the set isn't a good solution imho.
I perhaps wrote some thoughts in the case (unhappily) where democracy conduced to split the set, it's not my favorite option.

Who is favorable to publish solutions ????????
Do we should let speak a lot of very young students who prefer facilities, or mainly the honorable high ranked 'old' users (like Blue Mary) as "the Guardian of the Spirit of SPOJ" ? (Voluntarily excessive style - please read "democracy is a complex stuff")

==

AlgoLeague is a parallel, independent, option, very nice, I will participate with pleasure to create problems if it exits.

But, but Francky... The idea of a new problemset was yours. I was hoping to satisfy mostly you and jbourne as other users didn't seem that's such big of a deal. Here is a quote from this topic (maybe I didn't understand something).

I also think that most users will solve first problems from the unspoiled problemset but I doubt that it will kill "classical". There will still be some interesting problems, users will still get points solving these problems (but they will count only in one ranking) and jbourne's 1st category will still solve problems from both problemsets. And as there will be much less problems in the new problemset people who manage to solve all of them (or all that they are able to) will go back to the classical problemset. I really believe that's this new problemset is not a death sentence for "classical". It won't become the second "tutorial".

Discouraging publishers won't take place as I've already asked about it. So knowing what is not an option I want to come up with a scenario that will satisfy most users. So forgive me for filtering your requests that I know can't happen. There is one thing that can happen, though. It's not much, but... You can discourage cheaters. By that I mean that you can write some users who publish their codes without describing the algorithm and explain your point of view. Because why wouldn't you be able to? Nobody can't forbid nobody to write anybody (this sentence is probably incorrect gramatically - I have problems with double/triple negations). I know that's time consuming and perhaps won't do much good but I really can't do anything else. Hope you understand.

As for Mitch's suggestions regarding the formula, I'll suggest your two improvements (0.1 minimum and different constants in the formula).