From 31e83a33fba2ded897a85754b896250618c46c1e Mon Sep 17 00:00:00 2001 From: Jacob Signorovitch Date: Wed, 28 May 2025 08:44:53 -0400 Subject: [PATCH] halshadshafds --- arrays/src/arrays/Main.java | 31 ++++++++++++++++++++++--------- streams/src/streams/Main.java | 1 - 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/arrays/src/arrays/Main.java b/arrays/src/arrays/Main.java index e92eb95..53dcfa7 100644 --- a/arrays/src/arrays/Main.java +++ b/arrays/src/arrays/Main.java @@ -57,15 +57,13 @@ class Sudoku { for (int[] col : transposed) if (isRepetitive(col)) return false; - /* - // Check there'ren't any repeats in a square. - for (int i = 0; i < 9; i++) { - int[] square = new int[3][3]; - for (int j = i; j < i + 3; j++) { - // for (int k = i; k < i + 3; k++) { square[i][k] } - } - } -*/ + // Check all 3x3 squares. + for (int squareRow = 0; squareRow < 3; squareRow++) { + for (int squareCol = 0; squareCol < 3; squareCol++) { + if (squareCheck(puz, squareRow * 3, squareCol * 3)) + return false; + } + } return true; } @@ -91,6 +89,20 @@ class Sudoku { return transposed; } + + // Check if a 3x3 square repeats values. + static boolean squareCheck(int[][] puz, int startRow, int startCol) { + HashMap seen = new HashMap<>(); + + for (int i = 0; i < 3; i++) + for (int j = 0; j < 3; j++) { + int val = puz[startRow + i][startCol + j]; + if (seen.containsKey(val)) return true; + else seen.put(val, true); + } + + return false; + } } class Examples { @@ -166,6 +178,7 @@ class Examples { t.checkExpect(Sudoku.solved(testPuz6), false); t.checkExpect(Sudoku.solved(testPuz7), false); } + void testSieve(Tester t) { Sieve sieve = new Sieve(29); t.checkExpect(sieve.hasNext(), true); diff --git a/streams/src/streams/Main.java b/streams/src/streams/Main.java index 2613626..3e7c3b6 100644 --- a/streams/src/streams/Main.java +++ b/streams/src/streams/Main.java @@ -2,7 +2,6 @@ package streams; import java.util.ArrayList; import java.util.Arrays; -import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Optional;