Weź ciąg jako dane wejściowe i wykonaj dodawanie / odejmowanie wszystkich cyfr w ciągu i wyprowadzaj w wyniku sumę tych operacji.
Zasady
- Cyfry w ciągu są odczytywane od lewej do prawej
- Jeśli cyfra (n) jest nieparzysta, wykonaj dodawanie z następną cyfrą (n + n1)
- Jeśli cyfra (n) jest parzysta, wykonaj odejmowanie od następnej cyfry (n - n1)
- Jeśli osiągnąłeś ostatnią cyfrę w ciągu, wykonaj operację z pierwszą cyfrą w ciągu
- Dane wyjściowe będą sumą wszystkich uzyskanych wartości
- Jeśli w ciągu znajduje się tylko jedna cyfra, wykonaj operację samodzielnie (n + n lub nn)
- Jeśli w ciągu nie ma cyfr, wynikiem jest 0
Przykład
Input: r5e6o9mm!/3708dvc
Process: (5+6) + (6-9) + (9+3) + (3+7) + (7+0) + (0-8) + (8-5)
Output: 32
Notatki
- Akceptowana jest albo funkcja, albo pełny program
- Maksymalna długość wejściowa będzie zależeć od limitu wprowadzania języka przez Twój język
- Brak ograniczeń wprowadzania znaków, ale tylko cyfry o połowie szerokości liczą się do wyniku
- Wygrywa najmniej bajtów
""
,"0"
,"1"
Odpowiedzi:
Galaretka ,
17 1512 bajtówWypróbuj online!
Wypróbuj przypadki testowe.
Program przechowuje tylko cyfry następujące po nieparzystej cyfrze, a następnie oblicza dwukrotnie sumę.
źródło
K (oK) ,
47434031 bajtówRozwiązanie:
Wypróbuj online!
Wyjaśnienie:
Usuń wszystko z łańcucha, który nie jest liczbą (jednocześnie konwertując), modulo 2, pomnóż przez 2, pomnóż za pomocą x obróconego o 1 i zsumuj.
Naiwne rozwiązanie:
Usuń wszystko z ciągu, który nie jest liczbą (jednocześnie konwertując), weź 2-elementowe okno przesuwne, dowiedz się, czy są nieparzyste, czy parzyste, zastosuj odpowiednio dodawanie / odejmowanie, a następnie podsumuj.
Wypróbuj online!
Uwagi:
źródło
x:48!x@&x in,/$!10
->x^:(x-:48)^!10
':
że to „przesuwane okno” - interesujące.Python 2 , 86 bajtów
Wypróbuj online!
źródło
Perl 6 , 41 bajtów
Wypróbuj online!
Używa tej samej logiki, co odpowiedź Dylnan's Jelly . Suma obejmuje tylko cyfry następujące po liczbie nieparzystej, a następnie mnożone przez 2.
źródło
PowerShell,
807876 bajtów-2 bajty dzięki Neilowi z rozwiązaniem Retina
-2 bajty dzięki AdmBorkBork
Skrypt testowy:
Wyjaśnienie
Po pierwsze: można dodać 2 * n, jeśli poprzednia cyfra jest nieparzysta, i 0, jeśli poprzednia cyfra jest parzysta.
Dodatkowe 99 bajtów
Zainspirowany przez @Neil. Ponowne dopasowanie tylko cyfr „poprzednia cyfra jest nieparzysta”.
Matches
jest zmienną automatyczną .źródło
|?{$_}
na-ne''
inną i przenieś ją$d="$args"-split'\D*'-ne''
do parens, takich jak($d="$args"-split'\D*'-ne'')+$d[0]
.MATL ,
1817 bajtówWypróbuj online!
(-1 bajt dzięki Luis Mendo / Giuseppe / oba!)
Wyjaśnienie:
Podstawową ideą jest to, że liczby następujące po liczbach parzystych można zignorować, podczas gdy liczby następujące po liczbach nieparzystych są podwojone - a końcowy wynik to suma tych podwójnych wartości.
Nie sądziłem, że
f
po sprawdzeniu parzystościo
będzie konieczne, ale z jakiegoś powodu MATL nie widzi tablicy zer i jedynek wynikających zo
tablicy logicznej, zamiast tego przyjmuje je jako indeksy liczbowe i indeksy w pozycjach1
iend
.źródło
!U
zamiast48-
. Wydaje się, że transpozycja nie wyrządza tutaj żadnej szkody.o
dladouble
wejścia jest po prostumod(...,2)
, więc wyjście jestdouble
. NiezłaNaN
sztuczka wejściowa! Jeśli to ma rozwiązać problem z zewnętrznym wyjściem w STDOUT, Dennis wpadł na pomysł i prawdopodobnie to naprawi wkrótce!U
zamiast48-
o
daje logiczne wyjście tablicowe - a może nie? (Muszę wyznać, że nigdy tak naprawdę nie zaglądałem do systemu numerycznego MATLAB.) Tak, pomyślałem, żeNaN
byłby dobrym wartownikiem, ponieważ jest mało prawdopodobne, aby był gdziekolwiek, ale dobrze wiedzieć, że nie będzie potrzebny na dłużej !K (ngn / k) , 33 bajty
Wypróbuj online!
{
}
jest funkcją z argumentemx
!10
jest lista0 1 ... 9
$
konwertować na ciągi,/
powiązaćx^
oznaczax
bez tego, co jest po prawej stroniex^x^
oznaczax
przecięty z tym, co jest po prawej stronie, tzn. nie należy wprowadzać tylko cyfrx
-48+
odejmij48
, który jest kodem ASCII z"0"
x:
Przypisać dox
2!
mod 22*
pomnożone przez 21_x,*x
jest jedna kropla:x
po której następuje pierwsza zx
; tzn.x
obrócony w lewo o jeden krok+/
sumaźródło
Japt (v2.0a0),
2519 bajtów-6 bajtów dzięki Shaggy .
Wypróbuj tutaj .
Tym razem działa bez cyfr! Dane wejściowe to lista znaków.
źródło
x
Jednak niezadowolony z tablicy w funkcji. Zadzwoń do mnie na czacie, jeśli masz jakieś pytania.05AB1E ,
129 bajtówOszczędza 1 bajt w stosunku do naiwnej metody, wykorzystując sztuczkę parzystości dylnana Oszczędność
3 bajtów dzięki Mr. Xcoder
Wypróbuj online!
Wyjaśnienie
źródło
þÀIþ€ÉÏSO·
,þÀDÁ€ÉÏSO·
,þÀ¹þ€ÉÏSO·
lubþÀsþ€ÉÏSO·
przekazać wszystkie przypadki testowe dla -2 bajtów?þDÁ€ÉÏSO·
dla -3 :)Siatkówka , 37 bajtów
Wypróbuj online! Wyjaśnienie:
Dołącz duplikat pierwszej cyfry.
Dopasuj cokolwiek, którego pierwsza poprzednia cyfra jest nieparzysta.
Konwertuj wszystkie mecze na jednoosobowe i podwajaj je. (Nie-cyfry są traktowane jako zero.)
Weź sumę. Jeśli nie było żadnych dopasowań, to daje zero w razie potrzeby.
Najlepsze, co mogłem zrobić w Retina 0.8.2, to 44 bajty:
Wypróbuj online! Wyjaśnienie:
Usuń cyfry.
Dołącz kopię pierwszej cyfry.
Usuń cyfry, które nie następują po liczbie nieparzystej.
Konwertuj na unary.
Podwój je.
Weź sumę.
źródło
Galaretka , 15 bajtów
Wypróbuj online!
źródło
1ịṭƊ
JavaScript (ES6), 56 bajtów
Pobiera dane wejściowe jako tablicę znaków.
Wypróbuj online!
Skomentował
źródło
JavaScript (Node.js) ,
85848382 bajtów-1 bajty dzięki ovs
Wypróbuj online!
Pobiera dane wejściowe ciągu, znajduje cyfry jako tablicę znaków lub zwraca pustą tablicę, jeśli nie znaleziono, a następnie używa koercji typu, aby zapewnić prawidłowe dodawanie / odejmowanie wartości. Wyszukiwanie do przodu wstępnie zwiększa indeks i używa zwięzłej kontroli zwięzłości, a następnie ostatnia część sprawdza, czy liczba jest nieparzysta, a nawet w celu wymuszenia dodawania lub odejmowania (+ i - to - itd.)
źródło
n-0
może być+n
R , 58 bajtów
Wypróbuj online!
źródło
array
wyjście.xxx
więc jest to 68 bajtów przy użyciu zmiany indeksowania wa
celu wygenerowaniay
.strtoi
zamiastas.double
, ale tak, to powinno być w porządku.Perl 5 , 48 bajtów
Wypróbuj online!
Podoba mi się, jak tajemniczo to wygląda, ale jest to dość prosta pętla wokół wszystkich liczb w ciągu.
źródło
Julia 0.6 ,
7769 bajtówWypróbuj online!
źródło
C Sharp 180 bajtów
To nie jest zbyt dobry golf, lol.
Nie golfowany:
źródło
Stax , 14 bajtów
Uruchom i debuguj
Rozpakowane, niepolowane i skomentowane, wygląda to tak.
Uruchom ten
źródło
JavaScript (ES6), 52 bajty
Oczekuje wprowadzania jako tablicy znaków. Zastrzeżenie: Ze względu na zastosowanie przesunięcia bitów, wyjście ma górną granicę
2^31-1
Wypróbuj online!
Wyjaśnienie
Zasadniczo podwaja sumę cyfr po wartościach nieparzystych.
źródło