Implement divideAlternating
This commit is contained in:
		
							parent
							
								
									effe0a39f9
								
							
						
					
					
						commit
						7416f94dbc
					
				
					 2 changed files with 35 additions and 1 deletions
				
			
		|  | @ -417,7 +417,22 @@ public class FullyUsedArrayProcessor<T> implements SequenceProcessor<T, FullyUse | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public Pair<FullyUsedArray<T>, FullyUsedArray<T>> divideAlternating(FullyUsedArray<T> array) { |     public Pair<FullyUsedArray<T>, FullyUsedArray<T>> divideAlternating(FullyUsedArray<T> array) { | ||||||
|         throw new UnsupportedOperationException(); |         var p = new Pair<FullyUsedArray<T>, FullyUsedArray<T>>(); | ||||||
|  |         p.fst = new FullyUsedArray<>(); | ||||||
|  |         p.snd = new FullyUsedArray<>(); | ||||||
|  | 
 | ||||||
|  |         p.snd.theArray = Arrays.newArray(array.theArray.length / 2); | ||||||
|  |         p.fst.theArray = Arrays.newArray(array.theArray.length - p.snd.theArray.length); | ||||||
|  | 
 | ||||||
|  |         for (int i = 0; i < array.theArray.length; i++) { | ||||||
|  |             if (i % 2 == 0) { | ||||||
|  |                 p.fst.theArray[i/2] = array.theArray[i]; | ||||||
|  |             } else { | ||||||
|  |                 p.snd.theArray[i/2] = array.theArray[i]; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return p; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|  |  | ||||||
|  | @ -501,4 +501,23 @@ public abstract class SequenceProcessorTest<S> { | ||||||
|         assertTrue(processor.check(s)); |         assertTrue(processor.check(s)); | ||||||
|         assertIterableEquals(listA, processor.iterate(s)); |         assertIterableEquals(listA, processor.iterate(s)); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     @ParameterizedTest | ||||||
|  |     @ArgumentsSource(DoubleListProvider.class) | ||||||
|  |     void testThat_divideAlternatingWorks(List<Integer> list) { | ||||||
|  |         S s = processor.create(list); | ||||||
|  |         var div = List.of(new ArrayList<Integer>(), new ArrayList<Integer>()); | ||||||
|  | 
 | ||||||
|  |         for (int i = 0; i < list.size(); i++) { | ||||||
|  |             div.get(i % 2).add(list.get(i)); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         var p = processor.divideAlternating(s); | ||||||
|  | 
 | ||||||
|  |         assertTrue(processor.check(p.fst)); | ||||||
|  |         assertIterableEquals(div.get(0), processor.iterate(p.fst)); | ||||||
|  | 
 | ||||||
|  |         assertTrue(processor.check(p.snd)); | ||||||
|  |         assertIterableEquals(div.get(1), processor.iterate(p.snd)); | ||||||
|  |     } | ||||||
| } | } | ||||||
		Reference in a new issue