Utwórz program, który sumuje wszystkie liczby całkowite znalezione w ciągu ustawionym jako zmienna w programie (dlatego program nie musi obsługiwać żadnych danych wejściowych). Liczby całkowite są oddzielone liczbami nienumerycznymi (wszystko oprócz 0, 1, 2, 3 ... 9).
Przykłady:
e7rde f ,fe 43 jfj 54f4sD
= 7 + 43 + 54 + 4 = 1085
= 564 545,5445-32JIFk0ddk
= 64 + 545 + 5445 + 32 + 0 = 60860ab0
= 0 + 0 = 0
Dodatkowe uwagi:
- Obsługa Unicode nie jest konieczna, ale dozwolona
-n
(gdzien
jest liczbą całkowitą) nie jest liczony jako ujemnyn
, ale jako łącznik, po którym następujen
.
Odpowiedź może zostać wydrukowana na ekranie (ale nie jest wymagana).
Najkrótsza odpowiedź (w postaciach) wygrywa.
5a-3
(mój kod pomijałby,-
gdyby natychmiast następował po liczbie, ale nie, jeśli przed nim była liczba inna niż cyfra).Odpowiedzi:
Perl, 15
Wejście
$_
, suma$c
:źródło
Ruby 1.9, 21 znaków
Aby wydrukować rozwiązanie na standardowe wyjście, wymagane są 2 dodatkowe znaki:
Aby czytać ze standardowego wejścia zamiast używać predefiniowanej zmiennej, należy użyć kolejnych 3 znaków:
Ruby 1.8, wymienić
?+
z"+"
aby uzyskać roztwór roboczy w 22 znaków.źródło
scan
Jest także krótszy niżsplit
. Twoje rozwiązanie staje sięeval s.scan(/\d+/)*?+
- 21 znaków.scan
dzięki, dzięki!eval
i* '+'
Python (60)
źródło
Rubin -
3634 znaków36 znaków, jeśli chcesz wydrukować wynik.
Zakłada, że dane wejściowe są obecne jako ciąg w s.
źródło
JavaScript (ES6), 30
Wersja z adnotacjami:
źródło
Windows PowerShell, 23
252931Z wyjściem.
W rzeczywistości, bez wyjścia jest dokładnie takie samo, po prostu przesyłasz go gdzie indziej, gdzie jest potrzebny.
źródło
J -
4038 znakówLeniwa wersja. Wymaga biblioteki ciągów.
źródło
Jawa
poza konkursem;)
źródło
JavaScript [30 bajtów]
źródło
Labirynt ,
2921 bajtów(Uwaga: Labirynt jest nowszy niż to wyzwanie).
Ponadto, Labirynt nie ma zmiennych, więc wybrałem normalny program wejścia / wyjścia.
Było to dość proste ze względu na sposób działania poleceń wprowadzania Labiryntu.
?
próbuje odczytać podpisaną liczbę całkowitą ze STDIN i zatrzymuje się na pierwszej nie cyfrowej. Jeśli nie może odczytać liczby całkowitej (ponieważ po kolejnym znaku-
nie następuje cyfra, ani żadna inna cyfra, albo osiągnęliśmy EOF),0
zamiast tego zwróci .,
z drugiej strony czyta każdy kolejny bajt i wypycha wartość bajtu. Jeśli ten zostanie wywołany w EOF, zwróci-1
.Oto pseudokod rozwiązania:
Prawidłowe radzenie sobie z liczbami ujemnymi komplikuje to rozwiązanie. Gdyby nie te, miałbym 8-bajtowe rozwiązanie:
źródło
PHP - 37
Bez drukowania;
Z nadrukiem (38):
źródło
Perl, 16 znaków
Pobiera dane wejściowe
$_
, dane wyjściowe są kontynuowane$r
. Ostatni średnik jest zbędny, ale prawdopodobnie będzie potrzebny, gdy program zrobi więcej rzeczy. Dodajsay$r
do wyniku.źródło
wc -c
.J - 23 char
Nie jest zwycięzcą, ale widzimy dość rzadką prymitywną akcję.
Wyjaśniono:
_"."0 y
- Dla każdego znaku w ciągu wejściowymy
spróbuj odczytać go jako liczbę. Jeśli nie możesz, użyj_
zamiast tego wartości domyślnej (nieskończoność).,_=
- Sprawdź, czy każdy wynik jest równy_
, a następnie uruchom ostatnią tablicę zer i jedynek w wektorze. ("."0
zawsze dodaje jeden wynik za dużo wymiarów, więc poprawiamy to tutaj).y,:' '
- Dodaj rząd spacji poniżej ciągu wejściowego.}
- Używany tutaj,}
nazywa się Item Amend i wykorzystuje listę zer i 1 po lewej jako indeksy, aby wybrać wiersz do narysowania w prawym argumencie. Tak więc dzieje się tak, że dla każdej kolumny po prawej stronie bierzemy oryginalny znak, jeśli można go odczytać jako liczbę, a w przeciwnym razie zajmujemy miejsce pod nim. Dlatego też wszelkie znaki nienumeryczne zakrywamy spacjami.+/".
- Teraz przekonwertuj cały ciąg na listę liczb i zsumuj je.źródło
gs2, 4 bajty
Zakodowane w CP437 ; trzeci bajt to
E9
.W
odczytuje wszystkie liczby/-?\d+/
z ciągu,#Θ
mapuje wartość bezwzględną,d
sumy.(gs2 też jest nowszy niż to wyzwanie, ale jego
read-nums
polecenie to całkowity zbieg okoliczności).źródło
Smalltalk (Smalltalk / X) (51 znaków)
za pomocą pakietu wyrażeń regularnych:
wo regex:
wejście w s
źródło
R, 30
Tutaj
x
jest nazwa zmiennej.Przykład:
źródło
JavaScript - 43 znaki
Wiem, że to długo, ale nie było rozwiązania JS :)
a
jest ciąg.c
zawiera odpowiedź.źródło
Tcl, 30
Zakłada, że dane wejściowe znajdują się w zmiennej
$a
(formalnie, ina
) i zapisuje odpowiedź w wyniku interpretera. I / O pozostawia się jako ćwiczenie.źródło
APL, 16 bajtów
⎕d
jest wbudowany zawierający cyfry (0-9).b
jest przypisany do wektora 0/1, gdzie 1 jest podawany cyfrom.b
służy do kompresji podanej tablicy znaków, a następnie jest ponownie używana do jej rozwinięcia, która wstawia spacje.⍎
to eval APL, który w tym przypadku konwertuje ciąg na wektor na liczby całkowite.+/
oblicza sumę.źródło
+/2⊃⍞⎕VFI⍨⎕AV~⎕D
Swift 3, 78
gdzie
s
jest ciągźródło
Perl - 24 znaki
Dane wejściowe są w $ _
źródło
Właściwie 14 bajtów (niekonkurujących)
Wypróbuj online!
To zgłoszenie nie jest konkurencyjne, ponieważ w rzeczywistości jest nieco nowsze niż to wyzwanie.
Ten program obsługuje stronę kodową CP437 do wprowadzania danych.
Wyjaśnienie:
źródło
C 100
Wypróbuj online!
Wcześniejsza 85-bajtowa wersja, która trochę oszukuje poprzez zakodowanie ciągu wewnątrz programu:
Aby faktycznie użyć programu 85-bajtowego, musisz przypisać zmienną w następujący sposób:
źródło