codewars037: Fold an array

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;
    }        
}

Example Tests:

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)));
    }
}
相關文章
相關標籤/搜索