@@ -24,13 +24,13 @@ public CreateAFunnel(int height) {
24
24
}
25
25
26
26
27
- public void fill (Character ... args ) {
27
+ public void fill (char ... args ) {
28
28
for (char value : args ) {
29
29
fill (value );
30
30
}
31
31
}
32
32
33
- public void fill (char value ) {
33
+ private void fill (char value ) {
34
34
for (int row = 0 ; row < height (); row ++) {
35
35
char [] funnelRow = funnel [row ];
36
36
for (int column = 0 ; column < funnelRow .length ; column ++) {
@@ -45,20 +45,24 @@ public void fill(char value) {
45
45
46
46
public Character drip () {
47
47
char drippedValue = funnel [0 ][0 ];
48
+ if (drippedValue == ' ' ) {
49
+ return null ;
50
+ }
48
51
fillPlace (0 , 0 );
49
52
return drippedValue ;
50
53
}
51
54
52
55
private void fillPlace (int row , int column ) {
53
- funnel [row ][column ] = ' ' ;
54
- System .out .println (this );
55
56
int rowAbove = row + 1 ;
56
57
int leftWeight = weight (rowAbove , column , column );
57
58
int rightWeight = weight (rowAbove , column + 1 , column + 1 );
58
- if (rightWeight > 0 && leftWeight >= rightWeight ) {
59
+
60
+ if (leftWeight == 0 && rightWeight == 0 ) {
61
+ funnel [row ][column ] = ' ' ;
62
+ } else if (leftWeight >= rightWeight ) {
59
63
funnel [row ][column ] = funnel [rowAbove ][column ];
60
64
fillPlace (rowAbove , column );
61
- } else if ( rightWeight > 0 ) {
65
+ } else {
62
66
funnel [row ][column ] = funnel [rowAbove ][column + 1 ];
63
67
fillPlace (rowAbove , column + 1 );
64
68
}
@@ -90,7 +94,8 @@ public int height() {
90
94
public String toString () {
91
95
StringBuilder sb = new StringBuilder ();
92
96
for (int row = height () - 1 ; row >= 0 ; row --) {
93
- sb .append (" " .repeat (height () - row - 1 ));
97
+ int leftPadding = height () - row - 1 ;
98
+ sb .append (" " .repeat (leftPadding ));
94
99
sb .append ("\\ " );
95
100
for (int column = 0 ; column < funnel [row ].length ; column ++) {
96
101
char value = funnel [row ][column ];
0 commit comments