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
  • package com.cruci.cruci;
     
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.LinkedList;
    import java.util.regex.Pattern;
     
    public class CrossMath {
    	static class Operation {
    		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) {
    			for(int position=0;position<this.parameters.size();position++) {
    				String param = this.parameters.get(position);
    				if (solvedUnkowns.containsKey(param)) {
    				    this.parameters.set(position, Integer.toString(solvedUnkowns.get(param)));
    				}
    			}
    
    			String resultVar = result;
    			if (solvedUnkowns.containsKey(resultVar)) {
    			    result = Integer.toString(solvedUnkowns.get(resultVar));
    			}
    			
    			if(result.matches("[A-Z]+")) {
    				int resultUnknown=0;
    					switch(this.parameters.get(1)) {
    						case "+":
    							resultUnknown = Integer.parseInt(this.parameters.get(0))+Integer.parseInt(this.parameters.get(2));
    							break;
    						case "-":
    							resultUnknown = Integer.parseInt(this.parameters.get(0))-Integer.parseInt(this.parameters.get(2));
    							break;
    						case "*":
    							resultUnknown = Integer.parseInt(this.parameters.get(0))*Integer.parseInt(this.parameters.get(2));
    							break;
    						case "/":
    							resultUnknown = Integer.parseInt(this.parameters.get(0))/Integer.parseInt(this.parameters.get(2));
    							break;
    						default: 
    							throw new IllegalArgumentException("Comando desconocido: ");
    				}
    				solvedUnkowns.put(result, resultUnknown);
    			}else if(this.parameters.get(0).matches("[A-Z]+")){
    				int resultUnknown=0;
    				switch(this.parameters.get(1)) {
    				case "+":
    					resultUnknown = Integer.parseInt(result)-Integer.parseInt(this.parameters.get(2));
    					break;
    				case "-":
    					resultUnknown = Integer.parseInt(this.parameters.get(2))+Integer.parseInt(result);
    					break;
    				case "*":
    					resultUnknown = Integer.parseInt(result)/Integer.parseInt(this.parameters.get(2));
    					break;
    				case "/":
    					resultUnknown = Integer.parseInt(result)*Integer.parseInt(this.parameters.get(2));
    					break;
    				default: 
    					throw new IllegalArgumentException("Comando desconocido: ");
    				}
    				solvedUnkowns.put(this.parameters.get(0), resultUnknown);
    			}else if(this.parameters.get(2).matches("[A-Z]+")){
    				int resultUnknown=0;
    				switch(this.parameters.get(1)) {
    				case "+":
    					resultUnknown = Integer.parseInt(result)-Integer.parseInt(this.parameters.get(0));
    					break;
    				case "-":
    					resultUnknown = Integer.parseInt(this.parameters.get(0))-Integer.parseInt(result);
    					break;
    				case "*":
    					resultUnknown = Integer.parseInt(result)/Integer.parseInt(this.parameters.get(0));
    					break;
    				case "/":
    					resultUnknown = Integer.parseInt(this.parameters.get(0))/Integer.parseInt(result);
    					break;
    				default: 
    					throw new IllegalArgumentException("Comando desconocido: ");
    				}
    				solvedUnkowns.put(this.parameters.get(2), resultUnknown);
    			}
    		}
    	
    	}
    	public static String[][] solve(String[][] board) {
    		HashMap<String, Integer> solvedUnkowns = new HashMap<String, Integer>();
    		LinkedList<Operation> operations = new LinkedList<CrossMath.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]);
    				}
    			}
    		}
    		int cont = 0;
    		while (0 < operations.size()) {
    			Operation op = operations.pollFirst();
    			switch (op.unknownAmmount(solvedUnkowns)) {
    			case 0:
    				cont = 0;
    				break;
    			case 1:
    				op.calculateUnkown(solvedUnkowns);
    				cont = 0;
    				break;
    			default:
    				operations.addLast(op);
    				cont++;
    				break;
    			}
    			if (operations.size() <= cont) {
    				String[][] res = new String[5][5];
    				for(int i = 0; i < board.length; i++) {
    					for(int k = 0; k < board[i].length; k++) {
    						if(board[i][k].matches("[A-Z]")) {
    							res[i][k] = String.valueOf(solvedUnkowns.get(board[i][k]));
    						}else {
    							res[i][k] = board[i][k];
    						}
    					}
    				}
    				
    				return res;
    			}
    		}
    		return null;
    	}
    }
    • package com.cruci.cruci;
    • import java.util.ArrayList;
    • import java.util.HashMap;
    • import java.util.LinkedList;
    • import java.util.regex.Pattern;
    • class Crossword {
    • public class CrossMath {
    • 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) {
    • for(int position=0;position<this.parameters.size();position++) {
    • String param = this.parameters.get(position);
    • if (solvedUnkowns.containsKey(param)) {
    • this.parameters.set(position, Integer.toString(solvedUnkowns.get(param)));
    • }
    • }
    • String resultVar = result;
    • if (solvedUnkowns.containsKey(resultVar)) {
    • result = Integer.toString(solvedUnkowns.get(resultVar));
    • }
    • 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)) {
    • int resultUnknown=0;
    • switch(this.parameters.get(1)) {
    • case "+":
    • resultUnknown+=Integer.parseInt(this.parameters.get(operador+1));
    • resultUnknown = Integer.parseInt(this.parameters.get(0))+Integer.parseInt(this.parameters.get(2));
    • break;
    • case "-":
    • resultUnknown-=Integer.parseInt(this.parameters.get(operador+1));
    • resultUnknown = Integer.parseInt(this.parameters.get(0))-Integer.parseInt(this.parameters.get(2));
    • break;
    • case "*":
    • resultUnknown*=Integer.parseInt(this.parameters.get(operador+1));
    • resultUnknown = Integer.parseInt(this.parameters.get(0))*Integer.parseInt(this.parameters.get(2));
    • break;
    • case "/":
    • resultUnknown/=Integer.parseInt(this.parameters.get(operador+1));
    • resultUnknown = Integer.parseInt(this.parameters.get(0))/Integer.parseInt(this.parameters.get(2));
    • 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;
    • }else if(this.parameters.get(0).matches("[A-Z]+")){
    • int resultUnknown=0;
    • switch(this.parameters.get(1)) {
    • case "+":
    • resultUnknown = Integer.parseInt(result)-Integer.parseInt(this.parameters.get(2));
    • break;
    • case "-":
    • resultUnknown = Integer.parseInt(this.parameters.get(2))+Integer.parseInt(result);
    • break;
    • case "*":
    • resultUnknown = Integer.parseInt(result)/Integer.parseInt(this.parameters.get(2));
    • break;
    • case "/":
    • resultUnknown = Integer.parseInt(result)*Integer.parseInt(this.parameters.get(2));
    • break;
    • default:
    • throw new IllegalArgumentException("Comando desconocido: ");
    • }
    • solvedUnkowns.put(this.parameters.get(0), resultUnknown);
    • }else if(this.parameters.get(2).matches("[A-Z]+")){
    • int resultUnknown=0;
    • switch(this.parameters.get(1)) {
    • case "+":
    • resultUnknown = Integer.parseInt(result)-Integer.parseInt(this.parameters.get(0));
    • break;
    • case "-":
    • resultUnknown = Integer.parseInt(this.parameters.get(0))-Integer.parseInt(result);
    • break;
    • case "*":
    • resultUnknown = Integer.parseInt(result)/Integer.parseInt(this.parameters.get(0));
    • break;
    • case "/":
    • resultUnknown = Integer.parseInt(this.parameters.get(0))/Integer.parseInt(result);
    • break;
    • default:
    • throw new IllegalArgumentException("Comando desconocido: ");
    • }
    • 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");
    • solvedUnkowns.put(this.parameters.get(2), resultUnknown);
    • }
    • }
    • 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) {
    • }
    • public static String[][] solve(String[][] board) {
    • HashMap<String, Integer> solvedUnkowns = new HashMap<String, Integer>();
    • LinkedList<Operation> operations = new LinkedList<Crossword.Operation>();
    • LinkedList<Operation> operations = new LinkedList<CrossMath.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;
    • String[][] res = new String[5][5];
    • for(int i = 0; i < board.length; i++) {
    • for(int k = 0; k < board[i].length; k++) {
    • if(board[i][k].matches("[A-Z]")) {
    • res[i][k] = String.valueOf(solvedUnkowns.get(board[i][k]));
    • }else {
    • res[i][k] = board[i][k];
    • }
    • }
    • }
    • return res;
    • }
    • }
    • return solvedUnkowns;
    • return null;
    • }
Code
Diff
  • public class DrivingTestEvaluator{
      public static boolean evaluate(String road, String exam){
        //your code here
    //test
        return true;
        }
    }
    • public class DrivingTestEvaluator{
    • public static boolean evaluate(String road, String exam){
    • //your code here
    • //test
    • return true;
    • }
    • }
Code
Diff
  • #If it is not true currently, I shall make it true
    def above_two(arg):
        return abs(arg)+3>2
    • #If it is not true currently, I shall make it true
    • def above_two(arg):
    • return arg+3>2
    • return abs(arg)+3>2
Code
Diff
  • is_perfect_square:=>@^.5%1==0
    • is_perfect_square: => @ ^ 0.5 % 1 == 0
    • is_perfect_square:=>@^.5%1==0
Code
Diff
  • 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
Fundamentals
Code
Diff
  • a=lambda:'⚀'
    • d=lambda:'⚀'
    • a=lambda:'⚀'