diff --git a/src/sig/Board.java b/src/sig/Board.java index f14dace..49c4b6d 100644 --- a/src/sig/Board.java +++ b/src/sig/Board.java @@ -135,11 +135,11 @@ public class Board { //System.out.println(blocks.getSortedBlocksOnRow(y)); List blockList = blocks.getSortedBlocksOnRow(y); //System.out.println(" "+blockList); - markedBlocks.addAll(FindMatches(blockList)); + addAllToListUnique(markedBlocks,FindMatches(blockList)); } for (int x=0;x blockList = blocks.getSortedBlocksOnCol(x); - markedBlocks.addAll(FindMatches(blockList)); + addAllToListUnique(markedBlocks,FindMatches(blockList)); } if (markedBlocks.size()>0) { int minY=Integer.MAX_VALUE; @@ -162,7 +162,10 @@ public class Board { } return markedBlocks.size()>0; } - private List FindMatches(List blockList) { + private void addAllToListUnique(List list, List listToAddFrom) { + list.addAll(listToAddFrom.stream().filter((block)->!list.contains(block)).collect(Collectors.toList())); + } + private List FindMatches(List blockList) { List markedBlocks = new ArrayList(); List tempMarkedBlocks = new ArrayList(); if (blockList.size()==0) {return markedBlocks;}