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.
fn calculate_even_numbers(array: &[i32]) -> usize { array.iter().filter(|&&n| n % 2 == 0).count() }
function calculateEvenNumbers(array $numbers): int {$result = [];foreach ($numbers as $number) {if ($number % 2 === 0) {$result[] = $number;}}return count($result);- fn calculate_even_numbers(array: &[i32]) -> usize {
- array.iter().filter(|&&n| n % 2 == 0).count()
- }
#[test] fn test() { assert_eq!(calculate_even_numbers(&[]), 0); assert_eq!(calculate_even_numbers(&[5, 7, 2, 4, 9]), 2); assert_eq!(calculate_even_numbers(&[60, 180, 99, 100, 101, 103]), 3); assert_eq!(calculate_even_numbers(&[99, 9, 1, 21, 33, 77, 57, 33, 91, 111, 23451]), 0); assert_eq!(calculate_even_numbers(&[10_000_000, 90_000, 700_000_000, 2, 70, 44]), 6); }
<?phpuse PHPUnit\Framework\TestCase;class ExampleTest extends TestCase{public function testThatEvenNumbersAreCalculatedCorrectly() {$this->assertEquals(0, calculateEvenNumbers([]));$this->assertEquals(2, calculateEvenNumbers([5, 7, 2, 4, 9]));$this->assertEquals(3, calculateEvenNumbers([60, 180, 99, 100, 101, 103]));$this->assertEquals(0, calculateEvenNumbers([99, 9, 1, 21, 33, 77, 57, 33, 91, 111, 23451]));$this->assertEquals(6, calculateEvenNumbers([10_000_000, 90_000, 700_000_000, 2, 70, 44]));}}- #[test]
- fn test() {
- assert_eq!(calculate_even_numbers(&[]), 0);
- assert_eq!(calculate_even_numbers(&[5, 7, 2, 4, 9]), 2);
- assert_eq!(calculate_even_numbers(&[60, 180, 99, 100, 101, 103]), 3);
- assert_eq!(calculate_even_numbers(&[99, 9, 1, 21, 33, 77, 57, 33, 91, 111, 23451]), 0);
- assert_eq!(calculate_even_numbers(&[10_000_000, 90_000, 700_000_000, 2, 70, 44]), 6);
- }
const findSenior = (list) => { const maxAge = Math.max(...list.map(dev => dev.age)); return list.filter(dev => dev.age === maxAge); };
// Solutionfunction findSenior(list) {let maxAge = 0;list.forEach((dev) => { // ho usato forEach per trovare l'età massima tra gli sviluppatoriif (dev.age > maxAge) {maxAge = dev.age;}});return list.filter((dev) => dev.age === maxAge); // ho usato filter per filtrare gli sviluppatori con l'età massima}- const findSenior = (list) => {
- const maxAge = Math.max(...list.map(dev => dev.age));
- return list.filter(dev => dev.age === maxAge);
- };
import java.util.Arrays; public class MaxNumber { public static long print(long number) { //convierto el long en string para ingresarlo en un vector de enteros int longitud = String.valueOf(number).length(); int[] digitos = new int[longitud]; for (int i = 0; i < longitud; i++){ digitos[i] = (int)(number % 10); number = number / 10; } //ordeno el array de numeros Arrays.sort(digitos); //recorro el array de enteros (empezando por el final) //y los agrego a una nueva cadena String numComoString = ""; for (int i = longitud-1; i >= 0; i--){ numComoString += digitos[i]; } //convierto la cadena en long y asigno a la variable inicial number = Long.parseLong(numComoString); return number; } }
- import java.util.Arrays;
- public class MaxNumber {
- public static long print(long number) {
return number- //convierto el long en string para ingresarlo en un vector de enteros
- int longitud = String.valueOf(number).length();
- int[] digitos = new int[longitud];
- for (int i = 0; i < longitud; i++){
- digitos[i] = (int)(number % 10);
- number = number / 10;
- }
- //ordeno el array de numeros
- Arrays.sort(digitos);
- //recorro el array de enteros (empezando por el final)
- //y los agrego a una nueva cadena
- String numComoString = "";
- for (int i = longitud-1; i >= 0; i--){
- numComoString += digitos[i];
- }
- //convierto la cadena en long y asigno a la variable inicial
- number = Long.parseLong(numComoString);
- return number;
- }
- }
const sumNechet = (a, b) =>{ let answer = 0; for (let index = a; index <= b; index++) { index % 2 == 1 ? answer += index : null; } return answer; } console.log(sumNechet(5,15));
//Крюков Кириллfunction sumNechet(a, b) {var answer = 0;for (var i = a; i <= b; i++){if (i % 2 != 0){answer += i;- const sumNechet = (a, b) =>{
- let answer = 0;
- for (let index = a; index <= b; index++) {
- index % 2 == 1 ? answer += index : null;
- }
}return answer;}- return answer;
- }
- console.log(sumNechet(5,15));
use itertools::Itertools; use std::{hash::Hash, collections::VecDeque}; fn delete<T: Eq + Hash + Copy>(a: &[T]) -> Vec<T> { let mut v = VecDeque::new(); a.iter().rev().unique().for_each(|&e| v.push_front(e)); v.into() }
import java.util.*;- use itertools::Itertools;
- use std::{hash::Hash, collections::VecDeque};
class DeleteDuplicates {public static double[] delete(double[] a) {for(int i = 0; i < a.length / 2; i++) {double temp = a[i];a[i] = a[a.length - i - 1];a[a.length - i - 1] = temp;}Set<Double> set = new LinkedHashSet<>();for (double v : a) {set.add(v);if(v < 0.0)return new double[]{-1.0};}List<Double> list = new ArrayList<>(set);Collections.reverse(list);double[] array_here = list.stream().mapToDouble(Double::doubleValue).toArray();//incorrect (too long and witout accuracy)return array_here;}}- fn delete<T: Eq + Hash + Copy>(a: &[T]) -> Vec<T> {
- let mut v = VecDeque::new();
- a.iter().rev().unique().for_each(|&e| v.push_front(e));
- v.into()
- }
#[test] fn test() { assert_eq!(delete(&[2, 1, 4, 2, 3]), [1, 4, 2, 3]); assert_eq!(delete(&[2, 3, -1, 5]), [2, 3, -1, 5]); assert_eq!(delete(&[1, 2, 3, 1, 3]), [2, 1, 3]); }
import java.util.*;import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.assertEquals;class SolutionTest {@Testvoid test1() {assertEquals(Arrays.toString(DeleteDuplicates.delete(new double[]{2.0, 1.0, 4.0, 2.0, 3.0})),"[1.0, 4.0, 2.0, 3.0]");}@Testvoid test2() {assertEquals(Arrays.toString(DeleteDuplicates.delete(new double[]{2.0, 3.0, -1.0, 5.0})),"[-1.0]");}@Testvoid test3() {assertEquals(Arrays.toString(DeleteDuplicates.delete(new double[]{2.2131141516, 1.234, 4.234,2.2131, 3.0, 3.0,12.321, 2.2131141516})),"[1.234, 4.234, 2.2131, 3.0, 12.321, 2.2131141516]");}}- #[test]
- fn test() {
- assert_eq!(delete(&[2, 1, 4, 2, 3]), [1, 4, 2, 3]);
- assert_eq!(delete(&[2, 3, -1, 5]), [2, 3, -1, 5]);
- assert_eq!(delete(&[1, 2, 3, 1, 3]), [2, 1, 3]);
- }
#include <ostream> using namespace std; string calculator(char op, int a, int b) { stringstream s; switch (op) { case '+': {s<<a+b; break;} case '-': {s<<a-b; break;} case '*': {s<<a*b; break;} case '%': {s<<a%b; break;} case '/': {if (b != 0) {s<<a/b;break;}/*else default: Invalid Input!*/} default: {s<<"Invalid Input!";} } return s.str(); }
- #include <ostream>
- using namespace std;
- string calculator(char op, int a, int b) {
- stringstream s;
- switch (op) {
case '+': {s<<a+b; return s.str();}case '-': {s<<a-b; return s.str();}case '*': {s<<a*b; return s.str();}case '/': {b != 0 ? s<<a/b : s<<"Invalid Input!"; return s.str();}case '%': {s<<a%b; return s.str();}default: return "Invalid Input!";- case '+': {s<<a+b; break;}
- case '-': {s<<a-b; break;}
- case '*': {s<<a*b; break;}
- case '%': {s<<a%b; break;}
- case '/': {if (b != 0) {s<<a/b;break;}/*else default: Invalid Input!*/}
- default: {s<<"Invalid Input!";}
- }
- return s.str();
- }
fn int_to_table(num: u32) -> Vec<u32> { (0..=num).collect() }
def int_to_table(num):tab = []for x in range(num + 1):tab.append(x)print(tab)return tab- fn int_to_table(num: u32) -> Vec<u32> {
- (0..=num).collect()
- }
#[test] fn test() { assert_eq!(int_to_table(9), [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); assert_eq!(int_to_table(7), [0, 1, 2, 3, 4, 5, 6, 7]); assert_eq!(int_to_table(4), [0, 1, 2, 3, 4]); assert_eq!(int_to_table(0), [0]); }
import codewars_test as test# TODO Write testsimport solution # or from solution import example# test.assert_equals(actual, expected, [optional] message)@test.describe("Example")def test_group():@test.it("test case")def test_case():test.assert_equals(int_to_table(9), [0,1,2,3,4,5,6,7,8,9])test.assert_equals(int_to_table(7), [0,1,2,3,4,5,6,7])test.assert_equals(int_to_table(4), [0,1,2,3,4])- #[test]
- fn test() {
- assert_eq!(int_to_table(9), [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
- assert_eq!(int_to_table(7), [0, 1, 2, 3, 4, 5, 6, 7]);
- assert_eq!(int_to_table(4), [0, 1, 2, 3, 4]);
- assert_eq!(int_to_table(0), [0]);
- }
fn odd_one_out(s: &str) -> char { let arr: Vec<_> = s.chars().take(3).collect(); let common = if arr[0] == arr[1] { arr[0] } else { arr[2] }; s.chars().find(|&c| c != common).unwrap() }
package oddoneoutfun oddOneOut(s: String): String {var odd = 0var same = 0var keepTrack = s[0]var sameTracker = ""var oddTracker = ""for (i in s.indices) {if (s[i] == keepTrack) {same += 1sameTracker += s[i]} else {odd += 1oddTracker += s[i]}}if (odd < 2) {return oddTracker} else {return sameTracker}- fn odd_one_out(s: &str) -> char {
- let arr: Vec<_> = s.chars().take(3).collect();
- let common = if arr[0] == arr[1] { arr[0] } else { arr[2] };
- s.chars().find(|&c| c != common).unwrap()
- }
#[test] fn test() { assert_eq!(odd_one_out("aaaaabaaaaa"), 'b'); assert_eq!(odd_one_out("llllllal"), 'a'); assert_eq!(odd_one_out("cssssssss"), 'c'); }
package oddoneoutimport kotlin.test.assertEqualsimport org.junit.Testclass TestExample {@Testfun tests() {assertEquals("b", oddOneOut("aaaaabaaaaa"))assertEquals("a", oddOneOut("llllllal"))assertEquals("c", oddOneOut("cssssssss"))}- #[test]
- fn test() {
- assert_eq!(odd_one_out("aaaaabaaaaa"), 'b');
- assert_eq!(odd_one_out("llllllal"), 'a');
- assert_eq!(odd_one_out("cssssssss"), 'c');
- }
def verify_sum(w1, w2) w1.sum == w2.sum rescue false end
def verifySum(w1, w2)!!(w1 && w2 && w1.downcase.chars.sum(&:ord) == w2.downcase.chars.sum(&:ord))- def verify_sum(w1, w2)
- w1.sum == w2.sum rescue false
- end
# From Ruby 3.0, RSpec is used under the hood. # See https://rspec.info/ # Defaults to the global `describe` for backwards compatibility, but `RSpec.desribe` works as well. describe "Example" do it "should return the sum" do expect(verify_sum("Sebastian", "Patricia")).to eq(false) expect(verify_sum("Anna", "Nana")).to eq(true) expect(verify_sum("John", nil)).to eq(false) # The following is still supported, but new tests should now use them. # Test.assert_equals(add(1, 1), 2) end end
Test.assert_equals(verifySum('Sebastian', 'Patricia'), false);Test.assert_equals(verifySum('Anna', 'Nana'), true);Test.assert_equals(verifySum('John', nil), false);- # From Ruby 3.0, RSpec is used under the hood.
- # See https://rspec.info/
- # Defaults to the global `describe` for backwards compatibility, but `RSpec.desribe` works as well.
- describe "Example" do
- it "should return the sum" do
- expect(verify_sum("Sebastian", "Patricia")).to eq(false)
- expect(verify_sum("Anna", "Nana")).to eq(true)
- expect(verify_sum("John", nil)).to eq(false)
- # The following is still supported, but new tests should now use them.
- # Test.assert_equals(add(1, 1), 2)
- end
- end