Codice vicino alla sfida: somma di numeri interi


39

Questa è una semplice sfida: data una sequenza di numeri interi, trova la somma di tutti i numeri interi in essa.

Ma con una svolta. Il tuo punteggio è la distanza di Levenshtein tra il tuo codice e la seguente frase (La sfida):

Dato un insieme di numeri interi, trova la somma di tutti i numeri interi in essa.

Si può presumere che non ci siano newline o spazi finali nell'input.

Esempio di input / output:

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

Un calcolatore online per la distanza Levenshtein è disponibile qui: http://planetcalc.com/1721/


4
Non posso fare a meno di pensare a questo
JohnE,

7
Caspita, tanta creatività ragazzi xD ... tosse abusi commenta tosse

1
Pensi che questo dovrebbe avere un seguito con un'altra sfida ma lo stesso preside della distanza Levenshtein? Non sono sicuro se questo è considerato degno del seguito o no.

1
@NicoA sicuramente! Forse l'unico problema è che questo compito è stato troppo facile.
Maltysen,

2
@NicoA Se lo fai, fai molta attenzione nel definire ciò che non è permesso. Molte lingue consentono alle stringhe non elaborate di fluttuare, ad esempio.
xnor

Risposte:


58

Python, distanza 3

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

Questo dà la funzione integrata sum, che può sommare un set come sum({3,5,7})==17. Le parti rimanenti sono commentate. Questo ha distanza 3, con 3 modifiche:

  • Aggiungi l'iniziale #
  • Aggiungi una nuova riga
  • Sostituisci lo spazio dopo sumcon#

3
Un'altra utile caratteristica della meravigliosa sintassi inglese
qwr

1
La mia unica domanda è come usarlo dal momento che questo non è un programma completo e (in teoria) non hai nemmeno bisogno nel tuo codice perché è incorporato
Decadimento Beta

1
@BetaDecay Funziona a causa delle regole che le funzioni sono consentite per impostazione predefinita e che i letterali delle funzioni sono consentiti per le funzioni .
xnor

54

Julia, distanza 27 26

Non ci sono commenti!

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

Questo crea una funzione chiamata Givenche accetta un array e restituisce la somma dei suoi elementi. Poiché molti builtin di Julia hanno nomi rilevanti (ma non sono rilevanti ai fini del calcolo qui), possiamo semplicemente elencarne alcuni delimitati da punti e virgola. Finché non sono le ultime cose elencate, non verranno restituite. L'ultima parte crea effettivamente un array contenente la somma e tre funzioni e seleziona il primo elemento, la somma.


Nessun commento è sicuramente più nello spirito della sfida. Buon lavoro.
Christopher Wirt,

@ChristopherWirt Grazie! :)
Alex A.

4
Potrei suggerire un miglioramento? Given=(a;set;of=integer; find;th;[sum,of,all,integer, in][])- "Dato" funziona ancora allo stesso modo, ma questo ha una distanza di 18 anni.
Glen O

22

APL, distanza 6 3

Salvato 3 distanze ...? grazie a Dennis!

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

Questo somma un dato array ( +/). Il resto della frase viene aggiunto alla fine usando un commento ( ).


1
Non hai bisogno {e ⍵}. +/è già una funzione valida.
Dennis,

@Dennis Fantastico, grazie mille per il suggerimento!
Alex A.

10

GolfScript, 5

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

Questo è un programma completo che non utilizza commenti (ma molti noops).

Provalo online in Web GolfScript .


9

R, Distanza 37 36 34

Senza usare commenti :)

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

Nota che c'è uno spazio all'inizio.


8

Mathematica, distanza 17

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

Non utilizza alcun commento o no-op, ma invece dichiara tutte le parole come variabili e quindi le elimina moltiplicando per zero.

Ha anche il vantaggio di essere l'unica risposta che in realtà accetta un set di numeri interi come input.

L'input {1,2,3}fornisce l'output 6come previsto.

Sfortunatamente, la Sumfunzione Mathematica non svolge il compito nella domanda, quindi richiede un numero maggiore di byte.


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

6

Java - 43 41

Provai.

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.


Penso che puoi cambiare il tuo argomento nella funzione da aar per salvare una distanza di modifica.
Element118,

@ Element118 Bella cattura. Ho anche cambiato il tipo di ritorno mentre ero lì per avere un migliore allineamento del nome del metodo.
Anubian Noob,

2
non potresti usare "int a_" come inizio dello snippet? (uno spazio prima di int e 2 dopo di esso prima di a_
masterX244,

6

RProgN , Distanza 2.

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

In RProgN, a, set, find e sum sono tutti comandi. Tutto il resto viene ignorato per impostazione predefinita nella sintassi. a spinge l'alfabeto in pila, il che farà fallire la somma. Set non ha mai abbastanza argomenti, quindi non riesce mai, errore. Trova ha un numero errato di argomenti o prova a confrontare l'alfabeto con lo stack di input, che non funziona.

a e set possono essere entrambi 'riparati' rimuovendo lo spazio tra allora, aset non è una funzione, quindi viene ignorato. Trova ha solo un carattere aggiuntivo inserito all'inizio, che lo rende anche non riconosciuto e ignorato. È rimasta solo la somma, che somma comodamente il contenuto dello stack di input.

Infine, RProgN potrebbe vincere qualcosa!

Provalo online!


4

CJam, 7 6 5

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

Questa è una funzione anonima che estrae un array dallo stack e in cambio lascia un numero intero.

Grazie a @AboveFire per abbreviare la distanza di 1.

Provalo online.


4

Matlab, distanza 29 28

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

Senza usare commenti :-)

Il codice ha la forma di una funzione anonima. Suppongo che l'input sia un vettore (1D-array) di numeri.

Esempio:

>> 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 "Dato un insieme di numeri interi, trova la somma di tutti i numeri interi in essa.

I numeri devono essere in esadecimali e in notazione negativa inversa:

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

Provalo online


1
Yay il link funziona!
Maltysen,

Bella demo! Ma non lo chiama un tipo IDE di eccessivo?
Kirbyfan64sos,

@ kirbyfan64sos Totalmente, ma voglio aggiungere più funzionalità come l'evidenziazione della sintassi e quant'altro. Per ora, è solo un interprete.
fase

Penso che un link alla pagina di O esolangs sarebbe più utile.
mbomb007,

@ mbomb007 Ma è terribilmente obsoleto; metà delle cose non funzionano, e questo è solo un po 'della lingua documentata.
fase

3

K, 60 5

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

Immagino che i simboli NON vadano bene con la distanza di Leve ...

Hahaha. In origine, ho avuto alcuna cosa la distanza LeveXXX era, così ho preso 60. Poi, grazie a osservazioni utili, è sceso a 5.


Non sta usando simboli, la distanza di Levenshtein è # di aggiunte, cancellazioni, sostituzioni. quindi hai 60 cancellazioni dalla stringa originale.
Maltysen,

Non sono simboli, è solo che il tuo codice è così breve che la lunghezza della frase - la lunghezza del tuo codice = 60. Ahi.

2
Sai che puoi semplicemente scorrere verso l'alto per ottenere l'ortografia corretta di "Levenshtein", giusto? ;)
Alex A.

@AlexA. È più divertente in questo modo. :)
kirbyfan64sos,

2
Non lo biasimo. Ho dovuto controllare l'ortografia circa 10 volte prima di copiarlo e incollarlo.

3

F #, distanza 21

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

Devi amare la possibilità di usare i doppi segni di spunta per assegnare un nome a una funzione con spazi.

Uso:

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

6


3

Pip, distanza 3

Entrare a far parte del club di banali risposte a golflang no-comment-but-many-no-ops ...

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

Repository GitHub per Pip

Il codice praticamente documenta se stesso; può esseres/in/using/ per una descrizione più accurata. I numeri interi forniti come argomenti della riga di comando vengono letti nell'elenco g, che viene qui piegato in aggiunta e il risultato viene stampato automaticamente. Quasi tutto il resto sono solo variabili, che non sono operative.

All'inizio sono rimasto un po 'sorpreso dal fatto che abbia s, ffunzionato senza lamentarsi, dal momento che si friferisce alla funzione principale e prendere la portata di un blocco di codice non ha senso. Ma poi ho capito: l' ,operatore di intervallo, quando riceve un argomento di funzione, costruisce semplicemente un'altra funzione (come fanno molti operatori in Pip). Quindi pensos, f valuti {Given a set of integers, find the sum of all integers in " ",$+g}. (Che viene quindi scartato comunque.)

Un ultimo punto: questo codice funziona con l'attuale versione di Pip, a cui non ho ancora assegnato Gnulla. Se in qualche versione futura realizzassi Gun operatore binario o ternario, sarebbe necessaria una versione di distanza 4. Usando giveninvece di Givenfunzionerebbe bene.


3

Haskell, distanza 11

Non ci sono commenti!

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

Uso:

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

3

Cubix , Distanza 9

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

Provalo online!

Questo si avvolge sul cubo

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

Il codice operativo è

  • I+i Inserisci un numero intero, aggiungi a TOS quindi inserisci un carattere
  • ?Verifica il valore del carattere. Reindirizza a sinistra per -1 (fine dell'input) o a destra per qualsiasi altra cosa (0 non può essere inserito)
    • ;O@ pop TOS, somma e uscita
    • <;u reindirizzare, pop TOS e u-turn all'inizio

2

Pyth - 4

Inserisce semplicemente il codice effettivo, sQdavanti alla stringa non aperta da uno spazio.

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

Provalo online qui .


1

PHP4.1, distanza 25

Questo è piuttosto lungo e molto in ritardo nella corsa.

Ma comunque, eccolo qui:

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

Per far funzionare tutto ciò, è sufficiente passare un array su POST / GET / COOKIE / session, usando il tasto f_all_integers_in_i.


2
Nessun commento traina yay!
Anubian Noob,

1

Pyt , distanza 1

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

Tutti i caratteri alfanumerici non sono attivi in ​​Pyt e la somma di un elenco accetta un solo carattere: Ʃ

Provalo online!


0

C ++ 17, distanza 44 29

FTD Lambda generico variabile

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

Soluzione precedente

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



0

Ly , punteggio 4

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

Nota la nuova riga finale.

Provalo online!

Il codice è piuttosto autoesplicativo. &+è l'operatore sommatore di Ly, mentre #è un commento. È un peccato che devo includere una nuova riga finale a causa del fatto che terminare un programma con una riga di commento "commenterà" l'output implicito di Ly, che in realtà è un bug nell'interprete che sto chiamando una funzione.


0

dc, 14

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

Commenti:

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

si lamenta che lo stack è vuoto se si inserisce 1 numero, ma funziona ancora e la rimozione di 0 salva 2 diff.


0

Excel VBA, Distanza: 11

Funzione di finestra immediata VBE anonima che accetta input dall'intervallo [a:a]sull'oggetto ActiveSheet e restituisce alla finestra immediata 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.

Provalo online!

Spiegazione

Dal momento che non ci sono parentesi nel testo originale, questo si riduce a un problema di in Brain-Flak. Ma ciò non rende ancora banale questa risposta, come raramente le risposte in Brain-Flak lo sono.

La prima intuizione sarebbe probabilmente il seguente codice

({{}})

Che funziona ... a meno che non ci sia uno zero nello stack, nel qual caso somma solo fino allo zero. Per ovviare a questo problema dobbiamo usare un'altezza dello stack per verificare che lo stack non sia vuoto. Questo può essere impostato in questo modo

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

Questo funziona, ma c'è qualcosa che non va. Continuiamo a mettere a tacere i pop e le spinte nei loop ma sono quasi uguali, quindi dovrebbe esserci un modo per annullarli. Se ci proviamo

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

Finiamo nogni volta. Quindi ecco il trucco, abbiamo già un nsito in giro, lo spostiamo semplicemente nella spinta per bilanciare le cose.

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

1
Volevo solo congratularmi con te per la tua 2^8risposta in ppcg
Taylor Scott,


0

Gelatina , Distanza: 2

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

Provalo online!

Jelly valuta solo il collegamento principale (l'ultima riga) e comandi espliciti eseguiranno altri collegamenti (altre righe).

L'ultima riga ha S, che somma l'input.

La prima riga non viene eseguita perché non vi è alcun riferimento ad essa nel collegamento principale.


0

Snap! 4.2.2.9 (+ Strumenti), sintassi scratchblocks3, distanza 35

Questa è una funzione integers, find the sum of all inteè l'input.

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

In che modo questo richiede input? Si suppone che l'input sia stato incollato nel codice? Di solito non permettiamo quel tipo di input ma piuttosto richiediamo che l'input sia preso da STDIN o che se l'invio è una funzione, che sia passato come argomento.
Wheat Wizard

No, è una funzione. integers, find the sum of all inteè un argomento, non si distingue dalle variabili normali nella sintassi di scratchblocks3, motivo per cui ho chiarito
Silas Reel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.