Kod zbliżony do wyzwania: Suma liczb całkowitych


39

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/


4
Nie mogę
przestać

7
Wow, tyle kreatywności chłopaki xD ... kaszel komentuje nadużywających kaszel

1
Czy uważasz, że powinna to być kontynuacja z innym wyzwaniem, ale ta sama zasada odległości Levenshtein? Nie jestem pewien, czy jest to uważane za warte kontynuacji, czy nie.

1
@NicoA zdecydowanie! Być może jedynym problemem jest to, że zadanie to było zbyt łatwe.
Maltysen

2
@NicoA Jeśli to zrobisz, bądź bardzo ostrożny w określaniu, co jest niedozwolone. Na przykład wiele języków pozwala na swobodne pływanie łańcuchów.
xnor

Odpowiedzi:


58

Python, odległość 3

#Given a set of integers, find the 
sum#of all integers in it.

Daje to wbudowaną funkcję sum, która może sumować podobny zestaw sum({3,5,7})==17. Pozostałe części są komentowane. Ma odległość 3, z 3 edycjami:

  • Dodaj inicjał #
  • Dodaj nowy wiersz
  • Wymień miejsca po sumz#

3
Kolejna przydatna funkcja cudownej angielskiej składni
qwr

1
Moje jedyne pytanie dotyczy tego, jak go używać, ponieważ nie jest to pełny program i (teoretycznie) nie potrzebujesz nawet swojego kodu, ponieważ jest on wbudowany
Beta Decay

1
@BetaDecay Działa to z powodu reguł, że funkcje są domyślnie dozwolone, a literały funkcji są dozwolone dla funkcji .
xnor

54

Julia, odległość 27 26

Bez komentarza!

Given(a)=(Set;of;integer; find; [sum(a),all,integer,in][1])

Tworzy to funkcję o nazwie, Givenktó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ę.


Żadne komentarze nie są zdecydowanie bardziej zgodne z duchem wyzwania. Dobra robota.
Christopher Wirt

@ChristopherWirt Thanks! :)
Alex A.

4
Czy mogę zasugerować ulepszenie? 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.
Glen O

22

APL, odległość 6 3

Zapisano 3 odległości ...? dzięki Dennis!

+/⍝en a set of integers, find the sum of all integers in it.

To sumuje podaną tablicę ( +/). Pozostałą część zdania dodaje się na końcu za pomocą komentarza ( ).


1
Nie potrzebujesz {i ⍵}. +/jest już prawidłową funkcją.
Dennis

@Dennis Niesamowite, wielkie dzięki za sugestię!
Alex A.,

10

GolfScript, 5

~{Given a set of integers+ find the sum of all integers in it}*

Jest to pełny program, który nie używa komentarzy (ale dużo noops).

Wypróbuj online w Web GolfScript .


9

R, Odległość 37 36 34

Bez użycia komentarzy :)

 as.integer ( sum (scan(,integer( ) )))

Uwaga: na początku jest spacja.


8

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ściowe 6zgodnie z oczekiwaniami.

Niestety, Sumfunkcja Mathematica nie wykonuje zadania w pytaniu, dlatego wymaga większej liczby bajtów.


Given a set of integers find the sum of all *0+Total@Input[]dystans 14
Leaky Nun

6

Java - 43 41

Próbowałem.

float a_set_of(int[] r){return IntStream.of(r).sum()}//n it.
Given a set of integers, find the sum of all integers in it.

Java: P.


Myślę, że możesz zmienić argument w funkcji z a na r, aby zapisać jedną odległość edycji.
Element118,

@ Element118 Nice catch. Zmieniłem również typ zwracanego tekstu, gdy byłem przy nim, aby lepiej dopasować nazwę metody.
Anubian Noob,

2
nie możesz użyć „int a_” jako początku fragmentu? (jedno spacja przed int i 2 po nim przed a_
masterX244

6

RProgN , odległość 2.

Given aset of integers, ;find the sum of all integers in it.

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!


4

CJam, 7 6 5

{:+}e# a set of integers, find the sum of all integers in it.

Jest 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.


4

Matlab, odległość 29 28

Given_a_set_of_integers=@(findthe)sum(all(1)*findthe)

Bez żadnych komentarzy :-)

Kod ma postać funkcji anonimowej. Zakładam, że dane wejściowe to wektor (tablica 1D) liczb.

Przykład:

>> Given_a_set_of_integers=@(findthe)sum(all(1)*findthe)
Given_a_set_of_integers = 
    @(findthe)sum(all(1)*findthe)

>> Given_a_set_of_integers([1 5 -6 2 4 5])
ans =
    11

3

O , 5

M] + o "Biorąc pod uwagę zestaw liczb całkowitych, znajdź w nim sumę wszystkich liczb całkowitych.

Liczby muszą być w systemie szesnastkowym i odwrotnym zapisie ujemnym:

  • -6 => 6_
  • -4 => 4_
  • -10 => A_

Wypróbuj online


1
Tak, link działa!
Maltysen

Ładne demo! Czy nie nazywa to jednak przesadą IDE?
kirbyfan64sos

@ kirbyfan64sos Całkowicie, ale chcę dodać więcej funkcji, takich jak podświetlanie składni i tak dalej. Na razie jest to tylko tłumacz.
faza

Myślę, że link do strony O esolangs byłby bardziej użyteczny.
mbomb007

@ mbomb007 Ale to jest strasznie nieaktualne; połowa rzeczy tam nie działa, a to tylko trochę udokumentowanego języka.
faza

3

K, 60 5

+/ / Given a set of integers, find the sum of all integers in it.

Zgaduję, ż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.


To nie jest tak, że używasz symboli, odległość Levenshteina to liczba dodawanych, usuwanych, zastępczych. więc masz 60 usunięć z oryginalnego ciągu.
Maltysen

To nie są symbole, tylko to, że twój kod jest tak krótki, że długość frazy - długość twojego kodu = 60. Ojej.

2
Wiesz, że możesz po prostu przewinąć w górę, aby uzyskać poprawną pisownię „Levenshtein”, prawda? ;)
Alex A.,

@AlexA. W ten sposób jest zabawniej. :)
kirbyfan64sos

2
Nie winię go. Musiałem sprawdzić pisownię około 10 razy, zanim ją po prostu wkleiłem.

3

F #, odległość 21

let ``Given a set of integers, find the sum of all integers in it`` x = Seq.sum x

Uwielbiam możliwość używania podwójnych tyknięć, aby nadać funkcji nazwę ze spacjami.

Stosowanie:

[1;2;3] |> ``Given a set of integers, find the sum of all integers in it`` |> printfn "%i"

6


3

Pip, odległość 3

Dołączenie do klubu trywialnych odpowiedzi na pytania dotyczące golfa bez komentarzy ...

Given a set of integers, find the sum of all integers in $+g

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 listy g, 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, fdziałałem bez narzekań, ponieważ fodnosi 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ę, że s, focenia {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 Gjeszcze niczego nie przypisałem . Jeśli w jakiejś przyszłej wersji Gutworzę operator binarny lub trójskładnikowy, konieczna byłaby wersja na odległość 4. Używanie givenzamiast Givendziałałoby ładnie.


3

Haskell, odległość 11

Bez komentarza!

const sum"Given a set of integers, find the sum of all integers in it."

Stosowanie:

> const sum"Given a set of integers, find the sum of all integers in it." $ [1..10]
55

3

Cubix , Odległość 9

@ivOn a ;et I+ i?tegers, fu;d <he sum of all integers in it.

Wypróbuj online!

To owija się w kostkę

      @ i v
      O n a
      ; e t
I + i ? t e g e r s , f
u ; d < h e s u m o f a
l l i n t e g e r s i n
      i t .
      . . .
      . . .

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


1

PHP4.1, odległość 25

Ten jest dość długi i naprawdę spóźniony.

Ale tak czy inaczej, oto:

<?=$n_a_set_of_integers_fi=array_sum($f_all_integers_in_i);

Aby to zadziałało, wystarczy przekazać mu tablicę podczas POST / GET / COOKIE / session, używając klucza f_all_integers_in_i.


2
Bez komentarza trolling yay!
Anubian Noob,

1

Pyt , odległość 1

Given a set of integers, find the Ʃum of all integers in it.

Wszystkie znaki alfanumeryczne nie występują w Pythonie, a suma listy zajmuje tylko jeden znak: Ʃ

Wypróbuj online!


0

C ++ 17, dystans 44 29

Variadic Generic Lambda FTW

[](auto...t){return(t+...);}//the sum of all integers in it.

Poprzednie rozwiązanie

template<class...t>int s(t...l){return(...+l);}//gers in it.



0

Ly , wynik 4

&+#Given a set of integers, find the sum of all integers in it.

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ą.


0

dc, 14

?[+z1 <f]d  sf xp#egers, find the sum of all integers in it.

komentarze:

?                   # read numbers
 [                  # start macro
  +                 # add up last two things on stack
   z1 <f            # if stack size is more than 1, execute macro at register 'f'
        ]           # end macro
         d          # dupe it
            sf      # saving one copy to register 'f'
               x    # and executing another
                p   # printing result

TIO

narzeka, że ​​stos jest pusty, jeśli wpiszesz 1 liczbę, ale nadal działa, a usunięcie 0 zapisuje 2 różnice.


0

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

?[Sum(a:a)] 'f integers, find the sum of all integers in it.

0

Brain-Flak , 20

(([]){[{}]{}([])}{})ers, find the sum of all integers in it.

Wypróbuj online!

Wyjaśnienie

Ponieważ w oryginalnym tekście nie ma nawiasów, sprowadza się to do problemu 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

([])    #{ Push stack height }
(       #{ Start Push }
{       #{ Loop until zero }
 <{}>   #{ Silently Pop the last height }
 {}     #{ Grab a value from the stack }
 <([])> #{ Silently push the stack height again }
}       #{ End loop }
{}      #{ Remove last stack height }
)       #{ Push the result }

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 nkażdym razem. Więc oto sztuczka, już mamy nlokalizację, po prostu przesuwamy ją do pchnięcia, aby zrównoważyć rzeczy.

(([]){[{}]{}([])}{})

1
Chciałem tylko pogratulować twojej 2^8odpowiedzi ppcg
Taylor Scott,


0

Galaretka , odległość: 2

Given a set of integers, find the sum of all integers in it.
S

Wypróbuj online!

Galaretka ocenia tylko główny link (ostatnia linia), a jawne polecenia uruchamiają inne linki (inne linie).

Ostatni wiersz zawiera Ssumę danych wejściowych.

Pierwszy wiersz nie zostanie wykonany, ponieważ nie ma odniesienia do niego w głównym łączu.


0

Kłapnięcie! 4.2.2.9 (+ Narzędzia), składnia scratchblocks3, odległość 35

To jest funkcja. integers, find the sum of all intejest wejściem.

for each(et)of(integers, find the sum of all inte
change[s v]by(et
end
report(s

Jak to się bierze? Czy dane wejściowe należy wkleić do kodu? Zwykle nie zezwalamy na tego rodzaju dane wejściowe, ale raczej wymagamy, aby dane wejściowe były pobierane ze STDIN lub, jeśli przesłanie jest funkcją, że jest przekazywane jako argument.
Wheat Wizard

Nie, to funkcja. integers, find the sum of all intejest argumentem, po prostu nie różni się od zwykłych zmiennych w składni scratchblocks3, dlatego wyjaśniłem
Silas Reel
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.