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.
dani.vsvs.antonio.rglast month
Cross Math
import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.regex.Pattern; class Crossword { static class Operation { private static final Pattern SOLO_LETRAS = Pattern.compile("^[A-Za-z]+$"); ArrayList<String> parameters; String result; public Operation(ArrayList<String> parameters, String result) { this.parameters = parameters; this.result = result; } public String toString() { return "Operation [" + parameters + ", =" + result + "]"; } public int unknownAmmount(HashMap<String, Integer> solvedUnkowns) { int ammount = 0; final String REGEX = "^((-)?[0-9]+)|([-+x/])$"; for (String str : parameters) { if (!str.matches(REGEX) && !solvedUnkowns.containsKey(str)) { ammount++; } } if (!result.matches(REGEX) && !solvedUnkowns.containsKey(result)) { ammount++; } return ammount; } public void calculateUnkown(HashMap<String, Integer> solvedUnkowns) { if(result.matches("[A-Z]+")) { int resultUnknown = Integer.parseInt(this.parameters.get(0)); for(int operador=1;operador<this.parameters.size();operador+=2) { switch(this.parameters.get(operador)) { case "+": resultUnknown+=Integer.parseInt(this.parameters.get(operador+1)); break; case "-": resultUnknown-=Integer.parseInt(this.parameters.get(operador+1)); break; case "*": resultUnknown*=Integer.parseInt(this.parameters.get(operador+1)); break; case "/": resultUnknown/=Integer.parseInt(this.parameters.get(operador+1)); break; default: throw new IllegalArgumentException("Comando desconocido: "); } } solvedUnkowns.put(result, resultUnknown); }else if(containsVariable(this.parameters)){ int resultUnknown = Integer.parseInt(result); String result; int route=1; while(!this.parameters.get(route).matches("[A-Z]+")) { switch(this.parameters.get(route+1)) { case "-": resultUnknown+=Integer.parseInt(this.parameters.get(route-1)); break; case "+": resultUnknown-=Integer.parseInt(this.parameters.get(route-1)); break; case "/": resultUnknown*=Integer.parseInt(this.parameters.get(route-1)); break; case "*": resultUnknown/=Integer.parseInt(this.parameters.get(route-1)); break; } route+=2; } result=this.parameters.get(route); route+=2; while(route<this.parameters.size()) { switch(this.parameters.get(route)) { case "-": resultUnknown+=Integer.parseInt(this.parameters.get(route+1)); break; case "+": resultUnknown-=Integer.parseInt(this.parameters.get(route+1)); break; case "/": resultUnknown*=Integer.parseInt(this.parameters.get(route+1)); break; case "*": resultUnknown/=Integer.parseInt(this.parameters.get(route+1)); break; default: throw new IllegalArgumentException("Comando desconocido: "); } route+=2; } solvedUnkowns.put(result, resultUnknown); }else { throw new IllegalArgumentException("Ninguna parte contiene una variable"); } } public static Boolean containsVariable(ArrayList<String> array) { return array.stream() .anyMatch(palabra -> SOLO_LETRAS.matcher(palabra).matches()); } } public static HashMap<String, Integer> solve(String[][] board) { HashMap<String, Integer> solvedUnkowns = new HashMap<String, Integer>(); LinkedList<Operation> operations = new LinkedList<Crossword.Operation>(); for (int row = 0; row < board.length; row += 2) { ArrayList<String> parameters = new ArrayList<String>(); for (int col = 0; col < board[row].length; col++) { if ("=".equals(board[row][col])) { operations.add(new Operation(parameters, board[row][col+1])); parameters = new ArrayList<String>(); } else { parameters.add(board[row][col]); } } } for (int col = 0; col < board[0].length; col += 2) { ArrayList<String> parameters = new ArrayList<String>(); for (int row = 0; row < board.length; row++) { if ("=".equals(board[row][col])) { operations.add(new Operation(parameters, board[row+1][col])); parameters = new ArrayList<String>(); } else { parameters.add(board[row][col]); } } } System.out.println("lista" + operations.toString()); int cont = 0; while (0 < operations.size()) { Operation op = operations.pollFirst(); switch (op.unknownAmmount(solvedUnkowns)) { case 0: // not doing anything, just removing it from the queue cont = 0; break; case 1: op.calculateUnkown(solvedUnkowns); cont = 0; break; default: operations.addLast(op); cont++; break; } if (operations.size() <= cont) { return solvedUnkowns; } } return solvedUnkowns; } }
class Crossword{}- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.LinkedList;
- import java.util.regex.Pattern;
- class Crossword {
- static class Operation {
- private static final Pattern SOLO_LETRAS = Pattern.compile("^[A-Za-z]+$");
- ArrayList<String> parameters;
- String result;
- public Operation(ArrayList<String> parameters, String result) {
- this.parameters = parameters;
- this.result = result;
- }
- @Override
- public String toString() {
- return "Operation [" + parameters + ", =" + result + "]";
- }
- public int unknownAmmount(HashMap<String, Integer> solvedUnkowns) {
- int ammount = 0;
- final String REGEX = "^((-)?[0-9]+)|([-+x/])$";
- for (String str : parameters) {
- if (!str.matches(REGEX) && !solvedUnkowns.containsKey(str)) {
- ammount++;
- }
- }
- if (!result.matches(REGEX) && !solvedUnkowns.containsKey(result)) {
- ammount++;
- }
- return ammount;
- }
- public void calculateUnkown(HashMap<String, Integer> solvedUnkowns) {
- if(result.matches("[A-Z]+")) {
- int resultUnknown = Integer.parseInt(this.parameters.get(0));
- for(int operador=1;operador<this.parameters.size();operador+=2) {
- switch(this.parameters.get(operador)) {
- case "+":
- resultUnknown+=Integer.parseInt(this.parameters.get(operador+1));
- break;
- case "-":
- resultUnknown-=Integer.parseInt(this.parameters.get(operador+1));
- break;
- case "*":
- resultUnknown*=Integer.parseInt(this.parameters.get(operador+1));
- break;
- case "/":
- resultUnknown/=Integer.parseInt(this.parameters.get(operador+1));
- break;
- default:
- throw new IllegalArgumentException("Comando desconocido: ");
- }
- }
- solvedUnkowns.put(result, resultUnknown);
- }else if(containsVariable(this.parameters)){
- int resultUnknown = Integer.parseInt(result);
- String result;
- int route=1;
- while(!this.parameters.get(route).matches("[A-Z]+")) {
- switch(this.parameters.get(route+1)) {
- case "-":
- resultUnknown+=Integer.parseInt(this.parameters.get(route-1));
- break;
- case "+":
- resultUnknown-=Integer.parseInt(this.parameters.get(route-1));
- break;
- case "/":
- resultUnknown*=Integer.parseInt(this.parameters.get(route-1));
- break;
- case "*":
- resultUnknown/=Integer.parseInt(this.parameters.get(route-1));
- break;
- }
- route+=2;
- }
- result=this.parameters.get(route);
- route+=2;
- while(route<this.parameters.size()) {
- switch(this.parameters.get(route)) {
- case "-":
- resultUnknown+=Integer.parseInt(this.parameters.get(route+1));
- break;
- case "+":
- resultUnknown-=Integer.parseInt(this.parameters.get(route+1));
- break;
- case "/":
- resultUnknown*=Integer.parseInt(this.parameters.get(route+1));
- break;
- case "*":
- resultUnknown/=Integer.parseInt(this.parameters.get(route+1));
- break;
- default:
- throw new IllegalArgumentException("Comando desconocido: ");
- }
- route+=2;
- }
- solvedUnkowns.put(result, resultUnknown);
- }else {
- throw new IllegalArgumentException("Ninguna parte contiene una variable");
- }
- }
- public static Boolean containsVariable(ArrayList<String> array) {
- return array.stream()
- .anyMatch(palabra -> SOLO_LETRAS.matcher(palabra).matches());
- }
- }
- public static HashMap<String, Integer> solve(String[][] board) {
- HashMap<String, Integer> solvedUnkowns = new HashMap<String, Integer>();
- LinkedList<Operation> operations = new LinkedList<Crossword.Operation>();
- for (int row = 0; row < board.length; row += 2) {
- ArrayList<String> parameters = new ArrayList<String>();
- for (int col = 0; col < board[row].length; col++) {
- if ("=".equals(board[row][col])) {
- operations.add(new Operation(parameters, board[row][col+1]));
- parameters = new ArrayList<String>();
- } else {
- parameters.add(board[row][col]);
- }
- }
- }
- for (int col = 0; col < board[0].length; col += 2) {
- ArrayList<String> parameters = new ArrayList<String>();
- for (int row = 0; row < board.length; row++) {
- if ("=".equals(board[row][col])) {
- operations.add(new Operation(parameters, board[row+1][col]));
- parameters = new ArrayList<String>();
- } else {
- parameters.add(board[row][col]);
- }
- }
- }
- System.out.println("lista" + operations.toString());
- int cont = 0;
- while (0 < operations.size()) {
- Operation op = operations.pollFirst();
- switch (op.unknownAmmount(solvedUnkowns)) {
- case 0:
- // not doing anything, just removing it from the queue
- cont = 0;
- break;
- case 1:
- op.calculateUnkown(solvedUnkowns);
- cont = 0;
- break;
- default:
- operations.addLast(op);
- cont++;
- break;
- }
- if (operations.size() <= cont) {
- return solvedUnkowns;
- }
- }
- return solvedUnkowns;
- }
- }
aitor.GMvs.gonzalo.sllast month
Driving Test Evaluator
coulrulner1vs.Mustafa Hatolast month
Make It Greater Than 2
GameHerobrinevs.Godera32 months ago
Reverse the letters in a String
extern malloc global reverse_string reverse_string: mov rcx, -1 rs_continue: inc rcx cmp byte [rdi+rcx], 0 jnz rs_continue push rcx push rdi call malloc pop rdi pop rbx mov rcx, 0 rs_copy: dec rbx mov dl, [rdi+rbx] mov [rax+rcx], dl inc rcx cmp rbx, 0 jnz rs_copy mov byte [rax+rcx], 0 ret
#include <stdlib.h>#include <string.h>char* reverse_string(const char* word) {if (!word) {return NULL;}- extern malloc
- global reverse_string
- reverse_string:
- mov rcx, -1
- rs_continue:
- inc rcx
- cmp byte [rdi+rcx], 0
- jnz rs_continue
- push rcx
- push rdi
- call malloc
- pop rdi
- pop rbx
- mov rcx, 0
size_t len = strlen(word);char* res = (char*)malloc(len + 1);if (!res) {return NULL;}for (size_t i = 0; i < len; ++i) {res[i] = word[len - 1 - i];}res[len] = '\0';return res;}- rs_copy:
- dec rbx
- mov dl, [rdi+rbx]
- mov [rax+rcx], dl
- inc rcx
- cmp rbx, 0
- jnz rs_copy
- mov byte [rax+rcx], 0
- ret
#include <criterion/criterion.h> #include <stdio.h> char *reverse_string(const char *word); void tester(const char *word, const char *expected) { char *res = reverse_string(word); cr_assert_str_eq(res, expected); free(res); } Test(Sample_Tests, Valid_Input_Test) { tester("monkey", "yeknom"); tester("home", "emoh"); tester("pneumonoultramicroscopicsilicovolcanoconiosis", "sisoinoconaclovociliscipocsorcimartluonomuenp"); }
- #include <criterion/criterion.h>
- #include <stdio.h>
- char *reverse_string(const char *word);
- void tester(const char *word, const char *expected)
- {
- char *res = reverse_string(word);
- cr_assert_str_eq(res, expected);
- free(res);
- }
- Test(Sample_Tests, Valid_Input_Test)
- {
- tester("monkey", "yeknom");
- tester("home", "emoh");
- tester("pneumonoultramicroscopicsilicovolcanoconiosis", "sisoinoconaclovociliscipocsorcimartluonomuenp");
- }
Fundamentals
import codewars_test as test # TODO Write tests import solution # or from solution import example .it("Basic tests") def basic_tests(): valid = ["⚀", "⚁", "⚂", "⚃", "⚄", "⚅"] # roll 100 times for _ in range(100): result = a() test.expect(result in valid, f"Got {result} but expected one of {valid}")
- import codewars_test as test
- # TODO Write tests
- import solution # or from solution import example
- @test.it("Basic tests")
- def basic_tests():
- valid = ["⚀", "⚁", "⚂", "⚃", "⚄", "⚅"]
- # roll 100 times
- for _ in range(100):
result = d()- result = a()
- test.expect(result in valid, f"Got {result} but expected one of {valid}")