Sortuj podręczniki
Szkoła wkrótce się rozpoczyna (jeśli jeszcze tego nie zrobiła), więc czas uporządkować nasze podręczniki. Musisz posortować książki w kolejności alfabetycznej, ale zajmuje to zbyt dużo czasu, więc zdecydujesz się napisać program, który to zrobi.
Przykłady
Wkład:
_
| | _
|F| | |
|o|_|P|
|o|B|P|
| |a|C|
| |r|G|
|_|_|_|
Wydajność:
_
| |_
|F| |
_|o|P|
|B|o|P|
|a| |C|
|r| |G|
|_|_|_|
Wkład
Dane wejściowe będą stanowić zestaw książek, które należy uporządkować alfabetycznie. Będzie ona zawierać wyłącznie: |
, _
, , i
A-Za-z
. Tytuły książek są czytane pionowo, od góry do dołu.
Możesz założyć, że wejście jest wypełnione białymi spacjami, aby pasowało do prostokąta. Jeśli zdecydujesz się na uzupełnienie wpisu spacjami, podaj to w swojej odpowiedzi.
Bardzo maksymalna wysokość książki, którą Twój program będzie musiał obsłużyć, wynosi 5120 linii wysokości bezbłędnie.
Książki będą zawsze miały grubość 1 i zawsze będą zawierać co najmniej jedną książkę na wejściu
Wydajność
Wyjściem musi być ten sam zestaw książek uporządkowanych alfabetycznie. Wysokość książek musi pozostać taka sama, a tytuł musi mieć takie same odstępy od góry po ponownym ułożeniu.
Książki należy sortować alfabetycznie. Jeśli twój język obsługuje funkcję sortowania, możesz jej użyć. W przeciwnym razie możesz użyć sortowania alfabetycznego, jak opisano tutaj .
Przykłady tytułów książek
_
| |
| |
|F|
|o|
|o|
| |
| |
|B|
|a|
|r|
| |
| |
|_|
Ten tytuł książki to:
"Foo Bar"
Tytuły książek będą zawierać tylko litery i spacje.
Końcowe białe znaki są dozwolone
Zwycięski
To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach.
Odpowiedzi:
CJam, 60 bajtów
Próbowałem przenieść moją odpowiedź w języku Python, która jest podobna do podejścia @ RetoKoradi .
Wypróbuj online . Wejście powinno być wypełnione spacjami, aby utworzyć prostokąt.
źródło
Python 3, 231 bajtów
Szybki hack. Zapakuj książki, sortuj, rezip, dbając o kolumny
|
czasu, w którym jesteśmy.Wprowadź ciąg wieloliniowy, wypełniony końcowymi spacjami do prostokąta. Dane wyjściowe mają o jedną dodatkową końcową spację w każdej linii, niż to konieczne.
Bez golfa
źródło
Rubin (
209204200198 bajtów)transpose
Funkcji w tym roztworze wymaga, aby wszystkie przewody mają tę samą długość, a więc potrzebuje wejściowy wyściełane spacji.Wyjaśnienie
źródło
ruby
wersja jest wymagana? W wersji 2.1.2 dla przykładowego wkładu z pytania pojawia się komunikat „transpose”: rozmiar elementu różni się (6 powinno wynosić 2) (IndexError) ”.gsub(?|,' ')
→tr(?|,' ')
.Python 2 - 399 bajtów
Oczekuje, że dane wejściowe nie będą miały końca nowej linii.
źródło
CJam,
756665 bajtówOczekuje, że dane wejściowe wypełnione spacjami tworzą prostokąt.
Wypróbuj online
Dzięki @ Sp3000 i @Dennis za sugestie dotyczące przycinania napisów na czacie, a także za wskazanie mi, że
$
operator może wziąć blok jako argument.Nadal nie jestem do końca zadowolony z drugiej pętli. Ale po wypróbowaniu kilku innych opcji bez większego sukcesu jestem zmęczony.
Wyjaśnienie:
źródło
Scala
359341 bajtówoczekuje, że wszystkie linie będą tej samej długości (tj. wypełnione spacjami)
nieposkromiony i skomentował:
źródło