I already posted in the “Puzzle solutions feedback” thread, but I decided to make a new thread for this because I really think this new feature is broken. I can see solutions to the Power of Thor puzzle in Scala, Haskell, and Python. I have never (yet) solved a single puzzle in any of these three languages. I could pirate these solutions from other people and use them to get myself a <language> Explorer, Regular, Lover, Addict achievement. Not cool.
Once i have 100% in a puzzle (which is pretty easy, you can also simply hardcode some puzzle), i see all the solution in every languages. This is a disaster for Coding Points and achievement. All languages success are now just meaningless and useless since we can just copy/paste the solutions we can see.
I can’t select what i want to publish
It is everything or nothing. But i don’t want to publish everything. I have my hardcoded-optimized solution for Mars Lander 2 and Android in the solo puzzles in many langages. If i publish, anyone with 100% at mars landers 2 can have my score at the optimization puzzle just by copy/pasting my code.
A simple solution for this both problems could be that one:
i can see a solution if:
(i have 100% at the solo puzzle in the same langage) OR (i already have 100% at all achievements with this langage and i have 100% at this puzzle in any langage)
With this solution, i can’t copy/paste a code just to gain more Coding Points.
I didn’t think you did this on purpose, could you please fix it before some tries to abuse it? For example I could unlock clojure looper with no trouble at all without knowing a damn thing about clojure
I did that but weirdly enough, I do not sense any guilt.
Rogerup: I wnet through the onboarding puzzle a couple easy ones with all languages. I think having the way to have people review your code / see alternative upvoted solutions is already a great way to improve.
I dont see the point of doing it “behind the back” . If they do… well, they do. Though I do not think there is much of a point since:
1- as others, I also get some legit achievements over the past few hours (today has been about getting 3 swift and 3 rust for me)
2- most - if not all - achievements related to “finish puzzle X in language Y” have “leaked” in GitHub. rollback might just end up punishing coders from case 1 who work on their own algorithm while not affecting much the case 2
I keep on thinking getting the view of only the languages for which you already 100%-ed a puzzle is the best way to go. It also make this whole “voting” much more meaningful: to assess one’s quality in algo / implementation, I think I need to be able to understand it and compare it to something I did on my own.
First thanks for making continuous improvements to that website. It’s always worthwhile.
However on this one, as mentionned above, I don’t think it’s good idea to be able to see a puzzle solution in a language in which you haven’t solved the problem yourself. You really could game the system very easily (am a soon to be haskell lover in this case ^^). Am not here for ‘achievements’ anyway but in my point of view that a pretty big loophole!!
As @Magus said, being able to share exactly what you wanna and just don’t want would be great. To go further I do think you should be able in your profile settings to activate or deactivate that feature in itself…
Personnally I would like to see some contest solutions when it’s over and the contest games are not turned into optimization game on the website. With comments from best players in different languages etc…
Hi everyone and thank you for your feedback about Solutions.
I would like to share with you the reason why we launched this feature.
Why we did that
In fact, this is not a bug, it’s intentional but we agree that there’s some problems dues to achievements and Coding Points.
Our main goal is to allow everyone to become a better programmer while having fun. By releasing Solutions, we were hoping that everyone could learn new languages in a new and a more fun way :
Solve a puzzle in your favorite language (algorithm part)
View solution in a language you want to learn to understand the syntax
Try to use this language on a puzzle without looking at the solution. But if you feel stuck, refer to the solution
We believe that it is more fun than reading an entire academic book when you want to learn a new language and this is why we would like to keep the possibility to look at every language solution when you have solved a puzzle.
What we should change
However, we agree that this new feature leads to some cheating possibilities with regards to the achievements linked to languages.
We see 3 potential fixes :
keep it as it (not the best, considering your feedback ;))
remove coding points linked to language achievements
modify language achievements : the language counter increases only if this is the first time you solve the puzzle and it can also increase when submitting Clash of Code puzzles at 100%.
(i.e. If you have solved Power of Thor in Java and then in Python, it will only increase the counter of the Java achievement. If you do 3 clashes in Python, it will increase by 3 the counter of Python achievement).
We would love to hear from you about these fixes.
About the share option, this is a very first step to have a lot of solutions really quickly. We will of course update it as soon as possible to choose more precisely what solution you want to share.
About the language learning argument:
It is a personal opinion, but I do not think seing ready-to-use solutions in language A for a problem already solved in language B is the best way to learn and develop in language A. This for 2 reasons:
1- There is no guarantee that the solution I am currently seing enforce best programming practices.
2- Slutions are based on a particular “mindset” (I do not know if this term is correct), the one of the developer. As a beginner, seing an “expert coded” solution based on a different approach might not be all that helpful.
The “framework” you use for displaying those solutions already has good things in it that could help in the long run (upvote / downvote, comments) but they are really subjective (maybe I liked the dirty solution of .ash. because he is my friend and downvoted @nicolas_patrois because his avatar is a cacodemon and those bastards were my nightmare as a child. And what might happen even more realisticaly is that “dirty hacks” that use some language tricks get upvoted - and this is a good thing, as those are a + when you want to progress in a language you already know. But they are really bad when it comes to aquire best practices learning a language from the scratch)
What I consider being an excellent way to progress is getting feedback one one’s own code. This is targeted to one’s own mindset and more experienced coders might still be able to project in it and provide feedback and what is good practice, what is “dirty”, what is “rube-goldberg code” and where did one reinvent the wheel because the function is natively implemented in the language. This learning method also maps with the feedback some user provided about limiting the solutions viewed to the language you already 100%ed a puzzle.
About “what you should change”:
I do not have a strong opinion regarding your ideas. I agree that “do nothing” might not be the best one though . As mentioned couple lines above, I think limiting the displayed language to the ones you 100%ed a puzzle does not come in contradiction with your ultimate end of making learning new languages easier. If on top of that you also want to remove CP or the way the language achievements are counted, that would be fine with me - as long as I still have those shiny little pictures on my profile ^^.
Couple Ideas regarding the feature:
Let’s not be all about complain - especially that the feature itself has a huuuuuuuge potential of awesomeness. Here couple ideas
As mentioned, only display solutions of languages already 100%ed.
Let the user chose which solutions to publish (2 positive effects: I can filter the “best coded ones” and thus improve the quality of shared code while reducing that absolute ammount of code shared)
Implement a way to request code reviews.
Do nothing and provide a example solution well implemented and documented for each puzzle for each language so that new users of a language have a example guaranteeing easy understanding and best code practices for a give language (good luck with that )
This resume it all for me, especially the part that you don’t learn a new language by looking at the perfect answer, the best way to learn a new language is to practice, and once you’ve looked to another person answer, isn’t really hard to think by yourself about another way to do it. I won’t repeat (much) what @Naity just said but the two major points for me would be:
Separate language solutions accessibility
Choose which code to submit (I have some nasty code I don’t want to show ) or at least disable showing your code entirely is you wish so.
Moreover, to add a little more to it, on the ranking system of the solutions, that’s a great idea but it’s not visible enough (you have to click on a solution to see it) and it could be cool if we have different ranking system like “Best practices” or “Code golfing” or even “Funny answer” like this:
By the way this website separate solutions by language too, just saying
For the 3 potential fixes:
See above text
Why not? But it lose a little of its meaning and defeat the aim achievement=reward.
It isn’t ok, because it will mean that the progress of all achievement combined can’t go above 64 (current puzzles number) and that those that already finished all puzzle won’t get to choose where to rank. That also means one cannot be “Language Addict” for more than 4 language, and that some achievements will remains unreachable forever (which is something every completionist fear)
Also, what will happen to those who have already got all language achievement? Will the achievements be removed? If so they’ll lose all the hard word they put into this.
I really ship the separate language part, and I hope you’ll consider it (refer to @Naity well detailed post for more information).
I agree with the arguments and solutions given by Naity.
I will not repeat them but I would like to add one more thing about that. I think that it is important to keep in mind that this website is also a platform for hiring people. With the possibility to see and copy codes in every language, how will you recognize someone who truly know the language? I am perfectly aware that you can already probably find most of the solutions in every language on the web, but having this option here is just an invitation to do so.
By the way, thank you for all the hard work you put on CodinGame !