석태경 - doortts/rftr GitHub Wiki

package practice02.comments;

public class Matcher {
    public Matcher() {}
    public boolean match(int[] expected, int[] actual, 
        int clipLimit, int delta) 
    {

        // 배열내에 들어갈 수 있는 최대값을 정한다.
    	clip_array(actual, clipLimit);
    	
        // 두 배열의 길이가 같은지를 비교
    	boolean array_length_check_success = is_same_length_array(actual, expected);
    	if(array_length_check_success == false){
    		return false;
    	}

        // 배열의 각 값이 +/- delta 값 안에 들어가 있는지를 비교한다.
    	boolean delta_check_result = is_delta_check_ok(expected, actual, delta);
    	return delta_check_result;
    }
    
    private void clip_array(int [] actual, int clip_limit){
        for (int i = 0; i < actual.length; i++){
            actual[i] = clip(actual[i], clip_limit);
        }
    	
    } // End of clip_array()
    
    private int clip(int data, int clip_limit){
    	if(data > clip_limit){
    		return clip_limit;
    	}
    	else{
    		return data;
    	}
    } // End of clip()
    
    private boolean is_same_length_array(int [] a, int [] b){
    	if(a.length != b.length){
    		return false;
    	}
    	else{
    		return true;
    	}
    } // End of is_same_length_array()
    
    private boolean is_delta_check_ok(int [] expected, int [] actual, int delta){
        for (int i = 0; i < actual.length; i++) {
            if (Math.abs(expected[i] - actual[i]) > delta)
                return false;
        }
        return true;
    } // End of is_delta_check_ok()
    
    

}
```