Vedi Hole # 1 se sei confuso.
Cosa fa ogni bambino dopo aver raccolto secchi di caramelle durante Halloween?
Ordina per tipo e dimensione, ovviamente 1 !
La sfida
Dato un sacchetto di caramelle scaricato di varie forme e dimensioni, ordina le caramelle da sinistra a destra in base a:
- Primo: la quantità di caramelle (quindi 5 di una sarà lasciata più di 4 di un'altra)
- Secondo (se ci sono legami dopo il primo): se l'importo è lo stesso, le caramelle con più area interna (in base al numero di personaggi) si posizioneranno più in alto.
Se dopo il secondo ordinamento c'è ancora un pareggio, allora puoi scegliere di essere il primo.
Ingresso
Ti verranno date le caramelle attraverso lo stdin; sparsi. Vedi esempi di seguito.
Produzione
Invia le caramelle ordinate nell'ordine corretto. Nota, le caramelle dovrebbero sempre essere posizionate in colonne molto pulite per placare il tuo pesce OCD 2 . Le caramelle dello stesso tipo dovrebbero essere posizionate direttamente l'una sotto l'altra. Vedi esempi di seguito.
Cosa intendi per "area interna"?
L'area interna di un pezzo di caramella è misurata dai personaggi totali che compongono la caramella nel suo insieme.
Qualsiasi spazio bianco all'interno di un "bordo" è considerato parte dell'area delle caramelle.
Un bordo è un qualsiasi ciclo di caratteri collegato, ogni personaggio in diagonale o vicino al suo vicino.
Per esempio,
+--------+
| |
| |
| |
| |
+--------+
ha più area di
XXXXXXXX
XXXXXXXX
XXXXXXXX
XXXXXXXX
anche se nel complesso ha meno personaggi.
Esempi
ingresso:
_ \| |/ _
_ lllllll -*------------*- -\ /- lllllll
lllllll lllllllll | /\ /\ / | +|\ooooo/|+ lllllllll
lllllllll llll+llll | / \/ \/ | ||o o|| llll+llll
llll+llll lllllllll -*------------*- ||o o|| lllllllll
lllllllll lllllll /| |\ +|/ooooo\|+ lllllll
lllllll | -/ \- |
| | _ |
| -\ /- | lllllll |
| +|\ooooo/|+ | lllllllll |
| ||o o|| | llll+llll |
| ||o o|| + lllllllll rrr--rrr +
+ +|/ooooo\|+ lllllll rr||rr
-/ \- | | || |
| | || |
| | || |
| | || |
| \| |/ | || |
+ -*------------*- | || |
| /\ /\ / | | || |
-\ /- | / \/ \/ | | || |
+|\ooooo/|+ -*------------*- rr||rr
||o o|| /| |\ rrr--rrr
||o o||
+|/ooooo\|+
-/ \-
Potrebbe diventare
_ \| |/ -\ /- rrr--rrr
lllllll -*------------*- +|\ooooo/|+ rr||rr
lllllllll | /\ /\ / | ||o o|| | || |
llll+llll | / \/ \/ | ||o o|| | || |
lllllllll -*------------*- +|/ooooo\|+ | || |
lllllll /| |\ -/ \- | || |
| | || |
| \| |/ -\ /- | || |
| -*------------*- +|\ooooo/|+ | || |
| | /\ /\ / | ||o o|| | || |
| | / \/ \/ | ||o o|| rr||rr
+ -*------------*- +|/ooooo\|+ rrr--rrr
/| |\ -/ \-
_
lllllll \| |/ -\ /-
lllllllll -*------------*- +|\ooooo/|+
llll+llll | /\ /\ / | ||o o||
lllllllll | / \/ \/ | ||o o||
lllllll -*------------*- +|/ooooo\|+
| /| |\ -/ \-
|
|
|
|
+
_
lllllll
lllllllll
llll+llll
lllllllll
lllllll
|
|
|
|
|
+
_
lllllll
lllllllll
llll+llll
lllllllll
lllllll
|
|
|
|
|
+
Un secondo esempio:
qq \/
qq qq qq +-----+
qq qq qq + |
jjjjjjjj qq qq | |
jjjjjj \/ qq qq | |
jjjj +-----+ <---notice that the left side is not connected qq +-------+
jj jj + | <--> <-->
j j | |
jj <> jj | | <--> qq jjjjjjjj
jj jj +-------+ qq jjjjjj
jjjj qq qq jjjj
qq qq jj jj
j j
+---------------------------------------------------------+ jj <> jj
ooooo +---------------------------------------------------------+ jj jj
o yyyyyy jjjj
o ww - notice diagonal border, allowed
o ww jjjjjjjj
o yyyyyy ooooo ooooo jjjjjj
ooooo o yyyyyy o yyyyyy jjjj
o ww o ww jj jj
o ww o ww j j
o yyyyyy o yyyyyy jj <> jj
ooooo ooooo jj jj
jjjj
Soluzione:
qq ooooo jjjjjjjj <--> \/ +---------------------------------------------------------+
qq o yyyyyy jjjjjj +-----+ +---------------------------------------------------------+
o ww jjjj <--> + |
qq o ww jj jj | |
qq o yyyyyy j j <--> | |
ooooo jj <> jj +-------+
qq jj jj
qq ooooo jjjj \/
o yyyyyy +-----+
qq o ww jjjjjjjj + |
qq o ww jjjjjj | |
o yyyyyy jjjj | |
qq ooooo jj jj +-------+
qq j j
ooooo jj <> jj
qq o yyyyyy jj jj
qq o ww jjjj
o ww
qq o yyyyyy jjjjjjjj
qq ooooo jjjjjj
jjjj
qq jj jj
qq j j
jj <> jj
qq jj jj
qq jjjj
Nota che le colonne hanno 1 carattere di spaziatura tra loro e sono allineate orizzontalmente in alto. Si noti inoltre che ogni caramella è in colonne esatte, ogni caramella con 1 carattere di spaziatura tra.
punteggio
Questo è code-golf, quindi vince il programma più breve (in byte).
1 Cos'altro faresti? Ovviamente vuoi mostrare la tua straordinaria potenza e potenza nella quantità di caramelle che hai raccolto, giusto?
2 So cosa stai pensando! Un pesce deve guardare attraverso una ciotola curva le tue caramelle, quindi sarebbe comunque distorto! Bene, il mio pesce viveva (prima che morisse) in un acquario rettangolare .