Código cercano al desafío: suma de enteros


39

Este es un desafío simple: dada una secuencia de enteros, encuentre la suma de todos los enteros que contiene.

Pero con un giro. Su puntaje es la distancia de Levenshtein entre su código y la siguiente frase (El desafío):

Dado un conjunto de enteros, encuentre la suma de todos los enteros en él.

Puede suponer que no hay líneas nuevas o espacios finales en la entrada.

Ejemplo de entrada / salida:

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

Puede encontrar una calculadora en línea para la distancia de Levenshtein aquí: http://planetcalc.com/1721/


44
No puedo evitar pensar en esto
JohnE

77
Wow, mucha creatividad chicos xD ... tos tos abusadores tos

1
¿Crees que esto debería tener una secuela con otro desafío pero el mismo director de distancia de Levenshtein? No estoy seguro si esto se considera digno de secuela o no.

1
@NicoA definitivamente! Quizás el único problema es que esta tarea fue demasiado fácil.
Maltysen

2
@NicoA Si lo hace, tenga mucho cuidado al definir lo que no está permitido. Muchos idiomas permiten que las cadenas sin formato floten, por ejemplo.
xnor

Respuestas:


58

Python, distancia 3

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

Esto proporciona la función incorporada sum, que puede sumar un conjunto como sum({3,5,7})==17. Las partes restantes se comentan. Esto tiene distancia 3, con 3 ediciones:

  • Añadir la inicial #
  • Agregar una nueva línea
  • Reemplace el espacio después sumcon#

3
Otra característica útil de la maravillosa sintaxis tipo inglés
qwr

1
Mi única pregunta es cómo usarlo, ya que este no es un programa completo, y (en teoría) ni siquiera necesita en su código porque está integrado
Decaimiento Beta

1
@BetaDecay Esto funciona debido a las reglas de que las funciones están permitidas de manera predeterminada y que los literales de función están permitidos para las funciones .
xnor

54

Julia, distancia 27 26

¡Sin comentarios!

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

Esto crea una función llamada Givenque acepta una matriz y devuelve la suma de sus elementos. Dado que muchos de los componentes integrados de Julia tienen nombres relevantes (pero son irrelevantes para el cálculo aquí), podemos enumerar algunos delimitados con punto y coma. Mientras no sean lo último en la lista, no serán devueltos. La última parte en realidad hace una matriz que contiene la suma y las tres funciones y selecciona el primer elemento, la suma.


Ningún comentario es definitivamente más dentro del espíritu del desafío. Buen trabajo.
Christopher Wirt

@ChristopherWirt ¡Gracias! :)
Alex A.

44
¿Puedo sugerir una mejora? Given=(a;set;of=integer; find;th;[sum,of,all,integer, in][])- "Dado" sigue funcionando igual, pero tiene una distancia de 18.
Glen O

22

APL, distancia 6 3

Guardado 3 distancias ...? gracias a Dennis!

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

Esto suma una matriz dada ( +/). El resto de la oración se agrega al final usando un comentario ( ).


1
No necesitas {y ⍵}. +/Ya es una función válida.
Dennis

@Dennis Awesome, muchas gracias por la sugerencia!
Alex A.

10

GolfScript, 5

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

Este es un programa completo que no utiliza comentarios (pero muchos noops).

Pruébelo en línea en Web GolfScript .


9

R, distancia 37 36 34

Sin usar comentarios :)

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

Tenga en cuenta que hay un espacio al principio.


8

Mathematica, distancia 17

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

No utiliza ningún comentario o no-ops, sino que declara todas las palabras como variables, y luego las elimina multiplicando por cero.

También tiene la ventaja de ser la única respuesta que realmente toma un conjunto de enteros como entrada.

La entrada {1,2,3}proporciona la salida 6como se esperaba.

Desafortunadamente, la Sumfunción Mathematica no hace la tarea en la pregunta, por lo tanto, necesita un mayor número de bytes.


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

6

Java - 43 41

Lo intenté.

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.


Creo que puede cambiar su argumento en la función de a a r para guardar una distancia de edición.
Element118

@ Element118 Buena captura. También cambié el tipo de retorno mientras estaba en él para que el nombre del método se alineara mejor.
Anubian Noob

2
¿no podrías usar "int a_" como principio del fragmento? (un espacio antes del int y 2 después del a_
masterX244

6

RProgN , Distancia 2.

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

En RProgN, a, set, find y sum son todos comandos. Todo lo demás se ignora por defecto en la sintaxis. A empuja el alfabeto a la pila, lo que hará que la suma falle. El conjunto nunca tiene suficientes argumentos, por lo que siempre falla y genera errores. Find tiene el número incorrecto de argumentos o intenta comparar el alfabeto con la pila de entrada, lo que no funciona.

ay set se pueden 'arreglar' eliminando el espacio entre ellos, ya que aset no es una función, por lo que se ignora. Buscar solo tiene un carácter extra insertado al principio, lo que hace que no sea reconocido e ignorado. Solo queda la suma, que convenientemente suma el contenido de la pila de entrada.

¡Finalmente, RProgN podría ganar algo!

Pruébalo en línea!


4

CJam, 7 6 5

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

Esta es una función anónima que saca una matriz de la pila y deja un entero a cambio.

Gracias a @AboveFire por acortar la distancia en 1.

Pruébalo en línea.


4

Matlab, distancia 29 28

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

Sin usar ningún comentario :-)

El código tiene la forma de una función anónima. Supongo que la entrada es un vector (matriz 1D) de números.

Ejemplo:

>> 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 "Dado un conjunto de enteros, encuentre la suma de todos los enteros en él.

Los números deben estar en hexadecimal y en notación negativa inversa:

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

Pruébalo en línea


1
¡Sí, el enlace funciona!
Maltysen

Bonita demo! Sin embargo, ¿no es llamarlo un tipo de exageración IDE?
kirbyfan64sos

@ kirbyfan64sos Totalmente, pero quiero agregar más funciones como el resaltado de sintaxis y otras cosas. Por ahora, es solo un intérprete.
fase

Creo que un enlace a la página de O esolangs sería más útil.
mbomb007

@ mbomb007 Pero eso está terriblemente desactualizado; la mitad de las cosas allí no funcionan, y eso es solo un poco del lenguaje documentado.
fase

3

K, 60 5

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

Supongo que los símbolos NO van bien con la distancia Leve, cualquiera que sea ...

Jajaja. Originalmente, tenía ninguna lo fue la distancia LeveXXX, así que tuve 60. Luego, gracias a los comentarios de votos, se redujo a 5.


No es que esté usando símbolos, la distancia de Levenshtein es # de adiciones, eliminaciones, sustituciones. entonces tienes 60 eliminaciones de la cadena original.
Maltysen

No son símbolos, es solo que su código es tan corto que la longitud de la frase - la longitud de su código = 60. Ouch.

2
Sabes que puedes desplazarte hacia arriba para obtener la ortografía correcta de "Levenshtein", ¿verdad? ;)
Alex A.

@AlexA. Es más divertido de esta manera. :)
kirbyfan64sos

2
No lo culpo. Tuve que revisar la ortografía unas 10 veces antes de copiarlo y pegarlo.

3

F #, distancia 21

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

Tengo que amar la capacidad de usar marcas dobles para dar un nombre a una función con espacios en ella.

Uso:

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

6 6


3

Pip, distancia 3

Unirse al club de respuestas triviales sin comentarios pero con muchas opciones de golflang ...

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

Repositorio de GitHub para Pip

El código prácticamente se documenta a sí mismo; quizás s/in/using/para una descripción más precisa. Los enteros dados como argumentos de línea de comandos se leen en la lista g, que aquí se pliega al agregarse y el resultado se imprime automáticamente. Casi todo lo demás son solo variables, que son no-ops.

Al principio me sorprendió un poco que s, ffuncionase sin quejarme, ya que se frefiere a la función principal y no tiene sentido tomar el rango de un bloque de código. Pero luego me di cuenta: el ,operador de rango, cuando se le da un argumento de función, simplemente construye otra función (como hacen muchos operadores en Pip). Entonces creo que s, fevalúa a{Given a set of integers, find the sum of all integers in " ",$+g} . (Que luego se descarta de todos modos).

Un último punto: este código funciona con la versión actual de Pip, en la que todavía no he asignado Gnada. Si en alguna versión futura hago Gun operador binario o ternario, entonces sería necesaria una versión de distancia 4. Usar en givenlugar de Givenfuncionaría bien.


3

Haskell, distancia 11

¡Sin comentarios!

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 , Distancia 9

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

Pruébalo en línea!

Esto envuelve el 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 .
      . . .
      . . .

El código operativo es

  • I+i Ingrese un número entero, agregue a TOS y luego ingrese un carácter
  • ?Prueba de valor de caracteres. Redireccionar a la izquierda para -1 (final de entrada) o a la derecha para cualquier otra cosa (no se puede ingresar 0)
    • ;O@ pop TOS, suma de salida y salida
    • <;u redirigir, pop TOS y girar en U al inicio

2

Pyth - 4

Simplemente pone el código real, sQdelante de la cadena sin abrir por un espacio.

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

Pruébelo en línea aquí .


1

PHP4.1, distancia 25

Este es bastante largo y muy tarde en la carrera.

Pero de todos modos, aquí está:

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

Para que esto funcione, solo necesita pasarle una matriz sobre POST / GET / COOKIE / session, usando la tecla f_all_integers_in_i.


2
Sin comentarios trolling yay!
Anubian Noob

1

Pyt , distancia 1

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

Todos los caracteres alfanuméricos son no operativos en Pyt, y la suma de una lista solo tiene un carácter: Ʃ

Pruébalo en línea!


0

C ++ 17, distancia 44 29

Lambda Genérico Variadic FTW

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

Solución previa

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



0

Ly , puntaje 4

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

Tenga en cuenta la nueva línea final.

Pruébalo en línea!

El código se explica por sí mismo. &+es el operador sumador de Ly, mientras que #es un comentario. Es lamentable que tenga que incluir una nueva línea final debido al hecho de que finalizar un programa con una línea de comentarios "comentará" la salida implícita de Ly, que en realidad es un error en el intérprete al que llamo una característica.


0

dc, 14

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

comentarios:

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

se queja de que la pila está vacía si ingresa 1 número, pero aún funciona, y la eliminación de 0 guarda 2 diff.


0

Excel VBA, Distancia: 11

Función de ventana inmediata anónima de VBE que toma la entrada del rango [a:a]en el objeto ActiveSheet y las salidas a la ventana inmediata de 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.

Pruébalo en línea!

Explicación

Como no hay paréntesis en el texto original, esto se reduce a un problema de en Brain-Flak. Pero eso todavía no hace que esta respuesta sea trivial, ya que las respuestas en Brain-Flak rara vez lo son.

La primera intuición probablemente sería el siguiente código

({{}})

Lo que funciona ... a menos que haya un cero en la pila, en cuyo caso solo suma hasta el cero. Para solucionar este problema, tenemos que usar una altura de pila para verificar que la pila no esté vacía. Esto se puede configurar así

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

Este funciona, pero hay algo mal con él. Seguimos silenciando los pops y los empujes en los bucles, pero son casi iguales, por lo que debería haber una forma de cancelarlos. Si lo intentamos

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

Terminamos por ncada vez. Así que aquí está el truco, ya tenemos una nubicación, simplemente lo movemos al impulso para equilibrar las cosas.

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

1
Solo quería felicitarte por tu 2^8respuesta de ppcg
Taylor Scott


0

Jalea , Distancia: 2

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

Pruébalo en línea!

Jelly solo evalúa el enlace principal (la última línea) y los comandos explícitos ejecutarán otros enlaces (otras líneas).

La última línea tiene S, que suma la entrada.

La primera línea no se ejecuta porque no hay ninguna referencia en el enlace principal.


0

¡Chasquido! 4.2.2.9 (+ Herramientas), sintaxis scratchblocks3, distancia 35

Esta es una función. integers, find the sum of all intees la entrada

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

¿Cómo toma esto entrada? ¿Se supone que la entrada debe pegarse en el código? Por lo general, no permitimos ese tipo de entrada, sino que exigimos que la entrada se tome de STDIN o, si su envío es una función, que se pase como argumento.
Wheat Wizard

No, es una función. integers, find the sum of all intees un argumento, simplemente no se distingue de las variables regulares en la sintaxis scratchblocks3, por lo que aclaré
Silas Reel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.