Wkład
Lista słów oddzielonych dowolną liczbą spacji.
Wydajność
Poziomy wykres artystyczny ASCII, na którym n-ta linia składa się z tylu gwiazdek ( *
), ile n-te słowo jest długie.
Przykładowe użycie
>
Wejściowe użytkownika sygnały, nie należy go wejście podczas testowania programu.
> This is an example histogram of word length
****
**
**
*******
*********
**
****
******
> a aa aaa aaaa aaaaa
*
**
***
****
*****
> double space example
******
*****
*******
Realizacja referencyjna
W przypadku wątpliwości co do specyfikacji, wyjście twojego programu powinno dokładnie odpowiadać wynikowi poniżej pod wszystkimi danymi wejściowymi.
puts gets.chomp.split.map{|word| '*' * word.length}.join("\n")
Odpowiedzi:
Siatkówka , 5 + 3 = 8 bajtów
Każda linia przechodzi we własny plik, więc dodałem 1 bajt dla każdego dodatkowego pliku. Ponadto
\n
należy go zastąpić rzeczywistą nową linią.Każda para linii jest parą zastępującą wzór.
+
dopasowuje co najmniej jedną spację i zastępuje ją nową linią..
dopasowuje dowolny znak oprócz nowego wiersza i zastępuje go znakiem*
. Jest to stosowane globalnie, więc każda postać jest zastępowana przez*
.źródło
Pyth, 9 bajtów
Wyjaśnienie:
źródło
CJam, 10 bajtów
Jak to działa :
Wypróbuj online tutaj
źródło
R - 33
gdzie
scan(,"")
czyta ze standardowego wejścia i dzieli białą spację na wektor znaków.gsub(".", "*", ...)
zamienia wszystkie znaki na*
.write(..., "")
wypisuje na standardowe wyjście z domyślnym separatorem „\ n”.źródło
Python 3, 43 bajty:
Dzięki @BetaDecay za wskazanie błędu składniowego.
Przykładowy przebieg:
(Poniższy ciąg jest wprowadzany jako literał, a nie tekst)
Premia: histogram pionowy
Dzięki @Caridorc za wskazanie mojego błędu, który sprawił, że bonusy mają od 1 do wielu wierszy.
Próbny:
Premia: histogram pionowy (do góry nogami)
Próbny:
źródło
R, 38 bajtów (z pewną pomocą w komentarzach)
Jak to działa
gsub
zastępuje wszystkie spacje bez znaku*
gsub
dodaje\n
(nowy wiersz) na końcu każdego elementucat
drukuje odpowiednioPróbny
źródło
> <> ,
3837 bajtówPrzeklinaj podwójną skrzynkę * potrząsa rybą *.
Możesz spróbować w trybie online (wystarczy, że podasz dane w polu u dołu, a następnie naciśnij
Give
przycisk). Sugestie dotyczące dalszego gry w golfa są zawsze mile widziane, zwłaszcza pomysły na usunięcie tych marnotrawczych miejsc przed drugą i trzecią linią.Jeśli pozwolono ci wydrukować dodatkowy znak nowej linii dla dodatkowych spacji, kod może mieć aż 27 bajtów :
Wyjaśnienie
Uwaga: kolejność objaśnień będzie odpowiadać położeniu wskaźnika (więc jeśli kod zostanie wyjaśniony na podstawie tego, co uważa się za porządek, dzieje się tak, ponieważ jest to kolejność, w której wskaźnik go wykonuje).
Linia 1:
Linia 2:
Wiersz 3:
Uwaga: Ta linia jest odwrócona, więc czytaj od prawej do lewej.
Zasadniczo test programu, aby upewnić się, że wejście (które jest odczytywane jeden znak na raz) nie jest spacją, a następnie drukuje gwiazdkę. Kończy się, jeśli nie ma danych wejściowych (wartość wejściowa to -1). Aby upewnić się, że nie drukuje dodatkowych znaków nowej linii, używa wartości rejestru, którą ustawia na 0 lub 1. Ze względu na sposób, w jaki go skonfigurowałem, nie przejmuje się dodatkowymi wartościami wypychanymi na stos (np. wartość rejestru, gdy ustawia się go
1
po wydrukowaniu gwiazdki); pozostają na stosie po zakończeniu programu, ale nic nie robią.Wiem, że może to być trochę mylące, ponieważ użyłem
84*
i67*
zamiast" "
i"*"
odpowiednio, ale było tak, ponieważ nie miałem ochoty umieszczać ciągów w programie z jakiegokolwiek powodu.źródło
JavaScript ES6
Funkcja, 46 znaków
Program, 55 znaków
źródło
"f=s=>s.replace(/\S/g,'*').replace(/\s+/g,'\n')".length
pomiar długości i zapomniałem o tym\
.Perl, 16 bajtów (15 znaków +
-p
)Uruchom jako:
Zapisałem dodatkowy bajt dzięki @ThisSuitIsBlackNot , nigdy wcześniej nie spotkałem
y///s
!źródło
y/ /\n/s;
Gema,
119 znakówPrzykładowy przebieg:
źródło
PHP 5.3,
55535150 bajtówUżycie:
Wywołaj skrypt i zdefiniuj zmienną globalną ($ a) Dane
php -d error_reporting=0 script.php?a="This is an example histogram of word length"
wyjściowe:
źródło
Java, 102 bajty
źródło
Haskell, 31 bajtów
Przykład użycia:
źródło
putStr.
wf=
celu obniżenia liczby bajtów, lub użyćmain=interact$
zamiastputStr.
czytać ze standardowego wejścia i uczynić z niego kompletny programf=unlines.map(>>"*").words
zwraca coś podobnego"****\n**\n**\n"
i nie wyświetla „poziomego wykresu graficznego ASCII” zgodnie z żądaniem.CJam, 11 bajtów
Rywalizując o drugie miejsce w CJam po tym, jak @Optimizer znalazł sprytne 10-bajtowe rozwiązanie. Jest to proste 11-bajtowe rozwiązanie:
Wypróbuj online
Alternatywne rozwiązanie wykorzystujące pętlę zamiast dwóch map, również 11 bajtów:
Objaśnienie pierwszego rozwiązania:
źródło
JavaScript (ES6), 37
Krótsza wersja wykorzystująca tylko jedną
replace
.źródło
J, 10 bajtów
Bonus: pionowy (12 bajtów)
Bonus: odwrócony w pionie (14 bajtów)
źródło
Python 3, 72 bajty
Miły jeden liner :)
Wydajność:
Kończy się nowa linia tutaj. Jeśli chcesz bez niego, musisz dodać 5 bajtów:
źródło
Julia, 50 bajtów
Spowoduje to utworzenie nienazwanej funkcji, która pobiera ciąg jako dane wejściowe i drukuje do STDOUT.
Nie golfowany:
źródło
JavaScript (ES5)
Program, 54 znaki
Funkcja, 60 znaków
Przykładowe użycie:
źródło
Matlab - 54 bajty
Uruchamia się z konsoli, pobiera ciąg danych wejściowych
stdin
i wyświetla wykres słowa poziomego wstdout
:Przykład:
Lub możemy spróbować stworzyć fantazyjne kształty:
źródło
Matlab / Octave, 75 bajtów
Korzystanie z anonimowej funkcji:
Dzięki Hoki za wykrycie błędu, który uniemożliwił wykrycie ostatniego słowa.
Przykładowe użycie (Matlab):
Lub wypróbuj online (Octave).
źródło
PowerShell,
3531 bajtówBardzo konkurencyjny dla odmiany. Idź idź gadżety unary operatorów. Ciągle zapominam, że pareny niektórych funkcji, takich jak
-split
i-replace
używane tutaj, są opcjonalne.Wywoływane przez dane wejściowe potoku (równoważne stdin dla PowerShell):
Jako bonus, jeśli zamiast tego możemy użyć argumentów wiersza polecenia, możemy zejść do 20 bajtów i mieć coś, co działa zarówno z, jak i bez pojedynczego ciągu jako danych wejściowych:
źródło
JavaScript (ES6)
Nowe rozwiązanie (39 bajtów):
Rozwiązanie Regex (42 bajty):
Rozwiązanie inne niż wyrażenia regularne (71 bajtów):
Te rozwiązania definiują anonimowe funkcje. Przypisz je do zmiennych lub nazwij tak:
źródło
SWI-Prolog, 40 bajtów
Wywoływany za pomocą ciągów kodu, np
a(`This is an example histogram of word length`).
źródło
STATA, 72 bajty
Nie golfił
Pamiętaj, że ten kod nie działa w tłumaczu online i wymaga niewolnego zastrzeżonego interpretera STATA.
źródło
C ++ 14,
107106 bajtówźródło
K5, 31 bajtów
źródło
O, 22 bajty
Wyjaśnienie
źródło
Belka, 92 bajty
To wcale nie jest konkurencyjna odpowiedź i naprawdę dość późno, ale ostatnio bawiłem się trochę z Beamem i chciałem sprawdzić, czy uda mi się to zrobić. W końcu udało mi się osiągnąć sukces :)
Pokaż fragment kodu
źródło
AWK
przykłady
wydajność:-
źródło