Cree un programa que sume todos los enteros encontrados en una cadena que se establece como una variable en el programa (por lo tanto, el programa no tiene que manejar ninguna entrada). Los números enteros están separados por no numéricos (cualquier cosa menos 0, 1, 2, 3 ... 9).
Ejemplos:
e7rde f ,fe 43 jfj 54f4sD
= 7 + 43 + 54 + 4 = 1085
= 564 545,5445-32JIFk0ddk
= 64 + 545 + 5445 + 32 + 0 = 60860ab0
= 0 + 0 = 0
Notas adicionales:
- El soporte Unicode no es necesario, pero está permitido
-n
(donden
es un número entero) no se cuenta como negativon
, sino como un guión seguido den
.
La respuesta se puede imprimir en la pantalla (pero no es obligatorio).
La respuesta más corta (en caracteres) gana.
5a-3
(mi código se saltaría-
si sigue un número inmediatamente, pero no si hubiera un no número antes).Respuestas:
Perl, 15
Entrada en
$_
, suma en$c
:fuente
Ruby 1.9, 21 caracteres
Para imprimir la solución a stdout, se requieren 2 caracteres adicionales:
Y para leer desde stdin en lugar de usar una variable predefinida, se deben usar otros 3 caracteres:
Para Ruby 1.8, reemplace
?+
con"+"
para obtener una solución de trabajo en 22 caracteres.fuente
scan
es más corto quesplit
. Entonces su solución se convierte eneval s.scan(/\d+/)*?+
21 caracteres.scan
, gracias!eval
y* '+'
Pitón (60)
fuente
Ruby -
3634 caracteres36 caracteres si desea que se imprima el resultado.
Asume que la entrada está presente como una cadena en s.
fuente
JavaScript (ES6), 30
Versión anotada:
fuente
Windows PowerShell, 23
252931Con salida.
De hecho, sin salida es exactamente lo mismo, simplemente lo canalizaría a otro lugar donde sea necesario.
fuente
J -
4038 caracteresVersión perezosa. Requiere la biblioteca de cadenas.
fuente
Java
fuera del concurso;)
fuente
JavaScript [30 bytes]
fuente
Laberinto ,
2921 bytes(Descargo de responsabilidad: Labyrinth es más nuevo que este desafío).
Además, Labyrinth no tiene variables, así que elegí un programa normal de entrada / salida.
Esto fue bastante simple debido a la forma en que funcionan los comandos de entrada de Labyrinth.
?
intenta leer un entero con signo de STDIN y se detiene en el primer no dígito. Si no puede leer un número entero (debido a que el siguiente carácter-
no es seguido por un dígito, o cualquier otro no dígito, o hemos alcanzado EOF), en su0
lugar, volverá .,
por otro lado lee cualquier byte posterior y empuja el valor del byte. Si se llama a este en EOF, volverá en su-1
lugar.Aquí hay un pseudocódigo para la solución:
Tratar correctamente con números negativos complica bastante esta solución. Si no fuera por esos, tendría esta solución de 8 bytes:
fuente
PHP - 37
Sin imprimir;
Con impresión (38):
fuente
Perl, 16 caracteres
Toma entrada
$_
, la salida continúa$r
. El último punto y coma es superfluo, pero probablemente será necesario cuando el programa haga más cosas. Agregarsay$r
para salida.fuente
wc -c
.J - 23 char
No es un ganador, pero podemos ver una primitiva bastante rara en acción.
Explicado:
_"."0 y
- Para cada carácter en la cadena de entraday
, intente leerlo como un número. Si no puede, use el valor predeterminado_
(infinito) en su lugar.,_=
- Verifique la igualdad de cada resultado_
y luego ejecute la matriz final de 0s y 1s en un vector. ("."0
siempre agrega demasiadas dimensiones al resultado, por lo que corregimos eso aquí).y,:' '
- Agregue una fila de espacios debajo de la cadena de entrada.}
- Usado como está aquí,}
se llama Item Enmienda , y usa la lista de 0s y 1s a la izquierda como índices para seleccionar la fila para dibujar en el argumento derecho. Entonces, lo que sucede es que, para cada columna en el lado derecho, tomamos el carácter original si se puede leer como un número, y de lo contrario tomamos el espacio debajo de él. Por lo tanto, cubrimos cualquier carácter no numérico con espacios.+/".
- Ahora convierta esta cadena completa en una lista de números y sume.fuente
gs2, 4 bytes
Codificado en CP437 ; el tercer byte es
E9
.W
lee todos los números/-?\d+/
de una cadena,#Θ
asigna el valor absoluto,d
sumas.(gs2 también es más nuevo que este desafío, pero su
read-nums
comando es una coincidencia total).fuente
Smalltalk (Smalltalk / X) (51 caracteres)
usando el paquete regex:
wo regex:
entrada en s
fuente
R, 30
Aquí,
x
está el nombre de la variable.Ejemplo:
fuente
Javascript - 43 caracteres
Sé que es largo, pero no había una solución JS, así que :)
a
es la cuerdac
contiene respuestafuente
Tcl, 30
Se supone que la entrada está en la variable
$a
(formalmente, ena
) y almacena la respuesta en el resultado del intérprete. I / O se deja como un ejercicio.fuente
C99 (con advertencias) 85
Para utilizar realmente el programa, debe asignar la variable de la siguiente manera:
Si está utilizando gcc necesita compilarlo como C99 así:
fuente
APL, 16 bytes
⎕d
es un incorporado que contiene los dígitos (0-9).b
se asigna a un vector de 0/1 donde 1 se asigna a los caracteres que son dígitos.b
se usa para comprimir la matriz de caracteres dada y luego se reutiliza para expandirla, lo que inserta espacios en blanco.⍎
es la evaluación de APL que convierte una cadena en un vector entero en este caso.+/
calcula la sumafuente
+/2⊃⍞⎕VFI⍨⎕AV~⎕D
Swift 3, 78
donde
s
esta la cuerdafuente
Perl - 24 caracteres
La entrada está en $ _
fuente
En realidad, 14 bytes (no competitivos)
Pruébalo en línea!
Esta presentación no es competitiva porque en realidad es bastante más nueva que este desafío.
Este programa admite la página de códigos CP437 para entrada.
Explicación:
fuente