Tarea
La tarea es muy simple. Dada una cadena no vacía que contiene números , letras mayúsculas y minúsculas , genera la suma de los números restantes. Por ejemplo:
a1wAD5qw45REs5Fw4eRQR33wqe4WE
Filtrar todas las letras daría como resultado:
1 5 45 5 4 33 4
La suma de estos números es 1 + 5 + 45 + 5 + 4 + 33 + 4 = 97
. Entonces la salida sería 97
.
Casos de prueba
a > 0
0 > 0
5 > 5
10 > 10
a0A > 0
1a1 > 2
11a1 > 12
4dasQWE65asAs5dAa5dWD > 79
a1wAD5qw45REs5Fw4eRQR33wqe4WE > 97
Este es el código de golf , por lo que gana el envío con la menor cantidad de bytes.
Respuestas:
GS2, 2 bytes
Pruébalo en línea!
Cómo funciona
fuente
Laberinto , 8 bytes
Toma eso, Pyth ...
Pruébalo en línea!
Explicación
La cartilla habitual (robada de Sp3000):
Lo que es realmente útil aquí es que Labyrinth tiene dos comandos de entrada diferentes,
,
y?
. El primero lee un solo byte de STDIN, o-1
en EOF. Este último lee un número entero de STDIN. Lo hace omitiendo todo lo que no es un número y luego lee el primer número decimal que encuentra. Este regresa0
en EOF, por lo que no podemos usarlo para verificar EOF de manera confiable aquí.El bucle principal del programa es este bit compacto:
Con
?
leemos un número entero (ignorando todas las letras), con+
lo sumamos al total acumulado (que comienza como uno de los ceros implícitos en la parte inferior de la pila). Luego leemos otro personaje,
para verificar si hay EOF. Mientras no estemos en EOF, el carácter leído será una letra que tiene un código de carácter positivo, por lo que la IP gira a la derecha (desde su punto de vista; es decir, oeste).;
descarta el carácter porque no lo necesitamos y luego ingresamos al ciclo nuevamente.Una vez que estamos en EOF,
,
presiona a-1
para que la IP gire a la izquierda (este) en su lugar.;
nuevamente descarta eso-1
,!
imprime el total acumulado como un número entero y@
finaliza el programa.fuente
CJam, 13 bytes
¡Arreglado para trabajar con entrada sin números gracias a Dennis! También guardé un byte al reemplazar la matriz de letras con una matriz de ASCII sobre el punto de código 64. ¡Y luego otro byte guardado por Dennis!
Transliteración simple de letras a espacios, luego evalúa y suma. Pruébalo en línea .
fuente
MATL , 8 bytes
Pruébalo en línea!
fuente
retina ,
2211Pruébalo en línea!
¡11 bytes (!) Guardados gracias a Martin!
Básicamente solo decimal a unario y luego contar el
1
s.fuente
$0
implícito si una sustitución comienza con$*
. Es un patrón muy común y eso te hubiera permitido vencer a Pyth. ;)Japt, 2 bytes
¡Pruébelo en línea!
Cómo funciona
fuente
JavaScript ES6, 35 bytes
Cómo funciona
Primero, reemplazamos cada cadena de no dígitos con
"+"
. Básicamente, hay cuatro formas diferentes en que esto podría terminar:Los casos 1 y 2 ya están atendidos. Pero de alguna manera necesitamos arreglar el último
+
para que no cause un error. Podríamos eliminarlo con.replace(/\+$,"")
, pero eso es demasiado caro. Podríamos agregar0
a al final, pero eso afectaría el último número si la cadena no termina con a+
. Un compromiso es agregar.0
, que es un número válido por sí solo y no afecta el valor de otros enteros.Aquí hay algunos otros valores que también funcionarían:
Versión alternativa, también 35 bytes.
Otra versión alternativa, 36 bytes.
fuente
Pyth,
121110 bytesAfortunadamente,
s
(convertir a int) vuelve0
cuando se aplica a la cadena vacía, por lo que no tengo que preocuparme por el hecho de quesplit("a1b", "\D+")
regresa["", "1", ""]
. Del mismo modo,split("a", "\D+")
vuelve["", ""]
.Esto incluso me permite dividir en cada no dígito individualmente, ya que
1 + 0 + 0 + 0 + 0 + 2
es lo mismo que1 + 2
.¡Gracias a Thomas Kwa por un byte!
fuente
Gol> <> , 4 bytes
Tan breve que necesito un texto falso ...
fuente
Perl 6 , 18 bytes
Uso:
fuente
Jalea, 6 bytes
Pruébalo en línea!
Cómo funciona
fuente
Perl, 21 + 1 = 22 bytes
Requiere la
-p
bandera:fuente
a
?0
;-)Julia, 35 bytes
Esta es una función anónima que acepta una cadena y devuelve un entero. Para llamarlo, asígnelo a una variable.
Usamos
matchall
para obtener una matriz que consiste en coincidencias de la expresión regular\d+
, que son solo los enteros en la cadena. Tenemos que agregar un 0 al frente de la cadena, de lo contrario para casos como"a"
, estaríamos sumando sobre una matriz vacía, lo que causa un error. Luego aplicamosparse
a cada coincidencia de cadena, que se convierte en enteros, y tomamos la suma.fuente
parse
puede convertirseint
si no le importa la advertencia de desaprobación.PHP, 64 bytes
Ejecútalo como
https://eval.in/517817
fuente
<?
lugar de<?php
?Javascript,
3239 bytesMostrar fragmento de código
fuente
Mathematica, 51 bytes
Capturando el extremo equivocado de los componentes detallados de Mathematica. 1 byte desactivado con la ayuda de @DavidC
fuente
DigitCharacter ..
ahorrará 1 byteDigitCharacter
no funciona como está escrito porque elimina todos los dígitos, mientras que queremos eliminar todas las letras ...Total@ ToExpression@StringCases[#, DigitCharacter ..] &
R,
4643 bytesExplicación
Ejecución de la muestra
Editar: reemplazado
[^0-9]
por\\D
.fuente
PowerShell,
2826 bytesToma la entrada y
$args
luego realiza una expresión regular-replace
para intercambiar las letras+0
, luego las canaliza aiex
(abreviaturaInvoke-Expression
y similar aeval
).Alternativamente
Si está de acuerdo con alguna salida extraña, puede hacer lo siguiente, también a
2826 bytes:Esto tomará la cadena de entrada
$args
y la colocará-split
en una matriz de cadenas en los no números (eliminándolos en el proceso). Por ejemplo,1a2b33
se convertiría en['1','2','33']
. Lo canalizamosMeasure-Object
con el-Sum
parámetro. La salida sería la siguiente:Editar - durr, no necesito la
[ ]
expresión regular ya que ya no estoy especificando una lista de posibles coincidencias ...fuente
Gema, 39 personajes
Ejecución de muestra:
fuente
En serio, 13 bytes
Pruébalo en línea!
Explicación:
fuente
a
. Debería ser una solución de un byte.Java, 70 bytes
fuente
TI-Basic, 106 bytes
Funciona en calculadoras TI-83/84!
fuente
Clojure/ClojureScript, 35 bytes
fuente
R, 50 bytes
Requires having
gsubfn
installedUses
strtoi
to coerce to numericfuente
Ruby 45 bytes
(First attempt at work, will revisit this)
fuente
POSIX sh + tr + dc,
2725 bytesConverts any run of non-digits (including the terminating newline) to
+
operator, pushes two zeros onto the stack (in case input begins with non-digit), adds them all and prints the result. There may be an extra zero remaining at bottom of stack, but we don't care about that.fuente
Lua, 51 Bytes
Pretty short for once! Even shorter than Java! The input must be a command-line argument for it to work.
Ungolfed
fuente
Bash + GNU utilities, 29
If it is required to support input with no numbers (e.g.
a
), then we can do this:Bash + GNU utilities, 38
1 byte saved thanks to @TobySpeight.
fuente
a
. We are currently discussing whether that's valid or not.;
instead of||
to always add zero, for no harm.Python 2, 70 bytes
I am putting a Python answer just for fun.
Very simple and uses regex to find all the numbers in the input. Try it online!
fuente
raw_input
or switch to python3. A smaller version (py3, 56 bytes) :import re;print(sum(map(int,re.findall('\d+',input()))))
.Oracle SQL 11.2, 105 bytes
The regex convert alpha characters to ','
XMLTABLE create one row per item in the string using ',' as the separator.
SUM the rows to get the result.
NVL is needed to account for a string with no digit.
fuente