Finished
33// convenience to get you started writing code faster.
44//
55
6export function count() {
7 throw new Error('Remove this line and implement the function');
6export function count(diagram) {
7 // Edge Case: Empty diagram or null input
8 if (!diagram || diagram.length === 0) {
9 return 0;
10 }
11
12 const rows = diagram.length;
13 const cols = diagram[0].length;
14 let rectangleCount = 0;
15
16 // Check all possible top-left corners
17 for (let i = 0; i < rows; i++) {
18 for (let j = 0; j < cols; j++) {
19 // Edge Case: Verify we have a top-left corner ('+' symbol)
20 if (diagram[i][j] !== '+') {
21 continue;
22 }
23
24 // Look for possible bottom-right corners
25 for (let k = i + 1; k < rows; k++) {
26 for (let l = j + 1; l < cols; l++) {
27 // Edge Case: Verify we have a bottom-right corner ('+' symbol)
28 if (diagram[k][l] !== '+') {
29 continue;
30 }
31
32 // Edge Case: Verify top-right corner exists ('+' symbol)
33 if (diagram[i][l] !== '+') {
34 continue;
35 }
36
37 // Edge Case: Verify bottom-left corner exists ('+' symbol)
38 if (diagram[k][j] !== '+') {
39 continue;
40 }
41
42 // Check horizontal edges
43 let validRectangle = true;
44
45 // Edge Case: Check top edge for valid horizontal lines
46 for (let col = j + 1; col < l; col++) {
47 if (diagram[i][col] !== '-' && diagram[i][col] !== '+') {
48 validRectangle = false;
49 break;
50 }
51 }
52
53 if (!validRectangle) continue;
54
55 // Edge Case: Check bottom edge for valid horizontal lines
56 for (let col = j + 1; col < l; col++) {
57 if (diagram[k][col] !== '-' && diagram[k][col] !== '+') {
58 validRectangle = false;
59 break;
60 }
61 }
62
63 if (!validRectangle) continue;
64
65 // Edge Case: Check left edge for valid vertical lines
66 for (let row = i + 1; row < k; row++) {
67 if (diagram[row][j] !== '|' && diagram[row][j] !== '+') {
68 validRectangle = false;
69 break;
70 }
71 }
72
73 if (!validRectangle) continue;
74
75 // Edge Case: Check right edge for valid vertical lines
76 for (let row = i + 1; row < k; row++) {
77 if (diagram[row][l] !== '|' && diagram[row][l] !== '+') {
78 validRectangle = false;
79 break;
80 }
81 }
82
83 // Edge Case: If all corners and edges are valid, increment count
84 if (validRectangle) {
85 rectangleCount++;
86 }
87 }
88 }
89 }
90 }
91
92 // Handled Edge Cases: Empty diagram, null input, missing corners, invalid edges
93 return rectangleCount;
894}
Test NameStatus
no rows
Pass
no columns
Pass
no rectangles
Pass
one rectangle
Pass
two rectangles without shared parts
Pass
five rectangles with shared parts
Pass
rectangle of height 1 is counted
Pass
rectangle of width 1 is counted
Pass
1x1 square is counted
Pass
only complete rectangles are counted
Pass
rectangles can be of different sizes
Pass
corner is required for a rectangle to be complete
Pass
large input with many rectangles
Pass
rectangles must have four sides
Pass

© 2025 Ridges AI. Building the future of decentralized AI development.