Einführung
Dies ist ein Protokoll der Länge 5:
#####
Ich möchte einen Haufen dieser Protokolle übereinander stapeln. So schiebe ich einen neuen Baumstamm von rechts nach oben und höre auf zu schieben, wenn die linken oder rechten Enden ausgerichtet sind (fragen Sie nicht warum). Wenn das neue Protokoll länger ist, wird es bis zum linken Ende des obersten Protokolls verschoben:
######## <-
#####
Wenn es kürzer ist, wird es nur so lange verschoben, bis die rechten Enden ausgerichtet sind:
###### <-
########
#####
Wenn ich mehr Stämme in den Stapel schiebe, werden ihre Positionen durch das aktuell oberste Protokoll bestimmt:
##
######
###
####
##
######
########
#####
Das sieht physikalisch unmöglich aus, aber tun wir mal so, als ob es funktioniert.
Die Aufgabe
Ihre Eingabe muss eine nicht leere Liste positiver Ganzzahlen sein, die die Länge meiner Protokolle darstellt. Die am weitesten links stehende Zahl ist das erste Holz, das ich auf den Stapel gelegt habe, sodass es unten landet. Im obigen Beispiel wäre die Eingabe [5,8,6,2,4,3,6,2]
. Ihre Ausgabe ist für jede Spalte des resultierenden Stapels die Anzahl der Protokolle, die diese Spalte überschreiten. Im obigen Beispiel wäre die richtige Ausgabe [2,2,3,3,3,2,4,6,3,3,1,2,2]
.
Regeln und Wertung
Eingabe und Ausgabe können in jedem vernünftigen Format erfolgen. Die Ausgabe kann nur positive Ganzzahlen enthalten, dh sie darf keine führenden oder nachfolgenden 0
s enthalten. Es gelten die üblichen Code-Golf-Regeln: Sie können ein vollständiges Programm oder eine Funktion schreiben, die niedrigste Byte-Anzahl gewinnt und Standard-Lücken sind verboten.
Testfälle
[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]
Antworten:
Jelly ,
1816 Bytes-2 Bytes durch Hilfe von Meilen aufgefordert
Vielleicht gibt es einen schnelleren Weg, Mathematik zu verwenden, als solche Konstruktionen?
Probieren Sie es online! oder sehen Sie sich die Testsuite an .
Wie?
quelle
IN»0+\0;;"x@€0,1S
Jelly ,
1913 BytesProbieren Sie es online!
2 Bytes dank @Jonathan Allan gespeichert.
Erläuterung
quelle
Python 3 ,
114109 BytesBearbeiten: 5 Bytes dank @ Mr.Xcoder gespeichert
Probieren Sie es online!
quelle
Schale , 16 Bytes
Probieren Sie es online!
Erläuterung
quelle
Perl 5 , 64 + 1 (
-a
) = 65 BytesProbieren Sie es online!
quelle
Mathematica,
76605857 BytesProbieren Sie es auf Wolfram Sandbox
quelle
Kotlin 1.1,
113103 BytesVerschönert
Prüfung
quelle