To proste wyzwanie: biorąc pod uwagę ciąg liczb całkowitych, znajdź w nim sumę wszystkich liczb całkowitych.
Ale z niespodzianką. Twój wynik to odległość Levenshteina między twoim kodem a następującym zwrotem (Wyzwanie):
Biorąc pod uwagę zestaw liczb całkowitych, znajdź w nim sumę wszystkich liczb całkowitych.
Możesz założyć, że na wejściu nie ma znaków nowej linii ani spacji końcowych.
Przykładowe wejście / wyjście:
Input: 1 5 -6 2 4 5
Output: 11
Input: 1 -2 10
Output: 9
Kalkulator online dla odległości Levenshtein można znaleźć tutaj: http://planetcalc.com/1721/
Odpowiedzi:
Python, odległość 3
Daje to wbudowaną funkcję
sum
, która może sumować podobny zestawsum({3,5,7})==17
. Pozostałe części są komentowane. Ma odległość 3, z 3 edycjami:#
sum
z#
źródło
Julia, odległość
2726Bez komentarza!
Tworzy to funkcję o nazwie,
Given
która akceptuje tablicę i zwraca sumę jej elementów. Ponieważ wiele wbudowanych plików Julii ma odpowiednie nazwy (ale nie mają znaczenia dla obliczeń tutaj), możemy po prostu wymienić kilka rozdzielonych średnikami. Dopóki nie są ostatnimi rzeczami wymienionymi na liście, nie zostaną zwrócone. Ostatnia część faktycznie tworzy tablicę zawierającą sumę i trzy funkcje i wybiera pierwszy element, sumę.źródło
Given=(a;set;of=integer; find;th;[sum,of,all,integer, in][])
- „Biorąc pod uwagę”, nadal działa tak samo, ale odległość wynosi 18.APL, odległość
63Zapisano 3 odległości ...? dzięki Dennis!
To sumuje podaną tablicę (
+/
). Pozostałą część zdania dodaje się na końcu za pomocą komentarza (⍝
).źródło
{
i⍵}
.+/
jest już prawidłową funkcją.GolfScript, 5
Jest to pełny program, który nie używa komentarzy (ale dużo noops).
Wypróbuj online w Web GolfScript .
źródło
R, Odległość
373634Bez użycia komentarzy :)
Uwaga: na początku jest spacja.
źródło
Mathematica, dystans 17
Given a set of integers find the sum of all integers in it*0+Total@Input[]
Nie używa żadnych komentarzy ani żadnych operacji, ale zamiast tego deklaruje wszystkie słowa jako zmienne, a następnie usuwa je, mnożąc przez zero.
Ma również tę zaletę, że jest jedyną odpowiedzią, która faktycznie przyjmuje zestaw liczb całkowitych jako danych wejściowych.
Dane wejściowe
{1,2,3}
zapewniają dane wyjściowe6
zgodnie z oczekiwaniami.Niestety,
Sum
funkcja Mathematica nie wykonuje zadania w pytaniu, dlatego wymaga większej liczby bajtów.źródło
Given a set of integers find the sum of all *0+Total@Input[]
dystans 14Java -
4341Próbowałem.
Java: P.
źródło
RProgN , odległość 2.
W RProgN, a, set, find i sum to wszystkie polecenia. Cała reszta jest domyślnie ignorowana w składni. a wypycha alfabet na stos, co spowoduje niepowodzenie sumy. Zestaw nigdy nie ma wystarczającej liczby argumentów, więc zawsze zawodzi, błędnie. Znajdź ma niepoprawną liczbę argumentów lub próbuje porównać alfabet ze stosem wejściowym, co nie działa.
a i set można zarówno „naprawić”, usuwając spację między nimi, aset nie jest funkcją, więc jest ignorowane. Znajdź ma tylko dodatkowy znak wstawiony na początku, co powoduje, że nie jest on rozpoznawany i ignorowany. Zostaje tylko suma, która wygodnie sumuje zawartość stosu wejściowego.
Wreszcie, RProgN może coś wygrać!
Wypróbuj online!
źródło
CJam,
765Jest to anonimowa funkcja, która wyrzuca tablicę ze stosu i zwraca w zamian liczbę całkowitą.
Dzięki @AboveFire za skrócenie odległości o 1.
Wypróbuj online.
źródło
Matlab, odległość
2928Bez żadnych komentarzy :-)
Kod ma postać funkcji anonimowej. Zakładam, że dane wejściowe to wektor (tablica 1D) liczb.
Przykład:
źródło
O , 5
Liczby muszą być w systemie szesnastkowym i odwrotnym zapisie ujemnym:
Wypróbuj online
źródło
K,
605Zgaduję, że symbole NIE pasują ładnie z Leve-niezależnie od odległości ...Hahaha. Początkowo miałem nie jaka była odległość LeveXXX, więc mam 60. Następnie, dzięki pomocnych uwag, spadła do 5.
źródło
F #, odległość 21
Uwielbiam możliwość używania podwójnych tyknięć, aby nadać funkcji nazwę ze spacjami.
Stosowanie:
źródło
Pip, odległość 3
Dołączenie do klubu trywialnych odpowiedzi na pytania dotyczące golfa bez komentarzy ...
Repozytorium GitHub dla Pip
Kod praktycznie sam się dokumentuje; może
s/in/using/
dla dokładniejszego opisu. Liczby całkowite podane jako argumenty wiersza poleceń są wczytywane do listyg
, która jest tutaj składana przy dodawaniu, a wynik jest automatycznie drukowany. Większość wszystkiego innego to tylko zmienne, które nie są operacjami.Na początku byłem trochę zaskoczony, że
s, f
działałem bez narzekań, ponieważf
odnosi się do głównej funkcji i przyjmowanie zakresu bloku kodu nie ma sensu. Ale potem zdałem sobie sprawę:,
operator zakresu, gdy otrzyma argument funkcji, po prostu konstruuje inną funkcję (podobnie jak wiele operatorów w Pip). Więc myślę, żes, f
ocenia{Given a set of integers, find the sum of all integers in " ",$+g}
. (Który i tak jest odrzucany).I ostatni punkt: ten kod działa z bieżącą wersją Pip, w której
G
jeszcze niczego nie przypisałem . Jeśli w jakiejś przyszłej wersjiG
utworzę operator binarny lub trójskładnikowy, konieczna byłaby wersja na odległość 4. Używaniegiven
zamiastGiven
działałoby ładnie.źródło
Haskell, odległość 11
Bez komentarza!
Stosowanie:
źródło
Cubix , Odległość 9
Wypróbuj online!
To owija się w kostkę
Kod operacyjny to
I+i
Wpisz liczbę całkowitą, dodaj do TOS, a następnie wpisz znak?
Sprawdź wartość znaku. Przekieruj w lewo na -1 (koniec wprowadzania) lub w prawo na cokolwiek innego (0 nie może być wprowadzone);O@
pop TOS, suma wyjściowa i wyjście<;u
przekieruj, pop TOS i zawróć na startźródło
Pyth - 4
Po prostu umieszcza rzeczywisty kod
sQ
przed ciągiem, bez spacji.Wypróbuj online tutaj .
źródło
PHP4.1, odległość 25
Ten jest dość długi i naprawdę spóźniony.
Ale tak czy inaczej, oto:
Aby to zadziałało, wystarczy przekazać mu tablicę podczas POST / GET / COOKIE / session, używając klucza
f_all_integers_in_i
.źródło
Pyt , odległość 1
Wszystkie znaki alfanumeryczne nie występują w Pythonie, a suma listy zajmuje tylko jeden znak: Ʃ
Wypróbuj online!
źródło
C ++ 17, dystans
4429Variadic Generic Lambda FTW
Poprzednie rozwiązanie
źródło
05AB1E, odległość 3
Wypróbuj online!
źródło
Pyke , wynik 3
Wypróbuj tutaj!
źródło
Ly , wynik 4
Zwróć uwagę na końcowy znak nowej linii.
Wypróbuj online!
Kod jest dość zrozumiały.
&+
jest operatorem sumowania Ly, a#
jest komentarzem. To niefortunne, że muszę dołączyć końcowy znak nowej linii, ponieważ zakończenie programu wierszem komentarza „skomentuje” niejawne wyjście Ly, co w rzeczywistości jest błędem w tłumaczu, który nazywam funkcją.źródło
dc, 14
komentarze:
TIO
narzeka, że stos jest pusty, jeśli wpiszesz 1 liczbę, ale nadal działa, a usunięcie 0 zapisuje 2 różnice.
źródło
Excel VBA, odległość: 11
Anonimowa funkcja bezpośredniego okna VBE, która pobiera dane wejściowe z zakresu
[a:a]
obiektu ActiveSheet i wysyła je do bezpośredniego okna VBEźródło
Brain-Flak , 20
Wypróbuj online!
Wyjaśnienie
Ponieważ w oryginalnym tekście nie ma nawiasów, sprowadza się to do problemu golfa w Brain-Flak. Ale to wciąż nie czyni tej odpowiedzi trywialną, ponieważ odpowiedzi w Brain-Flak rzadko są.
Pierwszą intuicją byłby prawdopodobnie następujący kod
Który działa ... chyba że na stosie jest zero, w którym to przypadku sumuje się aż do zera. Aby obejść ten problem, musimy użyć wysokości stosu, aby sprawdzić, czy stos nie jest pusty. Można to ustawić w ten sposób
Ten działa, ale jest z nim coś nie tak. Wyciszamy popy i pchnięcia w pętlach, ale są one prawie równe, więc powinien istnieć sposób ich anulowania. Jeśli spróbujemy
Kończymy za
n
każdym razem. Więc oto sztuczka, już mamyn
lokalizację, po prostu przesuwamy ją do pchnięcia, aby zrównoważyć rzeczy.źródło
2^8
odpowiedzi ppcgNaprzód , 17 lat
Wypróbuj online!
źródło
Galaretka , odległość: 2
Wypróbuj online!
Galaretka ocenia tylko główny link (ostatnia linia), a jawne polecenia uruchamiają inne linki (inne linie).
Ostatni wiersz zawiera
S
sumę danych wejściowych.Pierwszy wiersz nie zostanie wykonany, ponieważ nie ma odniesienia do niego w głównym łączu.
źródło
Kłapnięcie! 4.2.2.9 (+ Narzędzia), składnia scratchblocks3, odległość 35
To jest funkcja.
integers, find the sum of all inte
jest wejściem.źródło
integers, find the sum of all inte
jest argumentem, po prostu nie różni się od zwykłych zmiennych w składni scratchblocks3, dlatego wyjaśniłem