Supponiamo che questa griglia di spazi X
rappresenti 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 X
di 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 F
fosse 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 F
e 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 F
ha riempito ciò che può con l'acqua ~
come descritto sopra. Lasciare la F
riga 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 XXXX
dovrebbe 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