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/
Antworten:
Python, Abstand 3
Dies ergibt die eingebaute Funktion
sum
, die eine Menge wie folgt summieren kannsum({3,5,7})==17
. Die restlichen Teile werden kommentiert. Dies hat Abstand 3, mit 3 Änderungen:#
sum
mit#
quelle
Julia, Entfernung
2726Keine Kommentare!
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.quelle
Given=(a;set;of=integer; find;th;[sum,of,all,integer, in][])
- "Given" funktioniert dann immer noch genauso, hat aber einen Abstand von 18.APL, Abstand
633 Entfernungen gespart ...? danke an Dennis!
Dies summiert ein bestimmtes Array (
+/
). Der Rest des Satzes wird mit einem Kommentar (⍝
) am Ende angefügt .quelle
{
und nicht⍵}
.+/
ist bereits eine gültige Funktion.GolfScript, 5
Dies ist ein vollständiges Programm, das keine Kommentare verwendet (aber viele Noops).
Versuchen Sie es online in Web GolfScript .
quelle
R, Abstand
373634Ohne Kommentare :)
Beachten Sie, dass am Anfang ein Leerzeichen steht.
quelle
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 die6
erwartete Ausgabe .Leider
Sum
erledigt die Mathematica- Funktion die Aufgabe in dieser Frage nicht und erfordert daher eine größere Anzahl von Bytes.quelle
Given a set of integers find the sum of all *0+Total@Input[]
Abstand 14Java -
4341Ich habe es versucht.
Java: P.
quelle
RProgN , Abstand 2.
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!
quelle
CJam,
765Dies 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.
quelle
Matlab, Entfernung
2928Ohne 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:
quelle
O , 5
Zahlen müssen hexadezimal und in umgekehrter negativer Schreibweise angegeben werden:
Probieren Sie es online aus
quelle
K
60,5Ich 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.
quelle
F #, Abstand 21
Ich mag die Möglichkeit, doppelte Häkchen zu verwenden, um einer Funktion einen Namen mit Leerzeichen zu geben.
Verwendungszweck:
quelle
Pip, Abstand 3
Beitritt zum Club der trivialen No-Comments-But-Lots-No-Ops Golflang-Antworten ...
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 eingeleseng
, 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, f
klaglosf
funktioniert 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 denkes, f
bewertet 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
G
habe. Wenn ich in einer zukünftigen VersionG
einen binären oder ternären Operator mache , wäre eine Distanz-4-Version notwendig. Verwendengiven
stattGiven
würde gut funktionieren.quelle
Haskell, Entfernung 11
Keine Kommentare!
Verwendungszweck:
quelle
Cubix , Entfernung 9
Probieren Sie es online!
Dies wickelt sich auf den Würfel
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 Startquelle
Pyth - 4
Setzt einfach den eigentlichen Code
sQ
vor die Zeichenkette, ohne Leerzeichen.Probieren Sie es hier online aus .
quelle
PHP4.1, Abstand 25
Dieser ist ziemlich lang und ziemlich spät dran.
Aber hier ist es:
Damit dies funktioniert, müssen Sie ihm lediglich mit der Taste ein Array über POST / GET / COOKIE / session übergeben
f_all_integers_in_i
.quelle
Pyt , Abstand 1
Alle alphanumerischen Zeichen sind in Pyt No-Ops, und die Summe einer Liste besteht nur aus einem Zeichen: Ʃ
Probieren Sie es online!
quelle
C ++ 17, Abstand
4429Variadic Generisches Lambda FTW
Vorherige Lösung
quelle
05AB1E, Abstand 3
Probieren Sie es online!
quelle
Pyke , Punktzahl 3
Probieren Sie es hier aus!
quelle
Ly , 4 Punkte
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.quelle
dc, 14
Bemerkungen:
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.
quelle
Excel VBA, Entfernung: 11
Anonyme VBE-
[a:a]
Direktfensterfunktion , die Eingaben aus dem Bereich des ActiveSheet-Objekts entgegennimmt und an das VBE-Direktfenster ausgibtquelle
Brain-Flak , 20
Probieren Sie es online!
Erläuterung
Da es im Originaltext keine Klammern gibt, führt dies zu einem Code-Golf- 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
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
n
jedes Mal weg . Also hier ist der Trick, wir haben bereits einenn
Standort, wir verschieben ihn einfach in den Push, um die Dinge auszugleichen.quelle
2^8
Ich wollte Ihnen nur zu Ihrer Antwort gratulierenVoraus , 17
Probieren Sie es online!
quelle
Gelee , Abstand: 2
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.
quelle
Schnapp! 4.2.2.9 (+ Tools), Scratchblocks3-Syntax, Abstand 35
Dies ist eine Funktion.
integers, find the sum of all inte
ist der Eingang.quelle
integers, find the sum of all inte
ist ein Argument, es unterscheidet sich nur nicht von regulären Variablen in der Scratchblocks3-Syntax, weshalb ich es klargestellt habe