Fundamentals
Closest I could get to a compact version in Java :-D
class Kata { public static String getGrade(int s) { return s >= 0 && s <= 100 ? "" + "FFFFFFDCBAA".charAt(s / 10) : "Invalid"; } }def get_grade(score):return 'FFFFFFDCBAA'[score // 10] if 0 <= score <= 100 else 'Invalid'- class Kata {
- public static String getGrade(int s) {
- return s >= 0 && s <= 100 ? "" + "FFFFFFDCBAA".charAt(s / 10) : "Invalid";
- }
- }
import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; public class KataTest { @Test public void basicTests() { assertEquals("A", Kata.getGrade(95)); assertEquals("A", Kata.getGrade(90)); assertEquals("A", Kata.getGrade(100)); assertEquals("B", Kata.getGrade(82)); assertEquals("B", Kata.getGrade(80)); assertEquals("B", Kata.getGrade(89)); assertEquals("C", Kata.getGrade(74)); assertEquals("C", Kata.getGrade(70)); assertEquals("C", Kata.getGrade(79)); assertEquals("D", Kata.getGrade(65)); assertEquals("D", Kata.getGrade(60)); assertEquals("D", Kata.getGrade(69)); assertEquals("F", Kata.getGrade(45)); assertEquals("F", Kata.getGrade(59)); assertEquals("F", Kata.getGrade(0)); } @Test public void edgeCases() { // Граничные значения внутри допустимого диапазона // assertEquals("A", Kata.getGrade(100)); // assertEquals("B", Kata.getGrade(89)); // assertEquals("C", Kata.getGrade(79)); // assertEquals("D", Kata.getGrade(69)); // assertEquals("F", Kata.getGrade(59)); assertEquals("Invalid", Kata.getGrade(-2)); } @Test public void invalidScores() { assertEquals("Invalid", Kata.getGrade(101)); assertEquals("Invalid", Kata.getGrade(150)); assertEquals("Invalid", Kata.getGrade(999)); assertEquals("Invalid", Kata.getGrade(-1)); assertEquals("Invalid", Kata.getGrade(-5)); assertEquals("Invalid", Kata.getGrade(-100)); } // Важно: Codewars очень любит случайные тесты, чтобы нельзя было захардкодить ответы @Test public void randomTests() { for (int i = 0; i < 50; i++) { int score = (int) (Math.random() * 220) - 60; // от -60 до 159 String expected = referenceGetGrade(score); assertEquals(Kata.getGrade(score), expected, "Failed for score = " + score); } } // Эталонная реализация для проверки случайных тестов private String referenceGetGrade(int score) { if (score < 0 || score > 100) { return "Invalid"; } else if (score >= 90) { return "A"; } else if (score >= 80) { return "B"; } else if (score >= 70) { return "C"; } else if (score >= 60) { return "D"; } else { return "F"; } } }import codewars_test as testfrom solution import get_grade- import org.junit.jupiter.api.Test;
@test.describe("Tests")def test_group():@test.it("basic tests")def test_case1():test.assert_equals(get_grade(95), 'A')test.assert_equals(get_grade(90), 'A')test.assert_equals(get_grade(100),'A')test.assert_equals(get_grade(82), 'B')test.assert_equals(get_grade(80), 'B')test.assert_equals(get_grade(89), 'B')test.assert_equals(get_grade(74), 'C')test.assert_equals(get_grade(70), 'C')test.assert_equals(get_grade(79), 'C')test.assert_equals(get_grade(65), 'D')test.assert_equals(get_grade(60), 'D')test.assert_equals(get_grade(69), 'D')test.assert_equals(get_grade(45), 'F')test.assert_equals(get_grade(59), 'F')test.assert_equals(get_grade(0), 'F')@test.it("edge cases")def test_case2():test.assert_equals(get_grade(100), 'A')test.assert_equals(get_grade(89), 'B')test.assert_equals(get_grade(79), 'C')test.assert_equals(get_grade(69), 'D')test.assert_equals(get_grade(59), 'F')@test.it("invalid scores")def test_case3():test.assert_equals(get_grade(101), 'Invalid')test.assert_equals(get_grade(150), 'Invalid')test.assert_equals(get_grade(999), 'Invalid')test.assert_equals(get_grade(-1), 'Invalid')test.assert_equals(get_grade(-5), 'Invalid')test.assert_equals(get_grade(-100), 'Invalid')- import static org.junit.jupiter.api.Assertions.assertEquals;
- public class KataTest {
- @Test
- public void basicTests() {
- assertEquals("A", Kata.getGrade(95));
- assertEquals("A", Kata.getGrade(90));
- assertEquals("A", Kata.getGrade(100));
- assertEquals("B", Kata.getGrade(82));
- assertEquals("B", Kata.getGrade(80));
- assertEquals("B", Kata.getGrade(89));
- assertEquals("C", Kata.getGrade(74));
- assertEquals("C", Kata.getGrade(70));
- assertEquals("C", Kata.getGrade(79));
- assertEquals("D", Kata.getGrade(65));
- assertEquals("D", Kata.getGrade(60));
- assertEquals("D", Kata.getGrade(69));
- assertEquals("F", Kata.getGrade(45));
- assertEquals("F", Kata.getGrade(59));
- assertEquals("F", Kata.getGrade(0));
- }
- @Test
- public void edgeCases() {
- // Граничные значения внутри допустимого диапазона
- // assertEquals("A", Kata.getGrade(100));
- // assertEquals("B", Kata.getGrade(89));
- // assertEquals("C", Kata.getGrade(79));
- // assertEquals("D", Kata.getGrade(69));
- // assertEquals("F", Kata.getGrade(59));
- assertEquals("Invalid", Kata.getGrade(-2));
- }
- @Test
- public void invalidScores() {
- assertEquals("Invalid", Kata.getGrade(101));
- assertEquals("Invalid", Kata.getGrade(150));
- assertEquals("Invalid", Kata.getGrade(999));
- assertEquals("Invalid", Kata.getGrade(-1));
- assertEquals("Invalid", Kata.getGrade(-5));
- assertEquals("Invalid", Kata.getGrade(-100));
- }
- // Важно: Codewars очень любит случайные тесты, чтобы нельзя было захардкодить ответы
- @Test
- public void randomTests() {
- for (int i = 0; i < 50; i++) {
- int score = (int) (Math.random() * 220) - 60; // от -60 до 159
- String expected = referenceGetGrade(score);
- assertEquals(Kata.getGrade(score), expected, "Failed for score = " + score);
- }
- }
- // Эталонная реализация для проверки случайных тестов
- private String referenceGetGrade(int score) {
- if (score < 0 || score > 100) {
- return "Invalid";
- } else if (score >= 90) {
- return "A";
- } else if (score >= 80) {
- return "B";
- } else if (score >= 70) {
- return "C";
- } else if (score >= 60) {
- return "D";
- } else {
- return "F";
- }
- }
- }