Voir le trou n ° 1 si vous êtes confus.
Que fait chaque enfant après avoir récupéré des seaux de bonbons à l'Halloween?
Triez-le par type et taille, bien sûr 1 !
Le défi
Étant donné un sac de bonbons vidé de différentes formes et tailles, triez les bonbons de gauche à droite en fonction de:
- Premièrement: la quantité de bonbons (donc 5 d'un seront plus que 4 d'un autre)
- Deuxième (s'il y a des liens après le premier): Si le montant est le même, le bonbon avec plus de zone interne (basé sur le nombre de caractères) aura un rang plus élevé.
Si après le deuxième tri, il y a toujours égalité, vous pouvez choisir soit d'être le premier.
Contribution
Vous recevrez le bonbon via stdin; éparpillés. Voir les exemples ci-dessous.
Production
Sortez les bonbons commandés dans le bon ordre. Remarque, les bonbons doivent toujours être placés dans des colonnes très soignées pour apaiser votre poisson OCD 2 . Les bonbons du même type doivent être placés directement les uns sous les autres. Voir les exemples ci-dessous.
Qu'entendez-vous par "zone intérieure"?
La zone intérieure d'un bonbon est mesurée par le nombre total de caractères composant le bonbon dans son ensemble.
Tout espace à l'intérieur d'une "bordure" est considéré comme faisant partie de la zone du bonbon.
Une bordure est une boucle de caractères connectés, chaque diagonale de caractère ou à côté de son voisin.
Par exemple,
+--------+
| |
| |
| |
| |
+--------+
a plus de surface que
XXXXXXXX
XXXXXXXX
XXXXXXXX
XXXXXXXX
même s'il a moins de caractères dans l'ensemble.
Exemples
contribution:
_ \| |/ _
_ 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\|+
-/ \-
Deviendrait
_ \| |/ -\ /- 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 deuxième exemple:
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
Solution:
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
Notez que les colonnes ont 1 caractère d'espacement entre elles et sont alignées horizontalement en haut. Notez également que chaque bonbon est dans une colonne exacte, chaque bonbon avec 1 caractère d'espacement entre les deux.
Notation
Il s'agit de code-golf, donc le programme le plus court (en octets) gagne.
1 Que feriez-vous d'autre? Évidemment, vous voulez afficher votre puissance et votre puissance impressionnantes dans la quantité de bonbons que vous avez collectés, non?
2 Je sais à quoi tu penses! Un poisson doit regarder à travers un bol incurvé vos bonbons, donc il serait de toute façon déformé! Eh bien, mes poissons vivaient (avant de mourir) dans un aquarium rectangulaire .
Réponses:
Ruby, 928 caractères
Ouf, celui-ci était amusant!
Vous pouvez donner l'entrée sur STDIN, ou vous pouvez passer un fichier d'entrée comme argument (comme
ruby organize.rb candy.txt
) et il traitera le fichier comme STDIN automatiquement.Tous les points-virgules peuvent être remplacés par des retours à la ligne; Je viens de coller quelques lignes ensemble pour réduire l'espace vertical.
Non golfé (2367 caractères):
la source