Sourcejava
package codewas.dec; //https://www.codewars.com/kata/57ea70aa5500adfe8a000110/train/java public class Kata{ public static int[] foldArray(int[] array, int runs){ if(array.length == 1){ return array; } int len = array.length; int size = len % 2 == 0 ? len / 2 : len / 2 + 1; int[] rslt = new int[size]; for(int i = 0; i < (len % 2 == 0 ? size : size - 1); i++){ rslt[i] = array[i] + array[len - 1 - i]; } if(len % 2 != 0){ rslt[size - 1] = array[size - 1]; } if(runs > 1){ return foldArray(rslt, runs - 1); } return rslt; } }
import org.junit.Test; import static org.junit.Assert.assertEquals; import org.junit.runners.JUnit4; import java.util.Arrays; public class KataTests { @Test public void basicTests() { int[] input = new int[] { 1, 2, 3, 4, 5 }; int[] expected = new int[] { 6, 6, 3 }; assertEquals(Arrays.toString(expected), Arrays.toString(Kata.foldArray(input, 1))); expected = new int[] { 9, 6 }; assertEquals(Arrays.toString(expected), Arrays.toString(Kata.foldArray(input, 2))); expected = new int[] { 15 }; assertEquals(Arrays.toString(expected), Arrays.toString(Kata.foldArray(input, 3))); input = new int[] { -9, 9, -8, 8, 66, 23 }; expected = new int[] { 14, 75, 0 }; assertEquals(Arrays.toString(expected), Arrays.toString(Kata.foldArray(input, 1))); } }