Supponiamo che questa griglia di spazi Xrappresenti la sezione trasversale di alcuni vassoi vuoti di cubetti di ghiaccio dalla forma strana :
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Le colonne senza Xdi quelle rappresentano buchi o lacune nei vassoi che non possono trattenere l'acqua, drenando in un lavandino a capacità infinita. L'acqua che cade dal bordo più a sinistra o più a destra della griglia entra anche in questo infinito lavandino.
Se dovessimo posizionare un rubinetto sopra i vassoi e lasciarli riempire d'acqua fino a quando il livello dell'acqua in tutti gli scomparti rimane stabile, gli scomparti esatti che si riempiono dipenderebbero esattamente da dove era posizionato il flusso d'acqua sopra i vassoi. (Assumi un flusso d'acqua sottile e costante senza schizzi.)
Ad esempio, se il nostro rubinetto Ffosse sopra la colonna della griglia a sinistra
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
l'acqua sarebbe caduta fino in cima X in quella colonna e si diffusa a sinistra ea destra, la metà sinistra si riversata nel lavandino sottostante e la metà destra riempito il compartimento 2 × 1. Una volta che il compartimento si riempie, la metà destra del flusso d'acqua non ha alcun posto dove fluire ma nel lavandino e il livello dell'acqua ovunque è sostanzialmente stabile.
Chiudendo il rubinetto, il vassoio ora appare così: (con ~acqua)
X X X
X~~X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Allo stesso modo, se posizioniamo il rubinetto in questo modo:
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Riempirà i due scomparti più a sinistra, ma il resto dell'acqua defluirà:
X X X
X~~X~X XX X XX X
XXXXXX XXXXXXXXXXXXX
Se posizioniamo il rubinetto in questo modo:
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
La metà sinistra del flusso scorrerà nel lavandino ma la metà destra riempirà i tre scomparti più a destra perché non c'è limite a quanto l'acqua può viaggiare orizzontalmente su una superficie piana:
X X~X
X X X XX~X~~XX~~~X
XXXXXX XXXXXXXXXXXXX
Posizionato in questo modo, tuttavia:
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Tutta l'acqua fuoriesce e nessun compartimento è pieno:
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Sfida
Scrivi un programma o una funzione che includa una griglia rettangolare di spazi, X"s" e uno F. La riga superiore conterrà sempre il Fe altrimenti contiene solo spazi. IlX 'in ogni colonna (se ce ne sono) si estenderà in una linea continua dalla base della griglia, cioè non ci saranno grotte o sporgenze.
Stampa o restituisci la griglia dopo che il rubinetto Fha riempito ciò che può con l'acqua ~come descritto sopra. Lasciare la Friga superiore fuori dall'output.
La griglia a parte la riga del rubinetto sarà almeno 1 × 1
F Xè l'input più piccolo che devi supportare.
L'input verrà visualizzato come un rettangolo di testo completo. Gli spazi iniziali e finali contano nell'input e nell'output. ad esempio l'ingresso
F X X XXXXdovrebbe comportare
X~~X XXXX(notare gli spazi iniziali e finali)
Avere una sola nuova riga finale nell'input o output va bene.
È possibile utilizzare qualsiasi quattro distinte ASCII stampabili caratteri al posto dello spazio,
X,F,~.
Vince il codice più breve in byte.
Grande esempio:
Ingresso:
F
X X
X X X
X XXX X X X X X
X X XXXXXXX X XXX XXXXXXX X X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX
Produzione:
X~~~~~~~~~~~~~X
X~~~~~~~~~~~~~X~X
X~~~~~~~~~~~~XXX~~~~~~~X~~~~X~X~~~~~~~~~~~X X
X~~~X~~~~~XXXXXXX~~~~~~X~~~~XXX~~~~~XXXXXXX X X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX
zip()<3