Siehe Loch 1, wenn Sie verwirrt sind.
Was macht jedes Kind, nachdem es über Halloween Eimer mit Süßigkeiten gesammelt hat?
Sortieren Sie es nach Typ und Größe, natürlich 1 !
Die Herausforderung
Sortieren Sie die Bonbons in einer entleerten Tüte mit Bonbons in verschiedenen Formen und Größen von links nach rechts nach:
- Erstens: Die Menge an Süßigkeiten (also bleiben 5 von einer übrig als 4 von einer anderen)
- Zweitens (wenn nach dem ersten ein Gleichstand besteht): Wenn der Betrag gleich ist, wird die Süßigkeit mit mehr internem Bereich (basierend auf der Anzahl der Zeichen) höher eingestuft.
Wenn es nach der zweiten Sortierung immer noch ein Unentschieden gibt, können Sie wählen, ob Sie der Erste sein möchten.
Eingang
Sie werden die Süßigkeit durch stdin gegeben; verstreut herum. Siehe Beispiele unten.
Ausgabe
Gib die bestellte Süßigkeit in der richtigen Reihenfolge aus. Beachten Sie, dass Süßigkeiten immer in sehr ordentlichen Spalten platziert werden sollten, um Ihren Zwangsstörungen zu begegnen. 2 . Die Süßigkeiten des gleichen Typs sollten direkt untereinander gelegt werden. Siehe Beispiele unten.
Was meinen Sie mit "Innenraum"?
Die Innenfläche eines Bonbonstücks wird anhand der Gesamtzahl der Zeichen gemessen, aus denen das Bonbon als Ganzes besteht.
Jedes Leerzeichen innerhalb einer "Grenze" wird als Teil des Bereichs der Süßigkeit betrachtet.
Ein Rand ist eine beliebige zusammenhängende Zeichenschleife, die diagonal oder neben dem Nachbarn verläuft.
Beispielsweise,
+--------+
| |
| |
| |
| |
+--------+
hat mehr Fläche als
XXXXXXXX
XXXXXXXX
XXXXXXXX
XXXXXXXX
obwohl es insgesamt weniger Zeichen hat.
Beispiele
Eingang:
_ \| |/ _
_ 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\|+
-/ \-
Würde werden
_ \| |/ -\ /- 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
|
|
|
|
|
+
Ein zweites Beispiel:
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
Lösung:
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
Beachten Sie, dass die Spalten 1 Zeichen Abstand voneinander haben und oben horizontal ausgerichtet sind. Beachten Sie auch, dass sich jede Süßigkeit in einer exakten Spalte befindet, wobei jede Süßigkeit 1 Zeichen Abstand dazwischen aufweist.
Wertung
Das ist Code-Golf, also gewinnt das kürzeste Programm (in Bytes).
1 Was würdest du sonst noch tun? Offensichtlich möchten Sie Ihre unglaubliche Macht und Stärke in der Menge an Süßigkeiten zeigen, die Sie gesammelt haben, richtig?
2 Ich weiß was du denkst! Ein Fisch muss durch eine geschwungene Schüssel auf Ihre Süßigkeiten schauen , daher würde er sowieso verzerrt sein! Nun, meine Fische lebten (bevor sie starben) in einem rechteckigen Aquarium.
Antworten:
Ruby, 928 Zeichen
Puh, das hat Spaß gemacht!
Sie können die Eingabe auf STDIN geben, oder Sie können eine Eingabedatei als Argument (wie
ruby organize.rb candy.txt
) übergeben, und es wird die Datei automatisch als STDIN behandeln.Alle Semikolons können durch Zeilenumbrüche ersetzt werden. Ich habe nur einige Linien zusammengeklebt, um den vertikalen Abstand zu verringern.
Ungolfed (2367 Zeichen):
quelle