Domanda:
Qual è il modo più efficiente per riempire un rettangolo con l'acqua?
dlras2
2011-09-27 11:57:59 UTC
view on stackexchange narkive permalink

Data una fossa rettangolare di 1 profondità n x m , qual è il numero minimo di carichi della benna che può essere utilizzato per riempirla completamente con blocchi di sorgenti d'acqua? Dato il modo in cui l'acqua si propaga, qual è la sequenza più efficiente con cui riempire il rettangolo? Questa sequenza è diversa se si cerca di riempire un quadrato?

Due risposte:
a cat
2011-09-27 12:25:07 UTC
view on stackexchange narkive permalink

Un blocco d'acqua diventa un blocco sorgente quando ci sono almeno altri 2 blocchi sorgente accanto ad esso (senza contare in diagonale). Inizi dal bordo e posiziona due blocchi d'acqua in questo modo. Questo ti darà un quadrato 2 × 2 di fonti d'acqua.

  __________ | Wo || oW || || || | W = fonte d'acqua posizionata da teo = fonte d'acqua generata dalla meccanica dell'acqua  

Ora, raccogli semplicemente qualsiasi blocco fonte (si riempirà) e scaricalo diagonalmente dal blocco più esterno.

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

Ripeti finché non raggiungi un bordo. Il blocco sorgente che prendi non ha importanza, sono tutti infiniti (come in, si riempiranno istantaneamente) a questo punto.

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

Come puoi vedere, per riempire un quadrato n lungo, hai bisogno di n bucket load (in realtà, solo 2 , poiché dopo di ciò, puoi riempire nuovamente dalla piscina).

Per riempire l'intero rettangolo, scarica un secchio ogni due righe su un lato. Il blocco limite deve essere sempre riempito.

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

un n × m rettangolo a blocchi, hai bisogno di n + ceil ((m - n) / 2) sorgenti d'acqua, dove m è la più lunga lato. Ancora una volta, solo 2 se parli di risorse, perché dopo di ciò, stai attingendo da un pool infinito.

Ecco un video di un ragazzo che usa questa tecnica su un quadrato :

(Notare che per qualche motivo si ricarica sempre dai blocchi sorgente fissi, ma come notato sopra, qualsiasi blocco sorgente andrà bene. )

Questa è una risposta fantastica e completa!
Ora fai lo stesso con Lava! ;-)
Puoi effettivamente migliorare su questo. Nella tua ultima riga: `ooooWWWW` può essere` ooooWoWW` (hai solo bisogno di una fonte d'acqua ogni due blocchi, poiché le lacune saranno colmate).
Se hai bisogno di farlo lontano da una grande fonte d'acqua, porta due secchi d'acqua e fai quanto sopra con un quadrato 2x2. Questo fornirà quindi blocchi d'acqua infiniti da utilizzare per riempire i laghi. Se metti blocchi di sporcizia a 1 livello di profondità ma sotto c'è un vuoto, distruggere lo sporco dopo aver creato il lago ti dà acqua profonda.
@lunboks - ovviamente!
aib
2013-02-13 06:40:45 UTC
view on stackexchange narkive permalink

Questo potrebbe essere leggermente più semplice: puoi anche riempire due lati adiacenti con blocchi sorgente:

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

... senza dover entrare in piscina e calpestare l'acqua. Puoi farlo attraversando solo due lati. Può essere efficiente quanto l'eccellente risposta di @ lunboks:

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

... e ha l'ulteriore vantaggio che se posizioni il blocco d'angolo (1) per ultimo, puoi guardare il tutto gira in un unico movimento fluido! :)



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...