To jest Hole-1 z jesiennego turnieju APL CodeGolf . Jestem oryginalnym autorem problemu i dlatego mogę go ponownie opublikować tutaj.
Na podstawie listy liczb utwórz poziomy wykres słupkowy #
znaków, określający liczbę liczb pasujących do każdej z dziesięciu grup o jednakowej wielkości. Na przykład, jeśli dane mieszczą się w zakresie od 0-100, zakresy będą wynosić 0–9,9, 10–19,9,…, 90–100. (Formalnie, [0,10), [10,20),…, [90,100].). Możesz założyć, że będą co najmniej dwie liczby i że nie wszystkie będą takie same.
Przykłady:
[1,0,0,0,0,0,0,0,0,0]
daje:
#########
#
[0,1,2,3,4,5,6,7,8,9]
daje:
#
#
#
#
#
#
#
#
#
#
[0,1,2,3,4,5,6,7,8,9,10]
daje:
#
#
#
#
#
#
#
#
#
##
[0,1,2,3,4,5,6,7,8,9,10,11]
daje:
##
#
#
#
#
#
#
#
#
##
[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]
daje:
###
#######
###########
###############
#########
###################
###############
###########
#######
###
[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]
daje:
#
####
#########
############
######
#########################
###########
#
[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]
daje:
#############
######################
##########################
#########################
#########################
#
########
################
########################
##########################
[0.9,1]
(i nie[0.9,1)
)?[0,1)
zawiera tylko,0
podczas gdy dolny rząd[9,10]
zawiera zarówno9
i10
.Odpowiedzi:
Python 2 , 96 bajtów
Wypróbuj online!
źródło
Python 2 ,
10795 bajtówWypróbuj online!
źródło
*.1
nie działa zamiast w/10.
ostatnim przypadku testowym. TBH Nie wiem, dlaczego to nie działa.R ,
7781 bajtów+4 bajty, aby naprawić niektóre przypadki testowe
Wypróbuj online!
Link jest wersją kodu, która pobiera dane oddzielone przecinkami; ta wersja wymaga separacji spacji.
Odczytuje ze standardowego, drukuje na standardowe.
R jest statystycznym językiem programowania, który dokłada wszelkich starań, aby zapewniać wysokiej jakości wyniki, co czasem jest frustrujące:
hist
kojarzy dane wejściowe do histogramubreaks
jako drugiego argumentu. Zwykle można oczekiwać, że można określić, że liczba przerw ma wynosić 10. Rzeczywiście, dzieje się tak:(podkreślenie dodane).
Jednak następne zdanie mówi:
Spojrzałem więc na dokumentację
pretty
i to po prostu nie działa w naszej sytuacji, ponieważ w ten sposób wybiera punkty przerwania:Co po prostu nie da rady.
seq(min(x),max(x),,11)
Określa więc 11 równomiernie rozmieszczonych punktów jakobreaks
,hist(x,breaks,r=F)$c
podaje liczby,r=F
zapewnia, że pojemniki są przedziałami otwartymi w prawo, afor
pętla zajmuje się resztą.źródło
C (gcc) , 241 bajtów
Wypróbuj online!
źródło
k
jako globalny, (+ 1 bajt), ale jest on inicjowany na 0, więc oszczędzasz 3 bajtyk=0
.double
sięfloat
ilf
dof
, Zapisz kolejne 2 bajtów. (przynajmniej działa na TIO)float
może działać, nie użyłem go, ponieważ nie jest to „standardowy” typ zmiennoprzecinkowy w C i zmniejsza precyzję, więc nie jestem pewien, czy jest to dozwolone ...Mathematica, 152 bajty
Wypróbuj online!
źródło
Range[0,9]
kiedy mówięRange[0,10]
bez powodu. Ale tak naprawdę zawodzi dlaRange[0,10]
: TIO .<=
na obu końcach, co jest poprawne na ostatnim segmencie, ale nie na 9 pozostałych.JavaScript (ES6), 99 bajtów
Edytuj 2 bajty, oszczędzaj dzięki @JustinMariner
Funkcja zwracająca tablicę ciągów
Mniej golfa
Test
źródło
i
do nawiasów tablicowych, po których następuje przecinek, umożliwiając usunięcie nawiasów wokół korpusu funkcji mapy: Wypróbuj online!i
i użyjeszMath.min
ponownie, używając aliasu: Wypróbuj online!Python 2 ,
126121 bajtówWypróbuj online!
źródło
Galaretka , 21 bajtów
Łącze monadyczne zwraca listę ciągów.
Wypróbuj online!
źródło
ÇŒṘ
lubÇY
w stopce w celu wizualizacji wyniku. Również zamiast pełnego programu można powiedzieć, że przesłanie jest linkiem monadycznym, który zwraca zamiast drukować, dzięki czemu jest automatycznie poprawny.Pyth ,
3231 bajtówWypróbuj tutaj! lub Zweryfikuj wszystkie przypadki testowe. (przy użyciu ładnego wydruku
j
)Jak to działa
Jest to pełny program, który pobiera dane wejściowe ze STDIN. Dotyczy to wersji 32-bajtowej. Niedługo to zaktualizuję.
źródło
Węgiel drzewny , 31 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wprowadzanie list o zmiennej długości wydaje się trochę niewygodne w Charcoal, więc musiałem zawinąć listę w tablicę zawierającą ciąg znaków. Wyjaśnienie:
źródło
Fortran 2003, 263 bajty
Napisałem to na GNU gfortran 5.4.0 i skompilowałem bez żadnych dodatkowych flag.
Odczytuje ze STDIN, po jednej wartości na raz, i drukuje do STDOUT.
Oto jest:
Niegolfowane wyjaśnienie: (Nie wiem, czy „golf” można zastosować do fortranu, ale tak czy inaczej: P)
Ciekawostka: stworzyłem podobny kod zaledwie wczoraj, aby przetestować moją implementację generatora liczb losowych Weibull, więc potrzebowałem tylko niewielkiej adaptacji :)
źródło
Perl 5 , 85 + 1 (
-a
) = 86 bajtówWypróbuj online!
źródło
Perl 5, 84 + 19 (-MList :: Util = min, max) bajty
Wypróbuj online
źródło
Perl 5, 102 bajtów
Wypróbuj online .
Nie golfowany:
źródło
Java (OpenJDK 8) ,
246221209207206163162161157 bajtówWypróbuj online!
źródło
q / kdb +, 52 bajty
Rozwiązanie:
Wypróbuj online! (Uwaga: łącze TIO jest 44-bajtowym portem K (oK) tego rozwiązania, ponieważ nie ma TIO dla q / kdb +).
Przykłady:
Wyjaśnienie:
Większość kodu jest używana do tworzenia segmentów, do których
bin
segmenty są wprowadzane.źródło
Galaretka , 19 bajtów
Wypróbuj online!
Jest to oparte na mojej odpowiedzi APL na oryginalny problem, którą opublikuję po zakończeniu konkursu.
W jaki sposób? (Nie jestem dobry w wyjaśnianiu rzeczy)
źródło