Dies ist Hole-1 von Herbst Turnier von APL CodeGolf . Ich bin der ursprüngliche Autor des Problems dort und darf es daher hier erneut posten.
Erstellen Sie anhand einer Liste von Zahlen ein horizontales Balkendiagramm mit #
Zeichen für die Anzahl der Zahlen, die in jede der zehn gleich großen Gruppen passen. Wenn die Daten beispielsweise im Bereich von 0 bis 100 liegen, sind die Bereiche 0 bis 9,9, 10 bis 19,9, ..., 90 bis 100. (Formal [0,10], [10,20],…, [90,100].) Sie können davon ausgehen, dass es mindestens zwei Zahlen gibt und dass nicht alle Zahlen gleich sind.
Beispiele:
[1,0,0,0,0,0,0,0,0,0]
gibt:
#########
#
[0,1,2,3,4,5,6,7,8,9]
gibt:
#
#
#
#
#
#
#
#
#
#
[0,1,2,3,4,5,6,7,8,9,10]
gibt:
#
#
#
#
#
#
#
#
#
##
[0,1,2,3,4,5,6,7,8,9,10,11]
gibt:
##
#
#
#
#
#
#
#
#
##
[0,-0.5,-1,-1.5,-2,-2.5,-3,-3.5,-4,-4.5,0.5,0,-0.5,-1,-1.5,-2,-2.5,-3,-3.5,-4,1,0.5,0,-0.5,-1,-1.5,-2,-2.5,-3,-3.5,1.5,1,0.5,0,-0.5,-1,-1.5,-2,-2.5,-3,2,1.5,1,0.5,0,-0.5,-1,-1.5,-2,-2.5,2.5,2,1.5,1,0.5,0,-0.5,-1,-1.5,-2,3,2.5,2,1.5,1,0.5,0,-0.5,-1,-1.5,3.5,3,2.5,2,1.5,1,0.5,0,-0.5,-1,4,3.5,3,2.5,2,1.5,1,0.5,0,-0.5,4.5,4,3.5,3,2.5,2,1.5,1,0.5,0]
gibt:
###
#######
###########
###############
#########
###################
###############
###########
#######
###
[9014,9082,9077,9068,8866,8710,9049,8364,8867,9015,9064,9023,9024,8804,8805,8800,8744,8743,8714,9076,8593,8595,9075,9675,8968,8970,8711,8728,8834,8835,8745,8746,8869,8868,9073,9074,9042,9035,9033,9021,8854,9055,9017,9045,9038,9067,9066,8801,8802,9496,9488,9484,9492,9532,9472,9500,9508,9524,9516,9474,8739,9079,8900,8592,8594,9053,9109,9054,9059]
gibt:
#
####
#########
############
######
#########################
###########
#
[0,8,10,13,32,12,6,7,27,9,37,39,95,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,1,2,175,46,48,49,50,51,52,53,54,55,56,57,3,165,36,163,162,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,4,5,253,183,127,193,194,195,199,200,202,203,204,205,206,207,208,210,211,212,213,217,218,219,221,254,227,236,240,242,245,123,125,168,192,196,197,198,201,209,214,216,220,223,224,225,226,228,229,230,231,232,233,234,235,237,238,239,241,91,47,92,60,61,62,45,43,247,215,63,126,42,40,124,59,44,33,243,244,246,248,34,35,30,38,180,64,249,250,251,94,252,96,182,58,191,161,41,93,31,160,167]
gibt:
#############
######################
##########################
#########################
#########################
#
########
################
########################
##########################
[0.9,1]
(und nicht[0.9,1)
)?[0,1)
enthält nur0
und die untere Reihe[9,10]
enthält beide9
und10
.Antworten:
Python 2 , 96 Bytes
Probieren Sie es online!
quelle
Python 2 ,
10795 BytesProbieren Sie es online!
quelle
*.1
dies nicht/10.
für den letzten Testfall funktioniert . TBH Ich weiß nicht warum es nicht funktioniert.R ,
7781 Bytes+4 Bytes, um einige Testfälle zu beheben
Probieren Sie es online!
Der Link verweist auf eine Version des Codes, für die durch Kommas getrennte Eingaben erforderlich sind. Diese Version ist durch Leerzeichen getrennt.
Liest von stdin, druckt auf stdout.
R ist eine statistische Programmiersprache, die ihr Bestes tut, um qualitativ hochwertige Ergebnisse zu erzielen, was manchmal frustrierend ist:
hist
fasst die Eingaben in ein Histogramm mit einbreaks
als zweites Argument . Normalerweise würde man erwarten, dass Sie angeben könnten, dass die Anzahl der Pausen 10 sein soll. In der Tat ist dies der Fall:(Betonung hinzugefügt).
Der nächste Satz sagt jedoch:
Also habe ich mir die Dokumentation von angeschaut
pretty
und es funktioniert einfach nicht für unsere Situation, weil es so Haltepunkte auswählt:Was einfach nicht geht.
Das
seq(min(x),max(x),,11)
gibt also 11 gleichmäßig verteilte Punkte anbreaks
,hist(x,breaks,r=F)$c
gibt die Zählwerte an,r=F
stellt sicher, dass die Bins rechts geöffnet sind, und diefor
Schleife kümmert sich um den Rest.quelle
C (gcc) , 241 Bytes
Probieren Sie es online!
quelle
k
als global machen, (+ 1Byte) aber es wird auf 0 initialisiert, spart also 3 Bytes abk=0
.double
zufloat
und wechseln , um weitere 2 Byteslf
zuf
sparen. (zumindest funktioniert das mit TIO)float
Vielleicht funktioniert es, ich habe es nicht verwendet, weil es nicht der "Standard" Gleitkomma-Typ in C ist und die Präzision verringert, also nicht sicher, ob dies erlaubt ist ...Mathematica, 152 Bytes
Probieren Sie es online!
quelle
Range[0,9]
während ichRange[0,10]
ohne Grund darüber spreche . Aber es scheitert tatsächlich anRange[0,10]
: TIO .<=
an beiden Enden verwendet, was für das letzte Segment richtig ist, aber nicht für die 9 anderen.JavaScript (ES6), 99 Byte
Bearbeite 2 Bytes und speichere den @JustinMariner
Eine Funktion, die ein Array von Zeichenfolgen zurückgibt
Weniger golfen
Prüfung
quelle
i
in die Array-Klammern, gefolgt von einem Komma, verschieben. Auf diese Weise können Sie die Klammern um den Hauptteil der Kartenfunktion entfernen: Probieren Sie es online aus!i
undMath.min
mit einem Alias erneut verwenden: Probieren Sie es online aus!Python 2 ,
126121 BytesProbieren Sie es online!
quelle
Gelee , 21 Bytes
Eine monadische Verknüpfung gibt eine Liste von Zeichenfolgen zurück.
Probieren Sie es online!
quelle
ÇŒṘ
oderÇY
in Ihrer Fußzeile hinzufügen , um das Ergebnis zu visualisieren. Anstelle des vollständigen Programms können Sie auch sagen, dass es sich bei Ihrer Übermittlung um einen monadischen Link handelt, der nicht gedruckt, sondern zurückgegeben wird, wodurch er automatisch gültig wird.Pyth ,
3231 BytesProbieren Sie es hier aus! oder Überprüfen Sie alle Testfälle.(mit hübschem Druck
j
)Wie das geht
Dies ist ein vollständiges Programm, das Eingaben von STDIN entgegennimmt. Dies ist für die 32-Byte-Version. Ich werde es bald aktualisieren.
quelle
Kohle , 31 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Die Eingabe von Listen mit variabler Länge scheint in Charcoal etwas umständlich zu sein, daher musste ich die Liste in ein Array mit einer Zeichenfolge einschließen. Erläuterung:
quelle
Fortran 2003, 263 Bytes
Ich habe es auf GNU gfortran 5.4.0 geschrieben und ohne zusätzliche Flags kompiliert.
Es liest jeweils einen Wert aus STDIN und druckt auf STDOUT.
Hier kommt's:
Ungolfed Erklärung: (Ich weiß nicht, ob "golfed" auf fortran angewendet werden kann, aber so oder so: P)
Witzige Tatsache: Ich habe erst gestern einen ähnlichen Code erstellt, um meine Implementierung eines Weibull-Zufallszahlengenerators zu testen. Daher war nur eine kleine Anpassung erforderlich :)
quelle
Perl 5 , 85 + 1 (
-a
) = 86 BytesProbieren Sie es online!
quelle
Perl 5, 84 + 19 (-MList :: Util = min, max) Bytes
Probieren Sie es online
quelle
Perl 5, 102 Bytes
Probieren Sie es online aus .
Ungolfed:
quelle
Java (OpenJDK 8) ,
246221209207206163162161157 BytesProbieren Sie es online!
quelle
q / kdb +, 52 Bytes
Lösung:
Probieren Sie es online! (Beachten Sie, dass die TIO-Verbindung ein 44-Byte- K ( OK) -Port dieser Lösung ist, da es für q / kdb + keine TIO gibt.)
Beispiele:
Erläuterung:
Der größte Teil des Codes wird zum Erstellen der Buckets verwendet, in die
bin
die Eingabe erfolgt.quelle
Jelly , 19 Bytes
Probieren Sie es online!
Dies basiert auf meiner APL-Antwort für das ursprüngliche Problem, die ich veröffentlichen werde, nachdem der Wettbewerb vorbei ist.
Wie? (Ich kann nicht gut Dinge erklären)
quelle