Vea el hoyo # 1 si está confundido.
¿Qué hace cada niño después de recolectar cubos de dulces durante Halloween?
¡Ordénelo por tipo y tamaño, por supuesto 1 !
El reto
Dada una bolsa de dulces desechada de diferentes formas y tamaños, clasifique los dulces de izquierda a derecha en función de:
- Primero: la cantidad de dulces (entonces quedan 5 de uno más que 4 de otro)
- Segundo (si hay algún empate después del primero): si la cantidad es la misma, el dulce con más área interna (según el número de caracteres) tendrá una clasificación más alta.
Si después del segundo orden todavía hay un empate, entonces puedes elegir ser primero.
Entrada
Se le dará el dulce a través de stdin; esparcidos por Ver ejemplos a continuación.
Salida
Salida de los dulces ordenados en el orden correcto. Tenga en cuenta que los dulces siempre deben colocarse en columnas muy ordenadas para apaciguar a su pez OCD 2 . Los dulces del mismo tipo deben colocarse directamente uno debajo del otro. Ver ejemplos a continuación.
¿Qué quieres decir con "área interior"?
El área interior de un dulce se mide por el total de caracteres que componen el dulce en su conjunto.
Cualquier espacio en blanco dentro de un "borde" se considera parte del área del dulce.
Un borde es cualquier bucle de caracteres conectado, cada carácter diagonal o al lado de su vecino.
Por ejemplo,
+--------+
| |
| |
| |
| |
+--------+
tiene más área que
XXXXXXXX
XXXXXXXX
XXXXXXXX
XXXXXXXX
aunque tiene menos caracteres en general.
Ejemplos
entrada:
_ \| |/ _
_ 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\|+
-/ \-
Se convertiría
_ \| |/ -\ /- 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 segundo ejemplo:
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
Solución:
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
Tenga en cuenta que las columnas tienen 1 carácter de espacio entre ellas y están alineadas horizontalmente en la parte superior. También tenga en cuenta que cada dulce está en una columna exacta, cada dulce con 1 carácter de espacio entre ellos.
Puntuación
Este es el código de golf, por lo que gana el programa más corto (en bytes).
1 ¿Qué más harías? Obviamente, quieres mostrar tu increíble poder y poder en la cantidad de dulces que recolectaste, ¿verdad?
2 ¡Sé lo que estás pensando! Un pez tiene que mirar a través de un tazón curvo hacia su dulce, por lo que, de todos modos, ¡se distorsionará! Bueno, mi pez vivía (antes de morir) en un acuario rectangular .
Respuestas:
Rubí, 928 caracteres.
¡Vaya, este fue divertido!
Puede dar la entrada en STDIN, o puede pasar un archivo de entrada como argumento (como
ruby organize.rb candy.txt
) y tratará el archivo como STDIN automáticamente.Todos los puntos y comas se pueden reemplazar con líneas nuevas; Acabo de pegar algunas líneas para reducir el espacio vertical.
Sin golf (2367 caracteres):
fuente