Ktoś pospiesznie układa prezenty świąteczne i jest to dość bałagan:
========================
| |
========================
=============
| |
| |
| |
| |
| |
| |
=============
=======
| |
| |
| |
=======
===================
| |
| |
| |
===================
=================
| |
| |
| |
| |
=================
=======
| |
| |
=======
Poważnie, w jaki sposób ta góra zapewnia równowagę. To prawdopodobnie młotek. Aby zapobiec zawaleniu się wieży z prezentami, musisz zmienić kolejność prezentów, aby ładnie się układały:
=======
| |
| |
=======
=======
| |
| |
| |
=======
=============
| |
| |
| |
| |
| |
| |
=============
=================
| |
| |
| |
| |
=================
===================
| |
| |
| |
===================
========================
| |
========================
Zasady
- Każdy prezent składa się z góry i dołu
=
znaków oraz jednego lub więcej środkowych rzędów, składających się z dwóch|
oddzielonych spacjami. Szerokość teraźniejszości jest taka sama we wszystkich rzędach. - Nie ma pustych linii.
- Kolejne prezenty będą się nakładać w co najmniej jednej kolumnie.
- Prezenty należy układać w stosy w kolejności malejącej szerokości. W przypadku remisu wyższy prezent powinien zejść poniżej prezentu bardziej płaskiego.
- Prezenty powinny być wyśrodkowane na teraźniejszości poniżej. Jeśli teraźniejszości nie można umieścić dokładnie na środku (ponieważ różnica szerokości jest nieparzysta), możesz wybrać dowolną pozycję, która jest o pół znaku poza środkiem.
- Możesz założyć lub nie, że dane wejściowe mają jedną końcową linię nowego wiersza, ale proszę podać swoje założenie.
- Twoje rozwiązanie nie musi działać dla pustych danych wejściowych, ale musi być w stanie obsłużyć pojedynczy prezent.
- Możesz napisać program lub funkcję, która pobiera dane wejściowe za pomocą argumentu STDIN lub funkcji i zwraca wynik lub drukuje go do STDOUT.
- To jest kod golfowy, więc wygrywa najkrótsza odpowiedź (w bajtach).
Japt , 18 bajtów
Wypróbuj online!
Używam wystarczająco innej strategii niż inne odpowiedzi Japt, że uważam, że jest wart własnej odpowiedzi. Pobiera dane wejściowe i wyjściowe jako tablicę wierszy
Wyjaśnienie:
Nie wiem dokładnie, dlaczego tak działa „sortowanie domyślne”, ale przetestowałem, że wyższe pole dwóch o tej samej szerokości znajduje się na dole, niezależnie od tego, co jest pierwsze na wejściu.
źródło
"=="
się'=²
zapisać bajt.Ruby, 164
Zgrabne wyzwanie! Nie mogłem zejść znacznie dalej.
Wyjaśnienie
Dane wejściowe
String
są podzielone na miejsce, wArray
którym każdy prezent jest elementem. Następnie tablica jest sortowana według liczby znaków potoku i sortowana ponownie według liczby znaków równości.Następnie usuwa wszystkie wiodące białe znaki i drukuje każdą linię osobno, wyśrodkowaną na szerokości największego prezentu.
Zachowuje się tak samo z końcowym znakiem nowej linii na wejściu lub bez niego.
Wersja do odczytu
źródło
05AB1E ,
2320 bajtów-3 bajty dzięki @ErikTheOutgolfer .
Wypróbuj online.
Wyjaśnienie:
Uwagi:
c
na wielkąC
.|
można usunąć, jeśli możemy przyjąć dane wejściowe jako listę linii ciągów.|
tak je usuwają.źródło
ðδÛ
może być użyty zamiastεðÛ}
tutaj,¶'=.ø
jest taki sam jak…=\n=
(\n
oznacza nowy wiersz),0'=.ø
jest taki sam jak…=0=
..ø
zamiast dosłownych ciągów 3-znakowych .. I dzięki zaðδÛ
. Właściwie nigdyδ
wcześniej nie używany i nie miałem pojęcia, że tak to działa.Attache , 91 bajtów
Wypróbuj online!
Nie golfił
źródło
Perl 5
-n0
, 123 bajtówWypróbuj online!
źródło
Python 2 ,
221196 bajtówWypróbuj online!
Oczekiwany jest ciąg cytowany bez wprowadzania nowych wierszy jako danych wejściowych.
Nie wspaniale, ale to najlepsze, co mogę zrobić.
źródło
Japt ,
232019 bajtówPodobne podejście do rozwiązania Kevina . Pierwszy bajt można usunąć, jeśli weźmiemy dane wejściowe jako tablicę wierszy.
Spróbuj
źródło
Jestem nowicjuszem w dziedzinie golfa i nie jestem ekspertem od javascript, ale wyzwanie jest interesujące i przyjemne. Chciałbym zobaczyć, jakich sztuczek użyłby prawdziwy ekspert od js.
Założenia
Kod
Wejście jest w
g[]
. Wyjście wm[]
.Kod działa przez
budowanie tablicy obiektów, z których każdy reprezentuje jedno pudełko, z dwoma elementami: K, kluczem sortowania jest (szerokość x 100 + wysokość) i O, tablica (przyciętych) ciągów tworzących pudełko. Podczas budowania tablicy kod zapamiętuje szerokość najszerszego pola.
Tablica obiektów skrzynek jest sortowana w kolejności według klucza K. W przypadku skrzynek o tej samej szerokości klucz zapewnia sortowanie według wysokości.
Po posortowaniu pól ciągi każdego pola są wypychane do tablicy wyjściowej z dodanymi spacjami wiodącymi, które ustawiają pole centralnie nad najszerszym.
Wypróbuj online!
źródło