Start a new Kumite
AllAgda (Beta)BF (Beta)CCFML (Beta)ClojureCOBOL (Beta)CoffeeScriptCommonLisp (Beta)CoqC++CrystalC#D (Beta)DartElixirElm (Beta)Erlang (Beta)Factor (Beta)Forth (Beta)Fortran (Beta)F#GoGroovyHaskellHaxe (Beta)Idris (Beta)JavaJavaScriptJulia (Beta)Kotlinλ Calculus (Beta)LeanLuaNASMNim (Beta)Objective-C (Beta)OCaml (Beta)Pascal (Beta)Perl (Beta)PHPPowerShell (Beta)Prolog (Beta)PureScript (Beta)PythonR (Beta)RacketRaku (Beta)Reason (Beta)RISC-V (Beta)RubyRustScalaShellSolidity (Beta)SQLSwiftTypeScriptVB (Beta)
Show only mine

Kumite (ko͞omiˌtā) is the practice of taking techniques learned from Kata and applying them through the act of freestyle sparring.

You can create a new kumite by providing some initial code and optionally some test cases. From there other warriors can spar with you, by enhancing, refactoring and translating your code. There is no limit to how many warriors you can spar with.

A great use for kumite is to begin an idea for a kata as one. You can collaborate with other code warriors until you have it right, then you can convert it to a kata.

Ad
Ad
Code
Diff
  • class Employee:
        def __init__(self, name, salary):
            self.name = name
            self.salary = salary
        def __repr__(self):
            return f"name: {self.name} salary: {self.salary}"
    class Manager(Employee):
        def __init__(self, name, salary, department):        
            super().__init__(name, salary)
            self.department = department
        def __repr__(self):
            return f"{super().__repr__()} department: {self.department}"
    m1 = Manager("saad", 100000, "IT")
    print(m1)
    
    • class Employee:
    • def __init__(self, name, salary):
    • self.name = name
    • self.salary = salary
    • def display_info(self, name, salary):
    • print(f"name: {self.name} salary: {self.salary}")
    • class menager(Employee):
    • def __repr__(self):
    • return f"name: {self.name} salary: {self.salary}"
    • class Manager(Employee):
    • def __init__(self, name, salary, department):
    • super().__init__(name, salary)
    • self.department = department
    • def display_info(self):
    • print(f"name: {self.name} slary: {self.salary} department: {self.department}")
    • m1 = menager("saad", 100000, "IT")
    • m1.display_info()
    • def __repr__(self):
    • return f"{super().__repr__()} department: {self.department}"
    • m1 = Manager("saad", 100000, "IT")
    • print(m1)
Code
Diff
  • class Pet:
        def __init__(self, name, type, age):
            self.name = name
            self.type = type
            self.age = age
        def display_info(self):
            print(f"name: {self.name} type: {self.type} age: {self.age}")
        def have_birthday(self):
            self.age + 1
        def change_type(self, new_type):
            self.type = new_type
        
                  
            
        
        
        
    • class Pet:
    • def __init__(self, name, type, age):
    • self.name = name
    • self.type = type
    • self.age = age
    • def display_info(self):
    • print(f"name: {self.name} type: {self.type} age: {self.age}")
    • def have_birthday(self):
    • self.pet + 12
    • self.age + 1
    • def change_type(self, new_type):
    • self.type = new_type
Code
Diff
  • def calculator(num1, num2, kind):
        operations = {
            '+': lambda x, y: x + y,
            '-': lambda x, y: x - y,
            '*': lambda x, y: x * y,
            '/': lambda x, y: x / y if y != 0 else float('inf'),
            '//': lambda x, y: x // y if y != 0 else float('inf'),
            '%': lambda x, y: x % y if y != 0 else float('nan'),
            '**': lambda x, y: x ** y,
        }
    
        if kind not in operations:
            raise ValueError(f"Unsupported operation: {kind}")
        
        return operations[kind](num1, num2)
    
    • def calculator(num1, num2, kind):
    • return eval(f'{num1} {kind} {num2}')
    • operations = {
    • '+': lambda x, y: x + y,
    • '-': lambda x, y: x - y,
    • '*': lambda x, y: x * y,
    • '/': lambda x, y: x / y if y != 0 else float('inf'),
    • '//': lambda x, y: x // y if y != 0 else float('inf'),
    • '%': lambda x, y: x % y if y != 0 else float('nan'),
    • '**': lambda x, y: x ** y,
    • }
    • if kind not in operations:
    • raise ValueError(f"Unsupported operation: {kind}")
    • return operations[kind](num1, num2)
Code
Diff
  • class Movie:
        def __init__(self, title, rating):
            self.title = title
            self.rating = rating
    
        def is_hit(self):
            return "hit" if self.rating >= 8 else "flap"
    
        def display_info(self):
            print(f"title: {self.title} rating: {self.rating}")
    
    
        
    • class movie:
    • class Movie:
    • def __init__(self, title, rating):
    • self.title = title
    • self.rating = rating
    • def is_hit(self):
    • if self.rating >= 8:
    • return "hit"
    • else:
    • return "flap"
    • return "hit" if self.rating >= 8 else "flap"
    • def display_info(self):
    • print(f" title: {self.title} rating: {self.rating}")
    • print(f"title: {self.title} rating: {self.rating}")

The code above.

“The general rule is that it's better to use a pre-existing function or something implemented at a lower level in the interpreter than to create a new function object.”

— chepner, Commented Aug 15, 2014 at 15:10

I left a new code!

Code
Diff
  • """
    Your critique about an infinite loop is spot-on for something like
    `sum = lambda a, b: sum(a, b)`—that’s a recursive disaster with no base case, crashing with a stack overflow. 
    
    But your second point, calling built-in methods "bad practice," is off-base. 
    Python’s built-ins, like those in the `operator` module, are there for efficiency and clarity, not just for lazy coders.
    
    Your suggested `add = lambda a, b: a + b` works but is slower than necessary. 
    Lambda functions have Python-level overhead, while `operator.add` is implemented in C, 
    clocking ~0.0565 µs per loop versus ~0.124 µs for an inline lambda (Hacker News, 2021). 
    
    Even `int.__add__` can be faster in some cases, but `operator.add` is cleaner and just as quick. 
    Direct `a + b` is likely fastest, but for a function, `operator.add` is the way to go.
    
    Redefining `sum()` is risky—it can break code expecting the built-in summation function. 
    But leveraging `operator.add` isn’t bad practice; it’s smart optimization. Check your assumptions before throwing shade.
    """
    ### Code 
    from operator import add
    • add = lambda a, b: a + b
    • """
    • Your critique about an infinite loop is spot-on for something like
    • `sum = lambda a, b: sum(a, b)`—that’s a recursive disaster with no base case, crashing with a stack overflow.
    • But your second point, calling built-in methods "bad practice," is off-base.
    • Python’s built-ins, like those in the `operator` module, are there for efficiency and clarity, not just for lazy coders.
    • Your suggested `add = lambda a, b: a + b` works but is slower than necessary.
    • Lambda functions have Python-level overhead, while `operator.add` is implemented in C,
    • clocking ~0.0565 µs per loop versus ~0.124 µs for an inline lambda (Hacker News, 2021).
    • Even `int.__add__` can be faster in some cases, but `operator.add` is cleaner and just as quick.
    • Direct `a + b` is likely fastest, but for a function, `operator.add` is the way to go.
    • Redefining `sum()` is risky—it can break code expecting the built-in summation function.
    • But leveraging `operator.add` isn’t bad practice; it’s smart optimization. Check your assumptions before throwing shade.
    • """
    • ### Code
    • from operator import add