Wprowadzenie
To jest dziennik o długości 5:
#####
Chcę ułożyć kilka takich dzienników jeden na drugim. Jak to robię, wsuwam nowy dziennik na najwyższy z prawej strony i przestaję ślizgać się, gdy jego lewy lub prawy koniec są wyrównane (nie pytaj dlaczego). Jeśli nowy dziennik jest dłuższy, przesuwa się do lewego końca najwyższego dziennika:
######## <-
#####
Jeśli jest krótszy, przesuwa się tylko do momentu wyrównania jego prawego końca:
###### <-
########
#####
Gdy wsuwam kolejne kłody na stos, ich pozycje są określane przez bieżący najwyższy dziennik:
##
######
###
####
##
######
########
#####
Wygląda to fizycznie niemożliwe, ale udawajmy, że działa.
Zadanie
Twój wkład będzie niepustą listą liczb całkowitych dodatnich, reprezentujących długości moich logów. Najbardziej wysunięta na lewo liczba to pierwszy dziennik, który wkładam na stos, więc kończy się na dole. W powyższym przykładzie dane wejściowe to [5,8,6,2,4,3,6,2]
. Twój wynik powinien wynosić, dla każdej kolumny wynikowego stosu, liczbę kłód przecinających tę kolumnę. W powyższym przykładzie poprawne wyjście to[2,2,3,3,3,2,4,6,3,3,1,2,2]
.
Zasady i punktacja
Dane wejściowe i wyjściowe mogą być w dowolnym rozsądnym formacie. Dane wyjściowe mogą zawierać tylko dodatnie liczby całkowite, tzn. Nie mogą mieć wiodących ani końcowych 0
s. Obowiązują normalne zasady gry w golfa: możesz napisać pełny program lub funkcję, wygrywa najmniej bajtów, a standardowe luki są zabronione.
Przypadki testowe
[1] -> [1]
[4] -> [1,1,1,1]
[3,2] -> [1,2,2]
[2,3] -> [2,2,1]
[2,2,2] -> [3,3]
[2,3,2] -> [2,3,2]
[3,2,3] -> [1,3,3,1]
[1,3,2,2,1,3,1] -> [2,3,5,1,2]
[4,3,4,2,4,3,4,2] -> [1,3,3,5,5,3,4,2]
[5,8,6,2,4,3,6,2] -> [2,2,3,3,3,2,4,6,3,3,1,2,2]
[5,10,15,1,1,1,1,1,2] -> [3,3,3,3,3,2,2,2,2,2,1,1,1,1,7,1]
[13,12,2,10,14,12] -> [1,2,2,2,2,2,2,2,2,2,2,5,5,3,3,3,3,3,3,3,3,2,2,2,2]
[12,14,3,6,13,1,1] -> [2,2,2,2,2,2,2,2,2,2,2,5,4,4,2,2,2,1,1,1,1,1,1,3]
[7,5,12,5,1,10,14,5] -> [1,1,3,3,3,3,3,1,1,2,2,2,2,5,2,2,2,2,2,2,2,2,3,2,2,2,2]
[14,5,1,3,12,6,2,2,1,7,9,15] -> [1,1,1,1,1,1,1,1,1,2,2,2,2,5,2,2,1,1,1,2,2,2,2,4,8,3,3,3,3,3,3,2,2,1,1,1,1,1,1]
Odpowiedzi:
Galaretka ,
1816 bajtów-2 bajty monitowane przez pomoc z odległości
Może istnieje szybszy sposób korzystania z matematyki niż z konstrukcji takiej jak ta?
Wypróbuj online! lub zobacz zestaw testowy .
W jaki sposób?
źródło
IN»0+\0;;"x@€0,1S
Galaretka ,
1913 bajtówWypróbuj online!
Zaoszczędź 2 bajty dzięki @Jonathan Allan.
Wyjaśnienie
źródło
Python 3 ,
114109 bajtówEdycja: Zapisano 5 bajtów dzięki @ Mr.Xcoder
Wypróbuj online!
źródło
Łuska , 16 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Perl 5 , 64 + 1 (
-a
) = 65 bajtówWypróbuj online!
źródło
Mathematica,
76605857 bajtówWypróbuj na Wolfram Sandbox
źródło
Kotlin 1.1,
113103 bajtówUpiększony
Test
źródło