Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Retire "Pole Vault Starting Marks" #106

Closed
BlipOnNobodysRadar opened this issue Aug 3, 2022 · 17 comments
Closed

Retire "Pole Vault Starting Marks" #106

BlipOnNobodysRadar opened this issue Aug 3, 2022 · 17 comments
Labels
discussion/kata-trial Discussion what to do with a candidate for retirement

Comments

@BlipOnNobodysRadar
Copy link

Pole Vault Starting Marks

This kata is not a coding challenge. This kata is a linear algebra challenge.

The coding aspects of this problem: return a value from a simple math expression (mx +b) where m and b are known, rounded to two decimal places. A challenging but within reason ask for beginners (which this is marked as, being 8kyu)... IF m and b are given.

However, this kata doesn't give you m and b. This kata requires you to learn linear algebra to find m and b. Finding m and b is the real challenge here. Finding m and b has absolutely nothing to do with coding. Therefore, this kata is completely inappropriate for the spirit of a website supposedly centered around providing coding challenges, but especially inappropriate for an 8kyu.

Having math as part of coding challenges is reasonable. Having math as THE challenge, with a tiny sprinkle of code on the side, makes no sense. At that point it's no longer a coding challenge.

A true beginner coming across this kata is more likely to leave the site and never come back than to solve it. And when they do solve it, did they learn anything about coding? No. They learned linear algebra.

(I initially raised this issue on the kata, and was redirected to do so here instead.)

@Blind4Basics
Copy link

Blind4Basics commented Aug 3, 2022

Hello,

I don't think that's enough to retire a kata. Maths are part of coding too, and moreover of solving problems. A good argument against the kata could be the description or tests quality/coverage (if they aren't good. I didn't check, in the present case), but definitely not the fact that one needs linear algebra.

Cheers

@BlipOnNobodysRadar
Copy link
Author

Hi Blind4Basics, I'd like to expand on my original comment a little more to clarify.

As mentioned above:

"Having math as part of coding challenges is reasonable. Having math as THE challenge, with a tiny sprinkle of code on the side, makes no sense. At that point it's no longer a coding challenge."

The issue isn't the inclusion of math as part of a coding challenge -- it's the meat of the challenge itself being a math problem that is irrelevant to the coding aspect. Whether you're given m and b or you find it yourself by using linear algebra, the code remains the same. However, since you're not given m and b you are forced to either learn or already know linear algebra to solve the problem.

On this kata specifically, the linear algebra tangent adds no value whatsoever to implementing the code while simultaneously being the biggest blocker to completing the kata. You do not even solve the linear algebra problem with code --- you just use it to find the constants within a formula. Providing the constants within the formula from the start would remove the need for linear algebra completely without changing the solution code at all.

On a broader scope beyond this specific kata, I believe the vast majority of codewars users would prefer coding challenges to primarily test their coding skills rather than their math trivia skills. I even enjoy math-heavy katas, provided the relevant knowledge and formulas are both (a) provided in the descriptions and (b) relevant to solving the problem with code. Neither (a) nor (b) are true for this kata.

@Blind4Basics
Copy link

Blind4Basics commented Aug 3, 2022

Well, some websites are much more math oriented, others much more "coding" oriented. CW falls already in the second category, but I don't see any problem with this kata being... a kata. It's a task to resolve, in the end. I'm not saying I really liked it, but still... You may not like it, that's totally up to you. As akar-0 said in the discrouse, you definitely can push the "not satisfdied" button, it's there ""specifically"" for that. But again, I still see no reason to retire it. Ok, it's not a "coding" problem, but it's still a "problem" to resolve. Seems like it does that part of the job properly.

Cheers

@Blind4Basics Blind4Basics added the discussion/kata-trial Discussion what to do with a candidate for retirement label Aug 4, 2022
@Kacarott
Copy link

Kacarott commented Aug 4, 2022

In my opinion, a kata being entirely math-focused is not necessarily a problem in itself, there are some good kata that are mostly reliant on background math knowledge, and very little code.

But I do agree that this particular kata is quite poor. This kata, compared to other math kata, is more like a puzzle. It gives you incomplete information about the challenge, and you must complete a math problem on paper before you even have the information to begin coding the actual solution. And I think that is the reason that the average satisfaction rate is very low (61%)!

I think that any approved kata with very low satisfaction should be considered as candidates to be either fixed, or retired. In this case I would vote retire.

@akar-0
Copy link

akar-0 commented Aug 4, 2022

I didn't like solving a kata, but actually I see no problem with it, just like B4B said. The kata itself has an acceptable quality, and apparently some people like it according to Discourse page. I see no reason for a retirement.

@Kacarott
Copy link

Kacarott commented Aug 4, 2022

I see no reason for a retirement.

About 61% of people apparently like it, which is much less than what is considered an acceptable satisfaction rate for new kata. The fact that you, and ~40% of people didn't like it, is a reason for retirement.

@Voileexperiments
Copy link

Voileexperiments commented Aug 4, 2022

Welcome to the reality, where algorithms and competitive programming are things that exist!

If you haven't been living under a rock you should've already noticed that there is a heavy focus of mathematics on competitive programming. All the respectable competitive programming sites that are treated as industry interview standard (e.g LeetCode, CodeForces) conforms to this, so if you're objecting to "math problems in coding problems" I'm afraid you're at odds with the ecosystem here.

Also, before throwing the "think of the children" card, please, for hell's sake, define what you mean by "true beginner". I can also claim that true beginner should not be using CW; they should be training on something like Codecademy or FreeCodeCamp instead. Before you define this, your argument is utterly pointless.


As for "should users be demanded to derive a math relation on their own instead of being given the relation", that's a debate about the kata description so it should go the discourse section of the kata. This issue is, however, written in a truly inflammatory and anti-elitism bait way. I do not believe continuing the discussion here would be a good idea.

@hobovsky
Copy link
Contributor

hobovsky commented Aug 4, 2022

I think I would disagree with you on many points. I believe that kata like this one are also valuable for several reasons:

  • Users learn to translate problems into algorithms. To solve this kata, users have to find out that the problem can be solved with some formula.
  • Users learn how to conduct a research for a problem. When they don't know the formula, they need to find it.
  • Users learn how to transform formulas into code, and how to write programs implementing formulas.
  • Users learn that it's pointless to cling to the desire of 100% completion rate. That they can always ignore problems they don't like, skip them, forget them, and search for problems that they enjoy.

I also enjoy solving math kata, especially these which require research. I like having the task explained, but I not always find it necessary to have the underlying math explained. This part is quite often covered by books.

The problem with the kata is that this might insufficiently hint (warn?) users about the type of the problem it poses. Maybe a better solution than retiring would be just tagging it as not code but math.

@Voileexperiments
Copy link

Maybe a better solution than retiring would be just tagging it as not code but math.

Almost all entry level coding problems belong into one of these 3 categories:

  1. Learn your language's features
  2. Learn some basic data structures and programming concepts (e.g OOP)
  3. Learn algorithms, and translating real life problems into code (which is, well, not code but math)

Since 1 is introspective in nature and 2 is highly theoretical, you literally cannot avoid the not code but math problems. In fact you'll easily find such entry level problems like "Farenheit to Celcius converter" everywhere. Based on the argument raised in the original post these wouldn't fly either, which would mean you're now in serious risk of running out of coding exercises.

It's akin to asking "why are we doing primary school math problems that are phrased as real life math problems": What else are you gonna give them then? Trigonometry? Calculus???

@akar-0
Copy link

akar-0 commented Aug 4, 2022

The fact that you, and ~40% of people didn't like it, is a reason for retirement.

When I downvote an approved kata, most of time I don't have in mind "I think this kata should be retired"; I just mean I didn't like solving it. If I was aware that downvoting a kata could be an argument pro its retirement, it's probable I would reconsider many downvotes. BTW, I tend to be less severe in my votes on beta katas, because I know it influences their approvability; I take in account that, maybe I don't enjoy the task. but, independently from that, it can be an acceptable problem on CW.

@Kacarott
Copy link

Kacarott commented Aug 4, 2022

That may be the case, however one of the reasons that the satisfaction rating exists at all, is to ensure that most people do enjoy solving it. This ensures a better experience for solvers overall, when solving random kata.

I am not trying to say that any kata that drops below 80% should be auto retired or anything, I think many people will vote differently for beta kata, than for approved kata, my point was that at only 61%, this kata is a particular outlier for people not enjoying solving it. (It has the ~22nd lowest satisfaction, out of any of the 7226 approved kata on the entire site). And to me, that is a valid enough reason to at least consider retirement.

@BlipOnNobodysRadar
Copy link
Author

BlipOnNobodysRadar commented Aug 4, 2022

Welcome to the reality, where algorithms and competitive programming are things that exist!

If you haven't been living under a rock you should've already noticed
your argument is utterly pointless.

This issue is, however, written in a truly inflammatory and anti-elitism bait way. I do not believe continuing the discussion here would be a good idea.

I'm not entirely sure the original issue's comment was the inflammatory one, friend 😄 but I understand where you're coming from and would like a chance to clarify.

I'd like to repeat a few things I wrote previously but communicated poorly (this is from my perspective, I am not speaking for anyone else. Maybe some people do go use CodeWars primarily to learn math):

Math being involved isn't a negative at all. The problem arises where the math involved in the challenge is not relevant to the -coding- aspect of the challenge, AND is the core focus of the kata. Bonus (negative bonus) points if the kata is basically a math trivia problem rather than a coding problem, without providing the necessary trivia info to solve the coding problem.

So things like algorithms, etc that are extremely relevant to programmers would be perfect math problems for coding challenges. Things like reducing time complexity by being clever in your solutions, using algorithms, being given a brute force example and using math to create an elegant solution, etc are great math problems that progress your skills as a programmer.

In contrast math trivia questions such as "hey do you know this obscure geometry formula off the top of your head? If you do just plug it in and you got it, if not good luck researching it for hours to write one line of code utilizing this trivia." do not progress your skills as a programmer in any way. I don't think the vast majority of users go to codewars wanting to play a game of Jeopardy in the math-trivia category.

Even if your goal is to learn math on codewars, you'd learn it much better by being introduced to the concept in a straightforward way in an appropriate environment! I love learning about math personally, just not as sudden gotcha trivia questions when I'm trying to become a better programmer.

I'd like to clarify too: Katas that link references to a math concept and then guide you into implementing that math as code are great IMO, and not at all the types that I think are problematic. Things like finding if a number is prime efficiently, getting a number's divisors, etc are examples of math katas I've enjoyed solving in the past thanks to well-authored descriptions.

It's easy to tell the difference between math katas that were authored in a way intended to challenge and progress the reader, versus those written to show off the author's knowledge. It comes down to a difference in goals: is this math kata intended to provide value to the solver, or to the author?

Considering the linear algebra portion of "Pole Vault Starting Marks" is obscured within the challenge and ultimately doesn't affect the code used to solve the kata (since you use it to find constants that could have been provided from the start), it falls into the latter category.

I hope this explanation is more clear from me. And I apologize for the lengthy wording and miscommunication from myself.

@hobovsky
Copy link
Contributor

hobovsky commented Aug 4, 2022

In contrast math trivia questions such as "hey do you know this obscure geometry formula off the top of your head? If you do just plug it in and you got it, if not good luck researching it for hours to write one line of code utilizing this trivia." do not progress your skills as a programmer in any way.

I believe this assumption is utterly and totally incorrect.

Programming is not about languages, ifs, loops, classes, OOP, functions. Programming is about solving problems (presumably with computers). Input for a programming task is a problem, and output is a solution to a problem. Computers were made to solve problems. Some problems require ifs and whiles and OOP to be solved. Some problems happen to have good solutions which are based on, as you call it, "math trivia":

  • "Count proper fractions" fails with "programming" approach of looping up to denominator, and requires application of Euler's totient function
  • "Coloured triangles" require application of ****'s theorem
  • "Sums of Perfect Squares" require application of idr theorem
  • "Lat digit of a large number" does not work with "programming approach" and just calling pow or multiplication in a loop
  • Millionth Fibonacci kata requires non-trivial, O(log n) way of calculating Fibonacci numbers
  • Heck, even "is a number prime?" fails with O(n) approach and requires O(sqrt n), and is complained that it "requires math knowledge" to not time out.

Every time I see a complaint that "it's math not code" I cannot help the feeling that one of two things happen:

  • either someone confuses programming as "a set of loops and conditionals and classes", or
  • they try to refuse and reject the fact that they cannot/don't want to/cannot be bothered with finding a proper solution to a stated problem.

Platform like Codewars differs from professional programming, or from competitive programming, that users can always choose to not solve problems they don't like. If a user is presented with a kata they don;t want to research on, they can just skip it. Sooner or later, they will encounter another one. Until then, there are thousands of tasks to choose from, and many (most?) of them require nothing but while, if, or class.

@BlipOnNobodysRadar
Copy link
Author

BlipOnNobodysRadar commented Aug 4, 2022

In contrast math trivia questions such as "hey do you know this obscure geometry formula off the top of your head? If you do just plug it in and you got it, if not good luck researching it for hours to write one line of code utilizing this trivia." do not progress your skills as a programmer in any way.

I believe this assumption is utterly and totally incorrect.

Programming is not about languages, ifs, loops, classes, OOP, functions. Programming is about solving problems (presumably with computers). Input for a programming task is a problem, and output is a solution to a problem. Computers were made to solve problems. Some problems require ifs and whiles and OOP to be solved. Some problems happen to have good solutions which are based on, as you call it, "math trivia":

I don't disagree. The usefulness of math in programming was never my point. Math is a tool, the programmer uses those tools to create solutions to problems.


TL;DR:

  • Good kata: Focused on the application of math in code to solve real problems. The description gives enough info for you to be aware of any tool you need, but leaves the application of that tool to you.
  • Bad kata: Jeopardy quiz on if you already know that math/trivia or not. Unnecessarily obscure descriptions, or completely absent of relevant info.

The issue is with katas that treat math as the priority of the kata rather than as a tool for solving a problem.

You're not going to reconstruct X's theorem on your own. No amount of creativity and problem-solving is going to get you to the result if you don't know what theorem/trivia the solution relies upon you knowing. That's the problem with trivia-based katas: you either know the trivia or you don't.

This doesn't mean that X's theorem isn't incredibly powerful when applied to programming, just that the kata itself made poor use of it. A good kata utilizing X's theorem will reference it in the description, and then provide a coding challenge where using X's theorem is a piece of the puzzle.

A bad kata utilizing X's theorem will make no mention whatsoever of X's theorem, nor even hint at it. At that point the kata has devolved into a Jeopardy quiz where the biggest challenge is to have prior awareness of some obscure theorem. Actually using it to solve a problem with code is an afterthought.

@hobovsky
Copy link
Contributor

hobovsky commented Aug 4, 2022

Actually using it to solve a problem with code is an afterthought.

But this is what programming is! Isn't it? Code is just a materialization of the solution. To write code, you need to find the solution! Or not? If the only thing which is required is code, then the problem is already solved. Effectively, a user is not solving the problem, they are just implementing the solution with code.

You're not going to reconstruct X's theorem on your own. No amount of creativity and problem-solving is going to get you to the result if you don't know what theorem/trivia the solution relies upon you knowing. That's the problem with trivia-based katas: you either know the trivia or you don't.

I think it's a false dichotomy.
Did I know of X theorem when working on "Sums of perfect squares" (and many other math-heavy kata)? No, I have not. Yet I have solved the kata. I did not reconstruct the X theorem on my own either. How did I manage to apply the theorem without knowing it, and without reconstructing it? Here's how: I tried a couple of approaches I came up with on my own, and they all failed. Then I used a search engine and looked for "number as sum of squares", which lead me to some post on MathExchange with a long-winded and boring explanation, and a couple of formulas. I implemented the formulas, and voila, problem solved.
Why would we want to strip the process of problem solving to the bare minimum of the last step? What is the disadvantage of all the steps which precede coding, and what does user gain by skipping them? Analysis, research, and evaluation of solutions are a part of programming, aren't they?

@BlipOnNobodysRadar
Copy link
Author

Why would we want to strip the process of problem solving to the bare minimum of the last step? What is the disadvantage of all the steps which precede coding, and what does user gain by skipping them? Analysis, research, and evaluation of solutions are a part of programming, aren't they?

That's a very good point. I agree with the thought process.

The only opinion I differ on is that I think kata's should provide a starting point for analysis and research to begin from. Too much of that becomes spoonfeeding, but too little leaves people completely lost if they don't have a clue where to begin. There's an ideal middle ground in there somewhere. Such as in your example, where even the title of the kata is enough of a clue to get people started.

In this kata specifically, you wouldn't even know what to search for if you didn't already have some familiarity with linear algebra, unfortunately. I think the exceptionally low satisfaction rating is indicative of people being too lost from the description to know where to begin.

Anyway, it seems that retiring this kata is not likely. Not sure about the etiquette for things like this -- I see a "Close with comment" option. Is this something I should close, or leave the issue up for someone to resolve?

@hobovsky
Copy link
Contributor

hobovsky commented Aug 4, 2022

You can close the thread if you feel it's concluded, but I can do this too.
The discussion was very interesting for me anyway, and thanks for it. The case is also discussed on Codewars Discord, so if you feel that there are still some things to add or mention, feel free to hop in! My previous response was initially much longer than what I posted, I cut it in half to not bore everyone to death. But if you want to, we can continue on Discord.

Have fun!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion/kata-trial Discussion what to do with a candidate for retirement
Projects
None yet
Development

No branches or pull requests

6 participants