Napisz program, który pobiera ciąg wejściowy i zlicza w nim liczbę znaków alfanumerycznych i niealfanumerycznych. Musi wyświetlać swój wynik w następujący sposób:
wejście: http://stackexchange.com
wyjście:20 + 4 = 24
Haczyk polega na tym, że kod źródłowy musi mieć taką samą liczbę znaków alfanumerycznych jak znaki niealfanumeryczne. Komentarze nie są dozwolone, białe znaki są ignorowane. (Język o nazwie Whitespace może konkurować o głosy, ale oczywiście nie zostanie wybrany jako zwycięzca)
Znaków w kodzie musi mieć przynajmniej jakieś drobne uzasadnienie, nie powinny one być całkowicie zbędne. Na przykład dozwolone są dłuższe nazwy zmiennych, i = (j*3)+4;
a i = j*3+4;
nie dozwolone. Jednak i = i + 1;;;;;;
nie jest.
Poza tym obowiązują standardowe zasady gry w golfa kodowego.
O.
,O?
iO!
czym każdy zapis Program I spełnia ograniczenia klasy znak ... Oczywiście, że jest prawdopodobne, aby stracić na działalności długości.Odpowiedzi:
Perl, 32 + 32 = 64
Ciąg oczekuje się w STDIN. Dane wyjściowe są zapisywane w STDOUT. Białe znaki są ignorowane. Moją interpretacją tego zadania jest to, że program powinien być w stanie uruchomić się na sobie, aby uzyskać wynik.
Niegolfowany z komentarzami
Znalazłem kilka odmian o tej samej liczbie bajtów, np .:
Przykłady
Przykład z pytania:
Uruchamianie na sobie (
a.pl
):Rozmiar pliku to 104 bajty, dlatego 40 bajtów jest ignorowanych jako białe znaki.
Perl, 29 + 29 = 58
Ciąg oczekuje się na STDIN i jest ograniczony do pierwszego wiersza. Wynik zostanie wydrukowany do STDOUT. Białe znaki są ignorowane.
Nie golfił
Przykłady
Plik
a.pl
zawiera skrypt Perla.Przykład z pytania:
Uruchamianie na sobie:
Rozmiar pliku
a.pl
to 65 bajtów, dlatego 7 bajtów jest ignorowanych jako białe znaki.źródło
C - 96 (48 + 48) znaków
To jest trochę czytelne. Jest jednak miejsce na ulepszenia.
źródło
Bash + coreutils, 72 (36 + 36) znaków niebiałych
Wynik:
Poprzednia odpowiedź:
Pure Bash, 92 (46 + 46) znaki bez spacji
Wynik:
źródło
PowerShell (43 + 43 = 86)
Grał w golfa
Nie grał w golfa
Test
Testowanie z samym kodem w celu spełnienia kryteriów
"
został zastąpiony znakiem `, który nie jest częścią ciągu.źródło
GolfScript, 74 znaki (= 37 + 37)
Test online kodu z kodem jako danymi wejściowymi.
źródło
Rubin 38 + 38 = 76
Ten program zlicza końcowy znak nowej linii na wejściu.
Liczbę znaków wykonuje sam program:
$ ruby alphabalance.rb alphabalance.rb
:)źródło
PowerShell, 70 bajtów (= 35 + 35)
Skrypt testowy:
Wynik:
PowerShell, 70 bajtów (= 35 + 35), alternatywnie
źródło
Python 2 (60 + 60 = 120)
Trudny, prawdopodobnie jest miejsce na poprawę. Podobnie jak sama funkcja może być wykorzystana do oceny własnej równowagi alfanumerycznej.
Test:
źródło
repr
.C ++, 146 (73 + 73)
178 (89 + 89)znaków spoza #Oryginał w zestawie
<algorithm>
bez wyraźnego powodu. UpsLiczę tylko znaki w wierszach po
//Code itself starts here
. W szczególności oznacza to brak liczenia#include <string>
. Liczę też trigrafie jako trzy znaki każda, co być może jest dyskusyjne. Zauważ, że podczas testowania programu na własnym kodzie źródłowym należy zachować ostrożność, aby zapobiec zastąpieniu trygrafu w literale łańcucha.Jest tu kilka osobliwych decyzji projektowych - w większości kodów produkcyjnych nie spotkasz w tej samej funkcji trygrafów i pętli opartych na zakresie - ale myślę, że wszystko to mieści się w granicach „uzasadnionego”.
źródło
python 52 +52 = 104
Ciekawe wyzwanie, ponieważ python unika znaków innych niż alfanumeryczne.
Niewielkie uzasadnienie użycia wycinka: przyspiesza to (może?)
źródło
print
nie wymaga nawiasów, i skorzystaj z'%d + %d = %d' % (a,l-a,l)
metody. To powinno uratować niektóre postacie.Julia, 64 lata
Wszystkie jedyne niepotrzebne znaki niealfanumeryczne to ostatnie
;
i niektóre z()
formatowania łańcucha. Wyszło prawie idealnie wyważone i jako potęga 2 bez większego kręcenia.źródło
perl, 64 znaki niebiałe:
Lekko wyjaśnione przez perl -MO = Deparse i kilka komentarzy:
ORS, $ \ jest dodawany automatycznie do każdego wezwania do drukowania, umieszczając całkowitą liczbę na końcu.
źródło
Python 2, 50 + 50 = 100
Uruchom tutaj: http://repl.it/8CH
źródło
Rebol (64 + 64 = 128)
Przykład użycia (w konsoli Rebol):
NB Program ignoruje spacje, tabulacje i znaki nowej linii z zliczeń.
źródło
J - 46 + 46 = 92
Liczy białe znaki, więc nie można wykonać autotestu bez modyfikacji. Pobiera dane wejściowe na standardowe wejście. Ma złe usta, należy go umyć mydłem.
Stosowanie:
źródło
JavaScript - 76 (38 + 38)
Przykładowe wejście:
http://stackexchange.com
wyjście:
20 + 4 = 24
Uruchamianie na własną rękę:
PS W przypadku osób zainteresowanych
(o + $)
utrzymaniem równowagi alfanumerycznej tak nie jest. Ponieważ po zobaczeniuo + " + "
JS zdecyduje, że wszystkie+
będą konkatenatorami łańcuchów, a nie sumatorami liczb. Dlatego nawiasy są konieczne, a raczej20 + 4
staną się204
24
: DHappy Coding!
źródło
Clojure: (31 + 31 = 62) znaki niebiałe
Wynik:
źródło
CJam, 27 + 27 = 54
CJam jest kilka miesięcy nowszy od tego wyzwania, więc ta odpowiedź nie kwalifikuje się do zielonego znacznika wyboru. To i tak było zabawne ćwiczenie!
Bierze ciąg wejściowy jako argument wiersza poleceń, więc nie będzie działał w tłumaczu online, ale można go przetestować za pomocą interpretera Java .
Wyjaśnienie
źródło