Code in der Nähe der Herausforderung: Summe der ganzen Zahlen


39

Dies ist eine einfache Herausforderung: Ermitteln Sie bei einer gegebenen Folge von Ganzzahlen die Summe aller Ganzzahlen.

Aber mit einer Wendung. Ihre Punktzahl ist die Levenshtein-Distanz zwischen Ihrem Code und der folgenden Phrase (Die Herausforderung):

Ermitteln Sie bei einer gegebenen Anzahl von Ganzzahlen die Summe aller darin enthaltenen Ganzzahlen.

Sie können davon ausgehen, dass die Eingabe keine Zeilenumbrüche oder Leerzeichen enthält.

Beispiel Ein- / Ausgabe:

Input: 1 5 -6 2 4 5
Output: 11
Input: 1 -2 10
Output: 9

Einen Online-Rechner für die Levenshtein-Entfernung finden Sie hier: http://planetcalc.com/1721/


4
Ich kann nicht umhin zu denken , von diesem
JohnE

7
Wow, so viel Kreativität Jungs xD ... Husten Kommentar Missbraucher Husten

1
Denken Sie, dass dies eine Fortsetzung mit einer anderen Herausforderung haben sollte, aber dem gleichen Levenshtein-Distanzprinzip? Ich bin mir nicht sicher, ob dies eine Fortsetzung wert ist oder nicht.

1
@NicoA auf jeden Fall! Vielleicht ist das einzige Problem, dass diese Aufgabe zu einfach war.
Maltysen

2
@NicoA Wenn Sie dies tun, müssen Sie sehr vorsichtig definieren, was nicht zulässig ist. In vielen Sprachen können beispielsweise rohe Zeichenfolgen verschoben werden.
XNOR

Antworten:


58

Python, Abstand 3

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

Dies ergibt die eingebaute Funktion sum, die eine Menge wie folgt summieren kann sum({3,5,7})==17. Die restlichen Teile werden kommentiert. Dies hat Abstand 3, mit 3 Änderungen:

  • Fügen Sie die Initiale hinzu #
  • Fügen Sie eine neue Zeile hinzu
  • Ersetzen Sie das Leerzeichen danach summit#

3
Ein weiteres nützliches Merkmal der wunderbaren englischen Syntax
qwr

1
Meine einzige Frage ist , wie es zu verwenden , da dies keine vollständiges Programm ist, und (in der Theorie) , die Sie nicht einmal in Ihrem Code benötigen , weil es eine eingebaut ist
Beta Decay

1
@BetaDecay Dies funktioniert aufgrund der Regeln, nach denen Funktionen standardmäßig zulässig sind und Funktionsliterale für Funktionen zulässig sind .
Xnor

54

Julia, Entfernung 27 26

Keine Kommentare!

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

Dadurch wird eine Funktion erstellt Given, die ein Array akzeptiert und die Summe seiner Elemente zurückgibt. Da viele Julia-Buildins relevante Namen haben (für die Berechnung hier jedoch nicht relevant sind), können wir nur einige mit Semikolons getrennte Namen auflisten. Solange sie nicht als letztes aufgeführt sind, werden sie nicht zurückgegeben. Der letzte Teil erstellt tatsächlich ein Array, das die Summe und drei Funktionen enthält, und wählt das erste Element aus, die Summe.


Kein Kommentar ist definitiv mehr im Sinne der Herausforderung. Gut gemacht.
Christopher Wirt

@ChristopherWirt Danke! :)
Alex A.

4
Darf ich eine Verbesserung vorschlagen? Given=(a;set;of=integer; find;th;[sum,of,all,integer, in][])- "Given" funktioniert dann immer noch genauso, hat aber einen Abstand von 18.
Glen O

22

APL, Abstand 6 3

3 Entfernungen gespart ...? danke an Dennis!

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

Dies summiert ein bestimmtes Array ( +/). Der Rest des Satzes wird mit einem Kommentar ( ) am Ende angefügt .


1
Du brauchst {und nicht ⍵}. +/ist bereits eine gültige Funktion.
Dennis

@ Tennis Super, vielen Dank für den Vorschlag!
Alex A.

10

GolfScript, 5

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

Dies ist ein vollständiges Programm, das keine Kommentare verwendet (aber viele Noops).

Versuchen Sie es online in Web GolfScript .


9

R, Abstand 37 36 34

Ohne Kommentare :)

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

Beachten Sie, dass am Anfang ein Leerzeichen steht.


8

Mathematica, Entfernung 17

Given a set of integers find the sum of all integers in it*0+Total@Input[]

Es werden keine Kommentare oder No-Ops verwendet, sondern alle Wörter als Variablen deklariert und dann durch Multiplikation mit Null entfernt.

Es hat auch den Vorteil, dass es die einzige Antwort ist, die tatsächlich eine Reihe von ganzen Zahlen als Eingabe verwendet.

Die Eingabe {1,2,3}liefert die 6erwartete Ausgabe .

Leider Sumerledigt die Mathematica- Funktion die Aufgabe in dieser Frage nicht und erfordert daher eine größere Anzahl von Bytes.


Given a set of integers find the sum of all *0+Total@Input[]Abstand 14
Undichte Nonne

6

Java - 43 41

Ich habe es versucht.

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.


Ich denke, Sie können Ihr Argument in der Funktion von a nach r ändern, um eine Bearbeitungsentfernung zu speichern.
Element118

@ Element118 Schöner Fang. Änderte auch den Rückgabetyp, während ich dabei war, um den Methodennamen besser ausrichten zu können.
Anubian Noob

2
Könnten Sie nicht "int a_" als Anfang des Snippets verwenden? (Ein Leerzeichen vor dem int und 2 danach vor dem a_
masterX244 15.11.16

6

RProgN , Abstand 2.

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

In RProgN sind a, set, find und sum alle Befehle. Alles andere wird standardmäßig in der Syntax ignoriert. a schiebt das Alphabet auf den Stapel, wodurch die Summe ausfällt. Set hat nie genug Argumente, schlägt also immer fehl und ist fehlerhaft. Find hat entweder die falsche Anzahl von Argumenten oder versucht, das Alphabet mit dem Eingabestapel zu vergleichen, was nicht funktioniert.

a und set können beide 'repariert' werden, indem das Leerzeichen dazwischen entfernt wird. aset ist keine Funktion und wird daher ignoriert. Find fügt am Anfang nur ein zusätzliches Zeichen ein, wodurch es ebenfalls nicht erkannt und ignoriert wird. Es bleibt nur die Summe übrig, die den Inhalt des Eingabestapels bequem summiert.

Schließlich könnte RProgN etwas gewinnen!

Probieren Sie es online!


4

CJam, 7 6 5

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

Dies ist eine anonyme Funktion, die ein Array aus dem Stapel entfernt und eine Ganzzahl zurückgibt.

Vielen Dank an @AboveFire für die Verkürzung der Distanz um 1.

Probieren Sie es online aus.


4

Matlab, Entfernung 29 28

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

Ohne irgendwelche Kommentare zu verwenden :-)

Der Code hat die Form einer anonymen Funktion. Ich gehe davon aus, dass die Eingabe ein Vektor (1D-Array) von Zahlen ist.

Beispiel:

>> 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 "Ermitteln Sie bei einer gegebenen Anzahl von Ganzzahlen die Summe aller Ganzzahlen.

Zahlen müssen hexadezimal und in umgekehrter negativer Schreibweise angegeben werden:

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

Probieren Sie es online aus


1
Ja, der Link funktioniert!
Maltysen

Schöne Demo! Ist das nicht eine Art Overkill für IDE?
kirbyfan64sos

@ kirbyfan64sos Völlig, aber ich möchte weitere Funktionen wie Syntax-Hervorhebung und so weiter hinzufügen. Im Moment ist es nur ein Dolmetscher.
Phase

Ich denke, ein Link zur O esolangs-Seite wäre nützlicher.
mbomb007

@ mbomb007 Aber das ist schrecklich veraltet; Die Hälfte der Dinge dort funktioniert nicht, und das ist nur ein kleiner Teil der dokumentierten Sprache.
Phase

3

K 60, 5

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

Ich vermute, Symbole passen NICHT gut zum Leve - unabhängig von der Entfernung ...

Hahaha. Ursprünglich hatte ich keine LeveXXX-Distanz, also bekam ich 60. Dank hilfreicher Kommentare sank die Distanz auf 5.


Es ist nicht so, dass Sie Symbole verwenden, Levenshtein Abstand ist # von Hinzufügungen, Löschungen, Ersetzungen. Sie haben also 60 Löschungen von der ursprünglichen Zeichenfolge.
Maltysen

Es sind keine Symbole, es ist nur so, dass Ihr Code so kurz ist, dass die Länge der Phrase - die Länge Ihres Codes = 60. Autsch.

2
Sie können einfach nach oben scrollen, um die korrekte Schreibweise von "Levenshtein" zu erhalten, oder? ;)
Alex A.

@AlexA. Auf diese Weise ist es lustiger. :)
kirbyfan64sos

2
Ich beschuldige ihn nicht. Ich musste die Rechtschreibung ungefähr 10 Mal überprüfen, bevor ich sie einfach kopierte.

3

F #, Abstand 21

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

Ich mag die Möglichkeit, doppelte Häkchen zu verwenden, um einer Funktion einen Namen mit Leerzeichen zu geben.

Verwendungszweck:

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

6


3

Pip, Abstand 3

Beitritt zum Club der trivialen No-Comments-But-Lots-No-Ops Golflang-Antworten ...

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

GitHub-Repository für Pip

Der Code dokumentiert sich praktisch von selbst; Vielleicht s/in/using/für eine genauere Beschreibung. Ganzzahlen, die als Kommandozeilenargumente angegeben werden, werden in die Liste eingelesen g, die hier zusätzlich gefaltet und das Ergebnis automatisch ausgedruckt wird. Fast alles andere sind nur Variablen, die keine Operationen sind.

Ich war anfangs ein bisschen überrascht, dass das s, fklaglos ffunktioniert hat , da sich das auf die Hauptfunktion bezieht und die Reichweite eines Codeblocks nicht sinnvoll ist. Aber dann wurde mir klar: Der ,Bereichsoperator konstruiert, wenn er ein Funktionsargument erhält, einfach eine andere Funktion (wie viele Operatoren in Pip). Also ich denke s, fbewertet zu {Given a set of integers, find the sum of all integers in " ",$+g}. (Was dann sowieso weggeworfen wird.)

Ein letzter Punkt: Dieser Code funktioniert mit der aktuellen Version von Pip, in der ich noch nichts zugewiesen Ghabe. Wenn ich in einer zukünftigen Version Geinen binären oder ternären Operator mache , wäre eine Distanz-4-Version notwendig. Verwenden givenstatt Givenwürde gut funktionieren.


3

Haskell, Entfernung 11

Keine Kommentare!

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

Verwendungszweck:

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

3

Cubix , Entfernung 9

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

Probieren Sie es online!

Dies wickelt sich auf den Würfel

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

Der operative Code lautet

  • I+i Geben Sie eine Ganzzahl ein, fügen Sie sie zu TOS hinzu und geben Sie dann ein Zeichen ein
  • ?Testzeichenwert. Weiterleiten nach links für -1 (Ende der Eingabe) oder nach rechts für etwas anderes (0 kann nicht eingegeben werden)
    • ;O@ Pop TOS, Ausgangssumme und beenden
    • <;u umleiten, Pop-TOS und Kehrtwende auf den Start


1

PHP4.1, Abstand 25

Dieser ist ziemlich lang und ziemlich spät dran.

Aber hier ist es:

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

Damit dies funktioniert, müssen Sie ihm lediglich mit der Taste ein Array über POST / GET / COOKIE / session übergeben f_all_integers_in_i.


2
Kein Kommentar trolling yay!
Anubian Noob

1

Pyt , Abstand 1

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

Alle alphanumerischen Zeichen sind in Pyt No-Ops, und die Summe einer Liste besteht nur aus einem Zeichen: Ʃ

Probieren Sie es online!


0

C ++ 17, Abstand 44 29

Variadic Generisches Lambda FTW

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

Vorherige Lösung

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



0

Ly , 4 Punkte

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

Beachten Sie den abschließenden Zeilenumbruch.

Probieren Sie es online!

Der Code ist ziemlich selbsterklärend. &+ist Lys Summierungsoperator, während #es sich um einen Kommentar handelt. Es ist bedauerlich, dass ich eine abschließende neue Zeile einfügen muss, da das Beenden eines Programms mit einer Kommentarzeile Lys implizite Ausgabe "auskommentiert", was eigentlich ein Fehler im Interpreter ist, den ich ein Feature aufrufe.


0

dc, 14

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

Bemerkungen:

?                   # 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

Es beschwert sich, dass der Stapel leer ist, wenn Sie eine Zahl eingeben, funktioniert aber trotzdem, und das Entfernen von 0 spart 2 Diff.


0

Excel VBA, Entfernung: 11

Anonyme VBE- [a:a]Direktfensterfunktion , die Eingaben aus dem Bereich des ActiveSheet-Objekts entgegennimmt und an das VBE-Direktfenster ausgibt

?[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.

Probieren Sie es online!

Erläuterung

Da es im Originaltext keine Klammern gibt, führt dies zu einem Problem in Brain-Flak. Aber das macht diese Antwort immer noch nicht trivial, wie es bei Brain-Flak selten der Fall ist.

Die erste Intuition wäre wahrscheinlich der folgende Code

({{}})

Was funktioniert ... es sei denn, es gibt eine Null auf dem Stapel. In diesem Fall summiert es nur bis zur Null. Um dieses Problem zu umgehen, müssen wir eine Stapelhöhe verwenden, um zu überprüfen, ob der Stapel nicht leer ist. Dies kann so eingestellt werden

([])    #{ 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 }

Dieser funktioniert, aber irgendetwas stimmt nicht. Wir bringen die Pops und Pushs in den Loops immer wieder zum Schweigen, aber sie sind fast gleich groß, daher sollte es eine Möglichkeit geben, sie aufzuheben. Wenn wir es versuchen

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

Wir landen njedes Mal weg . Also hier ist der Trick, wir haben bereits einen nStandort, wir verschieben ihn einfach in den Push, um die Dinge auszugleichen.

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

1
2^8Ich wollte Ihnen nur zu Ihrer Antwort gratulieren
Taylor Scott


0

Gelee , Abstand: 2

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

Probieren Sie es online!

Jelly wertet nur den Hauptlink (die letzte Zeile) aus und explizite Befehle führen andere Links (andere Zeilen) aus.

Die letzte Zeile hat S, welche die Eingabe summiert.

Die erste Zeile wird nicht ausgeführt, da im Hauptlink kein Verweis darauf vorhanden ist.


0

Schnapp! 4.2.2.9 (+ Tools), Scratchblocks3-Syntax, Abstand 35

Dies ist eine Funktion. integers, find the sum of all inteist der Eingang.

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

Wie wird dies eingegeben? Soll die Eingabe in den Code eingefügt werden? Normalerweise lassen wir diese Art von Eingabe nicht zu, sondern verlangen, dass die Eingabe entweder aus STDIN stammt oder als Argument übergeben wird, wenn es sich bei Ihrer Übermittlung um eine Funktion handelt.
Weizen-Zauberer

Nein, es ist eine Funktion. integers, find the sum of all inteist ein Argument, es unterscheidet sich nur nicht von regulären Variablen in der Scratchblocks3-Syntax, weshalb ich es klargestellt habe
Silas Reel
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.