Take the 2-minute tour ×
Arqade is a question and answer site for passionate videogamers on all platforms. It's 100% free, no registration required.

Given a 1-deep n by m rectangular pit, what is the smallest number of bucket loads that can be used to completely fill it with water source blocks? Given the way water propagates, what's the most efficient sequence to fill the rectangle with? Is this sequence different if trying to fill a square?

share|improve this question
add comment

2 Answers 2

up vote 44 down vote accepted

A water block becomes a source block when there's at least 2 other source blocks next to it (not counting diagonally). You start with the very edge and place two water blocks like so. This will give you a 2×2 square of water sources.

__________
|Wo      |
|oW      |
|        |
|        |
|        |

W = water source placed by you
o = water source generated by the water mechanics

Now, simply scoop up any source block (it will refill), and dump it diagonally from the outermost block.

__________
|Woo     |
|oWo     |
|ooW     |
|        |
|        |

Repeat until you hit an edge. Which source block you take doesn't matter, they are all infinite (as in, will refill instantly) at this point.

__________
|Woooo   |
|oWooo   |
|ooWoo   |
|oooWo   |
|ooooW   |

As you can see, to fill an n-long square, you need n bucket loads (actually, only 2, since after that, you can refill from the pool).

To fill the entire rectangle, dump a bucket every other row on one side. The very edge block always has to be filled.

__________
|Wooooooo|
|oWoooooo|
|ooWooooo|
|oooWoooo|
|ooooWWoW|

So to fill an n×m block rectangle, you need n + ceil((m - n) / 2) water sources, with m being the longer side. Again, only 2 if you're talking resources, because after that, you're drawing from an infinite pool.

Here's a video of a guy using this technique on a perfect square:

(Note that he always refills from the still source blocks for some reason, but as noted above, any source block will do.)

share|improve this answer
6  
This is a fantastic, comprehensive answer! –  dlras2 Sep 27 '11 at 7:33
2  
Now do the same with Lava! ;-) –  Joachim Sauer Sep 27 '11 at 8:18
3  
You can actually improve on this. In your last row: ooooWWWW can be ooooWoWW (you only need a water source every other block, since the gaps will be filled in). –  fredley Sep 27 '11 at 12:23
    
@fredley Yes, I noticed that as soon as I left the house, but by then it was too late. :) I'll just edit it in. –  lunboks Sep 27 '11 at 13:57
1  
@NeilTrodden This pattern already provides infinite water sources. In fact, the very first step is... doing exactly what you just said. –  lunboks Sep 30 '11 at 15:26
show 2 more comments

This might be slightly easier: You can also fill two adjacent sides with source blocks:

+-------+
|WWWWWWW|
|Woooooo|
|Woooooo|
|Woooooo|
|Woooooo|
|Woooooo|
+-------+

...without having to enter the pool and tread water. You can do it by traversing just two sides. It can be as efficient as @lunboks's excellent answer:

+-------+
|1 2 3 4|
|       |
|5      |
|       |
|6      |
|7      |
+-------+

...and has the additional benefit that if you place the corner block (1) last, you can watch the whole thing turn in one smooth motion! :)

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.