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

Exercício:

Reescreva os códigos utilizando os novos recursos do ES6

// 1 - Encontre  um número maior que 6
var arr = [1, 4, 6, 8, 10];
var resp = null;
for (var i = 0; i < arr.length; ++i) {
	if (arr[i] > 6) {
		resp = arr[i];
		break;
	}
}


// 2 - Encontre o índice de um número maior que 6
var arr = [1, 4, 6, 8, 10];
var resp = null;
for (var i = 0; i < arr.length; ++i) {
	if (arr[i] > 6) {
		resp = i;
		break;
	}
}


// 3 - Encontre os numeros maiores que 6
var arr = [1, 4, 6, 8, 10];
var resp = arr.reduce((carry, item) => {
  if (item > 6)
    carry.push(item);
  return carry;
}, []);


// 4 - O array contém o número 6?
var arr = [1, 4, 6, 8, 10];
var resp = arr.indexOf(6) > -1;


// 5 - Todos os números do array são números pares?
var arr = [2, 4, 6, 8, 9];
var resp = true;
for (var i = 0; i < arr.length; ++i) {
  if (arr[i] % 2 !== 0) {
    resp = false;
    break;
  }
}

// 6 - Algum número no array é impar?
var arr = [2, 4, 0, -2];
var resp = arr.reduce(function (carry, item) {
  return carry || (item % 2 !== 0);
}, false);

Exercício:

A função "a" deve retornar uma promise sem usar a classe Promise.

Modifique a função "b" de forma que execute a promise de "a" sem usar then/catch.

function a() {
  return new Promise(function (resolve, reject) {
    resolve('ok');
  });
}

function b() {
  a().then(function(res) {
    console.log(res);
  }).catch(function(err) {
    console.log(err);
  })
}
module Example where
//
Testing
Frameworks

A slightly hacky way to reproduce the timing information after the runner got the outermost "Test" group removed.

module Example where

add = (+)

Just a demo that passing -Ox flags does work (GHC 8 only).

{-# OPTIONS_GHC -O2 -optc-O3 #-}

module Example where

factorial n = product [1..n]

index.js is a combination of preloaded, code and test cases with a bit of error handling. Other three files are required modules to run the tests.

const fs = require('fs')
//console.log(this)
const file1 = fs.readFileSync('/home/codewarrior/index.js')
console.log(file1.toString())
const file2 = fs.readFileSync('/runner/frameworks/javascript/cw-2.js')
console.log(file2.toString())
const file3 = fs.readFileSync('/runner/frameworks/javascript/chai-display.js')
console.log(file3.toString())
const file4 = fs.readFileSync('/runner/frameworks/javascript/display.js')
console.log(file4.toString())
UnnamedFailed Tests

fast-check

function add1(a, b) {
  return a + b;
}

function add2(a, b) {
  return a + b + 1;
}

function add3(a, b) {
  throw new Error('boo');
}

We are working for a Delivery company.This Kata requires the user to calculate the closest daily routes for Delivery based on the nearest location first to be delivered in the daily routes of deliveries to be made.

There is a single method - public List<List> ClosestXDestinations(int numDestinations,
List<List> allLocations, int numDeliveries), which takes in 3 parameters.

  1. numDestinations - the number of destinations for the driver to deliver products to for today.
  2. allLocations - A list of list having all locations of x and y coordinates of locations.
  3. numDeliveries - the number of deliveries to be made today.
  
The closest destination is calculated as below.

Example:
--------
input:

numDestinations = 3
allLocations = [[1,2],[3,4],[1,-1]]
numDeliveries = 1

Output:

[[1,-1]]

Explanation:
The distance of the truck from location [1,2] is squareroot(5) = 2.236
The distance of the truck from location [3,4] is squareroot(25) = 5
The distance of the truck from location [1,-1] is squareroot(2) = 1.141
numDeliveries is 1, hence the output is [1,-1]
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.TreeMap;

public class NearestDelivery {

	Integer val = 0;
	int x = 0, y = 0;

	public List<List<Integer>> ClosestXDestinations(int numDestinations,
			List<List<Integer>> allLocations, int numDeliveries) {
		TreeMap<Double, List<Integer>> sortedMap = new TreeMap<>();
		for (int i = 0; i < allLocations.size(); i++) {
			List<Integer> list = allLocations.get(i);
			if (!list.isEmpty()) {
				if (list.size() == 1) {
					x = ((Integer) list.get(0)).intValue();
					y = 0;
				} else if (list.size() == 2) {
					x = ((Integer) list.get(0)).intValue();
					y = ((Integer) list.get(1)).intValue();
				}

				val = x * x + y * y;
				double dVal = Math.sqrt(val);
				sortedMap.put(dVal, list);
			}
		}
		ArrayList<List<Integer>> as = new ArrayList<>(sortedMap.values());
		while (as.size() > numDeliveries) {
			as.remove(as.size() - 1);
		}
		return as;
	}


}

The given code barely passes at the limit of 23, even with -O2 enabled on Preloaded. GHC actually does lots of GC during compilation, so I guess we can apply this article to reduce GC times. Unfortunately, +RTS option is not available in OPTIONS_GHC so I need kazk's help here.

{-# LANGUAGE GADTs         #-}
{-# LANGUAGE TypeFamilies  #-}
{-# LANGUAGE TypeOperators #-}

{-# OPTIONS_GHC -Wall -O2 #-}

module Kata.AdditionCommutes
  ( plusCommutes ) where

import Kata.AdditionCommutes.Definitions
  ( Z, S
  , Natural(..), Equal(..)
  , (:+:))

-- | x == x
refl :: Natural n -> Equal n n
refl NumZ     = EqlZ
refl (NumS n) = EqlS (refl n)

-- | a == b -> b == a
sym :: Equal a b -> Equal b a
sym EqlZ     = EqlZ
sym (EqlS p) = EqlS (sym p)

-- | a == b && b == c -> a == c
(<&>) :: Equal a b -> Equal b c -> Equal a c
(<&>) EqlZ EqlZ         = EqlZ
(<&>) (EqlS a) (EqlS b) = EqlS (a <&> b)

-- | s(a) + b == a + s(b)
shove :: Natural a -> Natural b -> Equal (S a :+: b) (a :+: S b)
shove NumZ m     = EqlS (refl m)
shove (NumS n) m = EqlS (shove n m)

-- | a + b == b + a
plusCommutes :: Natural a -> Natural b -> Equal (a :+: b) (b :+: a)
plusCommutes NumZ  NumZ = EqlZ
plusCommutes a (NumS b) = sym (shove a b) <&> EqlS (plusCommutes a b)
plusCommutes (NumS a) b = EqlS (plusCommutes a b) <&> shove b a