Skip to content

Introduce dan-level rank assessments (and Kata) #1769

Closed
@DonaldKellett

Description

@DonaldKellett

I noticed that this has been suggested multiple times before (and closed multiple times for various reasons) but I think it is finally time to consider this for real.

What I understood/considered from previous issues on this Topic

Previously, certain users advocated for opening up dan-level Kata due to the sheer difficulty of certain algorithmic Kata (e.g. toBrainfuck transpiler) which are believed to be more difficult than typical 1 kyu algorithmic Kata. Such issues were closed since the previously active Codewars administrator Jake Hoffner wanted to make dan levels distinct from kyu levels by introducing project-level Kata among other things (please do correct me if I am wrong).

What prompted me to re-open this Feature Request? How is the current situation different from previous situations?

With the swift (and sudden!) support of dedicated proof-assistant languages such as Idris and Agda, there has been a surge in theorem-proving Kata recently. While it was possible to prove very simple and straightforward statements such as A + B = B + A in Haskell using an array of GHC extensions back when Idris/Agda were not supported, the introduction of the aforementioned languages made it feasible to author theorem-proving Kata of all levels of difficulty ranging from less trivial arithmetic proofs such as 1 + 2 + ... + n = n * (n + 1) / 2 to properties of lists and list operations and even research-level academic topics such as Cubical Type Theory (which I have absolutely no idea what it is about).

There has been a debate as to how such theorem proving Kata should be ranked. Obviously, proving even the simplest of theorems such as "flipping a binary tree twice gives back the original tree" is in no way 7-8 kyu as some have suggested since a Codewarrior who has only began learning the syntax and semantics of Idris/Agda would seriously struggle to understand deep concepts such as Curry-Howard isomorphism, let alone apply said concepts in the form of machine-checked proofs. This means that even the simplest of proofs (maybe except absurdly simple proofs such as n + 0 = n for all natural numbers n which is currently offered as an 8 kyu Agda Kata) are currently ranked starting from 4 kyu upwards.

What this means is that since even the simplest of proofs are ranked 4 kyu or above (and ought to be!), slightly less straightforward proofs requiring a bit more insight and intuition are easily ranked as 2 kyu or even 1 kyu. However, it is totally possible to author rather complex proofs on obscure academic theories such as Cubical Type Theory (a few kata on the topic which can be found in @ice1000 's authored Kata list) or properties of mathematical entities involving extremely abstract concepts such as the injectivity of the type constructor Maybe (which is totally different from proving the injectivity of an ordinary function). Such Kata are yet an entire level above those "less straightforward" proofs (e.g. List concatenation is injective? Prove it! currently ranked at 1 kyu) but under the current ranking scheme, they would all be ranked as 1 kyu at the very most. This would lead to a whole bunch of 1 kyu theorem-proving Kata of vastly differing difficulties (ranging from "quite difficult" to "insanely difficult") which could discourage Codewarriors from authoring and/or solving the more difficult ones.

The proposed solution is to open up dan-level Kata and rank assessments, at least up to and including 2 dan. Even higher dan-ranks may need to be opened up in the near future as ever more complex and abstract theorem-proving Kata are authored.

Supporting comments demonstrating the need to open up dan-level Kata ASAP

@ice1000 recently left a comment on the Maybe Injective Kata stating that it should honestly be ranked 1 dan:

螢幕截圖 2019-03-17 16 42 36


Specifically, I would like to hear the opinions of the following people on this specific Issue:

Others are free to chime in as well 😄

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions