Clash of Code : Bugs & Improvement

So guys I want to choose game mode - fast or short. Just because I think “shortest” game mode is bad idea in it’s current realization: lenght of your code depends of your programming language a lot and in addition it count length of your comments and “system” lines(like import and so on). But that isn’t the main problem: I think in programming(competive and industrial) code clearness is very important. But in pursuit of short code people makes it unreadable. It is harmful for programmers i think.
//sry for bad english

5 Likes

As a Codingamer i would like it have diffrent levels from easy to extrem hard
so you can pick the right level to fit you (the higher the level the higher the points recived for winning)
As a Codingamer i would like more than just “fastest”,“shortest” and “Reverse” modes

1 Like

What are your suggestions for additional modes?

We have 2 secrets mode :

  • Blind Code -> You can’t compile your code :slight_smile:
  • Babylone -> The programming language is imposed and you can’t change it.

We didn’t release theses mods because a majority of the CG team didn’t find theses mods “fun”

Feel free to send us your mode :stuck_out_tongue:

1 Like

I think the metric of characters in clashes is a very bad idea as it teaches bad habits. In real programming selfdescribing variable and method names make code better readable and maintainable, especially in a team environment where you didn’t write the code. The variable name “numberOfAccounts” is much better than “n”, yet in a clash you get a penalty for using more characters,

Better metrics would be runtime, memory used and readability and just maybe the size of the resulting binary. I can think of very few examples in real life where a couple of extra lines of code are a bad idea if they increase readability, most of the time they don’t even increase the size of the compiled result.

1 Like

In real programming, what’s the purpose of coding the exact same thing with 4 differents peoples in less than 20min? facepalm :slight_smile:

4 Likes

We all agree that in real life, code readability is essential and code size doesn’t matter if the code is more easy to understand and maintain. I understand your point of view, this may teach bad habits.

However you need to keep in mind two things:

  1. it’s a game and code golfing is a very interesting thing because you need to master your language and be very clever/creative in order to reduce the size of your code.

  2. from a technical perspective, it’s way easier to consider the code size than the other metrics you are suggesting :

Your code is compiled and run and different servers that are not all strictly identical. Regarding readability, except for the main languages, there are no tools to compute the quality of the solutions. And for the memory usage, the best way is to write tests that doesn’t work with bad solutions. But we wanted the clashes to be easy so most of the problems can be solve with simple algorithms.

1 Like
In real programming, what's the purpose of coding the exact same thing with 4 differents peoples in less than 20min? facepalm smile

The purpose for real programming is practice. Practice makes perfect, but practicing bad habits results in bad habits.

We all agree that in real life, code readability is essential and code size doesn't matter if the code is more easy to understand and maintain.

IMHO this is the issue. Many people quite new to programming use this webpage to learn and practice programming, and they might not know this and think shorter code is better. Maybe a disclaimer of some sort would help clarify that you shouldn’t normally do this and it’s a for fun challenge.

I understand the technical perspective.

Maybe in the future a readability metric could be possible, it’s more difficult to implement for sure, but some IDEs do check for language conventions, like Jetbrains IDE for java or the ReSharper plugin for VS, you could use something similar. Just in case the Codingame devs run out of ideas :wink:

Yep, there are tools available for Java, C, C++, Python etc. But not for all the languages… And they are far from perfect : there are false positives and you only need to fix what the tool says in order to get a perfect score.

Ah ah :D. We have a lot of cool things under preparation. And one big feature should motivate people to improve the code readability of their solutions.

That’s great to hear! Really nice job so far, I’m enjoying the website, it’s a great and motivating way to learn and practice.

And just to throw another idea at you while I’m at it. A mode to practice writing tests would be awesome. Kind of the other way around it is now, you don’t see the code and have to write the tests to find out if it fills the specifications.

That’s an interesting idea, I’ll think about it and share the idea. However, the system used by Clash Of Code was not designed for this kind of use and we would need either to hack a bit our mechanism or change the evaluation system that is currently used: instead of using a simple IN/OUT mechanism, we would need to use what we call a referee that checks if the test you have provided is correct and if it would produce a good or wrong output.

Concerning my experience in CoC, I learned how to use some special variables that makes my code easier to read and understand. It also led me to learn some functions that are not mainstream but useful.

Sometime, knowing an unheralded function is easier to read and more efficient than writing 20 lines in your code and thinking about this code for 2 hours.

I am able to tell that CoC is definitely for fun and that these are not particularly good practice. I think that future feature will help to learn how to code well for people who didn’t understand that CoC is just fun battle.
I do not consider that being the fastest no matter the cost is a good practice. You do not launch all tests, you just write something ugly but fast, and you do not comment your code.

Feature request : At this time, it’s not possible to start a clash challenge, and be aware that another one has been launched at the same time.

For example, if I start a “reflexion” challenge (20mn), and gently wait for people coming in, I’m not aware that another player prefered to start a “fast” challenge. If I knew this, I’d rather close my own challenge and join his, instead of waiting alone…

Solution : can we see the list of “pending” challenge while waiting in the start challenge room ?

2 Likes

Yup I really like this Idea

A small chat window just for the people in the clash would be a nice feature :slight_smile: Because I (as the host) wont know If the person is okay for a 1v1 battle or if he wants to wait for more players so that its a 1v1v1v1 challenge.

5 Likes

Time should not be reduced if the submitting person has already solved the question ( whatever the mode ).

btw, it is not fair when someone has already 100% solved the question (whatever the mode) to challenge with other people.
improvement suggestion:

  • Create a pool of people wanting to join a clash for each timing(and|or mode).
  • select the biggest intersection of not solved questions for each people of the pool.
  • Start the clash with 2 to 4 people when timer is ok.

Someone who has already solved all the question will not be able to join a clash until new questions are available.
he should receive a notice.

3 Likes

A sound would be nice in case the time is reduced.
My eyes are stuck on the code, not the timer

CoC is really an awesome new feature. You guys made a huge job, it is so good to see that CodinGame is improved day by day thanks to great developers with great ideas.

However, I really do not see the point of reducing remaining time after opponent submission… What is the interest?
If someone submits and passes the tests, then he will finish first and will win the clash. So, what interest is there to reduce the time of others? It does absolutely nothing as he already knows to be first.
The same issue comes for code golfing puzzles. Reducing remaining time encourages people to submit working but non-optimized solutions, forcing the other competitors to quickly finish their algorithm without having time to look for smart improvements that reduce code size. And yet this is the whole point of this type of clash.

CodinGame wants to be a platform that encourages and helps new developers to learn and improve their skills. But how is this possible if they do not have time to finish because of the more experienced programmers who complete puzzles in a few minutes or even seconds?

From personal experience, it is extremely frustrating to not be able to complete his code. Not only we finish at the last position, but in addition we can not get our code working because of lack of time. Where is the fun in that?
I think it would be much more interesting for everyone not to reduce the time after submission. Quick developers can start a new clash anyway, and those less accustomed can take their time to think about an algorithm, implement it and finally debug it without being stressed and frustrated in the end.

2 Likes

First of all, thanks for sharing your opinion on Clash of Code. And to everyone, even if we do not always reply to your comments, they are taken into consideration.

Basically, the idea was to end the clash faster so that the same people can clash again together. In practice, people don’t wait anyway and go to another clash or leave… So, maybe we should reconsider that if the majority thinks that reducing the time is not fun.

We thought it could be fun: people can decide to submit in order to rush their opponents.

Again, Clash of Code is still a beta, so things can change (but I can’t tell you now what will, the team need to agree on the changes first). We would love to hear everyone’s point of view and ideas to improve the game.