Bei sportlichen Wettbewerben werden die Sieger häufig auf dem Podium präsentiert, wobei die Person mit dem ersten Platz auf dem höchsten Platz in der Mitte, die Person mit dem zweiten Platz auf der mittleren Höhe links und die Person mit dem dritten Platz auf dem niedrigsten und dem höchsten Platz steht auf der rechten Seite. Wir werden das hier mit einigen speziellen Verbesserungen nachbilden.
Die Podien sind unten dargestellt:
@---@
| @ |
@---@| | |
| @ || | |
| | || | |@---@
| | || | || @ |
Dies wird die Grundlage für diese Herausforderung bilden. Der nächste Schritt besteht darin, die Podien so breit zu machen, dass sie zu den darauf befindlichen Personen passen (druckbare ASCII-Zeichenfolgen). Wir möchten jedoch eine ästhetische Schönheit sicherstellen (da dies eine fantastische Fotomöglichkeit ist), daher muss jedes Podium dieselbe Breite haben und die Breite muss ungerade sein. Zusätzlich wollen die Leute (offensichtlich) in der Mitte des Podiums stehen, daher müssen die Saiten so gut wie möglich zentriert sein. (Sie können entweder nach links oder nach rechts ausrichten, und es muss nicht konsistent sein.) Die oben genannten Podien sind die Mindestgröße und gelten als 3
breit.
Wenn beispielsweise die Eingabe ["Tom", "Ann", "Sue"]
den ersten, zweiten bzw. dritten Platz darstellt, werden die folgenden Podien ausgegeben:
Tom
@---@
Ann | @ |
@---@| | |
| @ || | | Sue
| | || | |@---@
| | || | || @ |
Wenn dies jedoch der Anne
Fall ist Ann
, müssen wir zur nächsten Größe aufsteigen 5
und die Zeichenfolgen so gut wie möglich zentrieren. Hier werde ich so ausrichten, dass der "zusätzliche" Buchstabe von Anne
links von der Mitte ist, aber Sie können wählen, auf welche Seite ausgerichtet werden soll.
Tom
@-----@
Anne | @ |
@-----@| | |
| @ || | | Sue
| | || | |@-----@
| | || | || @ |
Lassen Sie uns für einige längere Namen gehen. Wie wäre es mit ["William", "Brad", "Eugene"]
:
William
@-------@
Brad | @ |
@-------@| | |
| @ || | | Eugene
| | || | |@-------@
| | || | || @ |
Hier sehen wir, dass Brad
es viel Leerzeichen Eugene
gibt und William
genau richtig passt.
Für einen längeren Testfall, wie wäre es mit ["A", "BC", "DEFGHIJKLMNOPQRSTUVWXYZ"]
:
A
@-----------------------@
BC | @ |
@-----------------------@| | |
| @ || | | DEFGHIJKLMNOPQRSTUVWXYZ
| | || | |@-----------------------@
| | || | || @ |
Schließlich haben wir den kleinstmöglichen Input, so etwas wie ["A", "B", "C"]
:
A
@---@
B | @ |
@---@| | |
| @ || | | C
| | || | |@---@
| | || | || @ |
- Die Ein- und Ausgabe kann auf jede bequeme Weise erfolgen .
- Die Eingabe ist garantiert nicht leer (dh Sie erhalten niemals
""
einen Namen). - Sie können es an STDOUT drucken oder als Funktionsergebnis zurückgeben.
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig.
- Beliebige Leerzeichen sind zulässig, sofern die Zeichen richtig ausgerichtet sind.
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.