In this kata your task is to create bit calculator. Function arguments are two bit representation of numbers ("101","1","10"...), and you must return their sum in decimal representation.
Test.expect(calculate("10","10") == 4);
Test.expect(calculate("10","0") == 2);
Test.expect(calculate("101","10") == 7);
parseInt and some Math functions are disabled.
Those Math functions are enabled: pow,round,random
function convert(num) {
var idx =0;
var result =0;
var temp = num.toString().split("");
for(var i = temp.length-1; i>=0; i--){
if(temp[idx++] === '1')
result += Math.pow(2,i);
}
return result;
}
function calculate(num1,num2){
return convert(num1)+convert(num2);
}
We have a function that takes in an integer n, and returns a number x.
Lets call this function findX(n)/find_x(n) (depending on your language):
function findX(n) {
let x = 0;
for (let i = 0; i < n; i++) {
for (let j = 0; j < 2*n; j++)
x += i + j;
}
return x;
}
The functions loops throught the number n and at every iteration, performs a nested loop on 2*n, at each iteration of this nested loop it increments x with the (nested loop index + parents loop index).
This works well when the numbers are reasonably small.
findX(2) //=> 16
findX(3) //=> 63
findX(5) //=> 325
But may be slow for numbers > 103
So your task is to optimize the function findX/find_x, so it works well for large numbers.
Input Range
1 <= n <= 106 (105 in JS)
Note: This problem is more about logical reasoning than it is about finding a mathematicial formula, infact there are no complex math formula involved
You are working with a patient's body which has many cells.
The patient's body is a matrix where every row represents a cell.
Each cell contains just uppercase and lowercase letters,
and every cell in the body should be the same.
Oh no! It seems that one of the cells have mutated!
It is your job to locate the mutation so that the chemo specialists can fix it!
return the location [i,j] within the matrix...
before it's too late! :(
example:
cellscellscellscodecodecells
cellscellscellscodecodecells
cellscellscellscodecodecells
cellscellscellscodecodecells
cellscellscellscodecodecells
cellscellscellscodecodecells
cellscellscellscodecodecells
cellscellscellscodecodecells
cellscellscellscodecodecells
cellscellscellscodecadecells <- here it is! [9, 20]
cellscellscellscodecodecells
cellscellscellscodecodecells
cellscellscellscodecodecells
cellscellscellscodecodecells
no bodies will have less than 3 cells.
if the diagnose was a false alarm, return an empty array.
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
class JomoPipi {
public static int[] mutationLocation(char[][] body) {
Map<string, integer=""> map = new HashMap<>();
for (int i = 0; i < 3; i++) {
map.put(String.valueOf(body[i]), 1 + map.getOrDefault(String.valueOf(body[i]),0));
}
char [] dna = map.entrySet().stream()
.sorted(Map.Entry.<string, integer="">comparingByValue().reversed())
.findFirst().get().getKey().toCharArray();
for (int x = 0; x < body.length; x++) {
if(!Arrays.equals(dna, body[x]))
for (int y = 0; y < body[x].length; y++) {
if(dna[y] != body[x][y]) {
return new int [] {x,y};
}
}
}
return new int [0];
}
}
The wave (known as the Mexican wave in the English-speaking world outside North America) is an example of metachronal rhythm achieved in a packed stadium when successive groups of spectators briefly stand, yell, and raise their arms. Immediately upon stretching to full height, the spectator returns to the usual seated position. The result is a wave of standing spectators that travels through the crowd, even though individual spectators never move away from their seats. In many large arenas the crowd is seated in a contiguous circuit all the way around the sport field, and so the wave is able to travel continuously around the arena; in discontiguous seating arrangements, the wave can instead reflect back and forth through the crowd. When the gap in seating is narrow, the wave can sometimes pass through it. Usually only one wave crest will be present at any given time in an arena, although simultaneous, counter-rotating waves have been produced. (Source Wikipedia)
Task
In this simple Kata your task is to create a function that turns a string into a Mexican Wave. You will be passed a string and you must return that string in an array where an uppercase letter is a person standing up.
Rules
1. The input string will always be lower case but maybe empty.
2. If the character in the string is whitespace then pass over it as if it was an empty seat.
The method should be able to handle the case of empty data being passed in.
Note: The only arrays that need to be traversed are those assigned to the "items" property.
function extractIds(data){
var result = [];
for(var key in data){
if(typeof data[key] === "object")
result = result.concat(extractIds(data[key]));
else
if(key ==="id")
result.push(data[key]);
}
return result;
}