Tarefa
A tarefa é muito simples. Dada uma sequência não vazia contendo números , letras maiúsculas e minúsculas , produza a soma dos números restantes. Por exemplo:
a1wAD5qw45REs5Fw4eRQR33wqe4WE
Filtrar todas as letras resultaria em:
1 5 45 5 4 33 4
A soma desses números é 1 + 5 + 45 + 5 + 4 + 33 + 4 = 97
. Então a saída seria 97
.
Casos de teste
a > 0
0 > 0
5 > 5
10 > 10
a0A > 0
1a1 > 2
11a1 > 12
4dasQWE65asAs5dAa5dWD > 79
a1wAD5qw45REs5Fw4eRQR33wqe4WE > 97
Isso é código-golfe , então a submissão com a menor quantidade de bytes ganha!
Respostas:
GS2, 2 bytes
Experimente online!
Como funciona
fonte
Labirinto , 8 bytes
Tome isso, Pyth ...
Experimente online!
Explicação
O iniciador usual (roubado do Sp3000):
O que é realmente útil aqui é que o Labyrinth tem dois comandos de entrada diferentes,
,
e?
. O primeiro lê um único byte do STDIN, ou-1
no EOF. Este último lê um número inteiro de STDIN. Ele faz isso pulando tudo o que não é um número e depois lê o primeiro número decimal encontrado. Como este retorna0
no EOF, não podemos usá-lo para verificar o EOF de forma confiável aqui.O loop principal do programa é este bit compacto:
Com
?
lemos um número inteiro (ignorando todas as letras),+
adicionamos o total em execução (que começa como um dos zeros implícitos na parte inferior da pilha). Em seguida, lemos outro caractere,
para verificar o EOF. Enquanto não estivermos no EOF, o caractere de leitura será uma letra com um código de caractere positivo; portanto, o IP vira à direita (do ponto de vista; ou seja, oeste).;
descarta o personagem porque não precisamos dele e entramos no loop novamente.Quando estivermos no EOF,
,
pressione a-1
para que o IP vire à esquerda (leste).;
novamente descarta isso-1
,!
imprime o total em execução como um número inteiro e@
finaliza o programa.fonte
CJam, 13 bytes
Corrigido para trabalhar com entrada sem números, graças a Dennis! Também salvou um byte, substituindo a matriz de letras por uma matriz de ASCII acima do ponto de código 64. E depois outro byte salvo por Dennis!
Transliteração simples de letras para espaços, depois avaliação e soma. Experimente online .
fonte
MATL , 8 bytes
Experimente online!
fonte
Retina ,
2211Experimente online!
11 bytes (!) Economizados graças ao Martin!
Basicamente, apenas decimal para unário, em seguida, conte os
1
s.fonte
$0
implícito se uma substituição começar$*
. É um padrão muito comum e isso permitiria que você vencesse Pyth. ;)Japonês, 2 bytes
Teste online!
Como funciona
fonte
JavaScript ES6, 35 bytes
Como funciona
Primeiro, substituímos cada sequência de não dígitos por
"+"
. Existem basicamente quatro maneiras diferentes de acabar:Os casos 1 e 2 já estão resolvidos. Mas, de alguma forma, precisamos corrigir o último
+
para que ele não cause erro. Nós poderíamos removê-lo com.replace(/\+$,"")
, mas isso é muito caro. Poderíamos acrescentar0
a ao final, mas isso afetaria o último número se a sequência não terminar com a+
. Um compromisso é anexar.0
, que é um número válido por si só e não afeta o valor de outros números inteiros.Aqui estão alguns outros valores que também funcionariam:
Versão alternativa, também 35 bytes
Outra versão alternativa, 36 bytes
fonte
Pitão,
121110 bytesFelizmente,
s
(converter para int) retorna0
quando aplicado à string vazia, então não preciso me preocupar com o fato desplit("a1b", "\D+")
retornar["", "1", ""]
. Da mesma forma,split("a", "\D+")
retorna["", ""]
.Isso até me permite dividir todos os não dígitos individualmente, pois
1 + 0 + 0 + 0 + 0 + 2
é a mesma coisa que1 + 2
.Obrigado a Thomas Kwa por um byte!
fonte
Gol> <> , 4 bytes
Tão curto que eu preciso de texto fictício ...
fonte
Perl 6 , 18 bytes
Uso:
fonte
Gelatina, 6 bytes
Experimente online!
Como funciona
fonte
Perl, 21 + 1 = 22 bytes
Requer a
-p
bandeira:fonte
a
?0
;-)Julia, 35 bytes
Esta é uma função anônima que aceita uma string e retorna um número inteiro. Para chamá-lo, atribua-o a uma variável.
Nós usamos
matchall
para obter uma matriz que consiste em correspondências da expressão regular\d+
, que são apenas os números inteiros na string. Temos que colocar um 0 na frente da string, caso contrário, em casos como"a"
estaríamos somando sobre uma matriz vazia, o que causa um erro. Em seguida, aplicamosparse
a cada correspondência de string, que é convertida em números inteiros, e obtemos a soma.fonte
parse
podeint
se tornar se você não se importar com o aviso de reprovação.PHP, 64 bytes
Execute-o como
https://eval.in/517817
fonte
<?
vez de<?php
?Javascript,
3239 bytesMostrar snippet de código
fonte
Mathematica, 51 bytes
Pegando o lado errado dos recursos detalhados do Mathematica. 1 byte off com a ajuda de @DavidC
fonte
DigitCharacter ..
salvará 1 byteDigitCharacter
não funciona como escrita, porque ele remove todos os dígitos enquanto que queremos remover todas as cartas ...Total@ ToExpression@StringCases[#, DigitCharacter ..] &
R,
4643 bytesExplicação
Amostra de execução
Editar: Substituído
[^0-9]
por\\D
.fonte
PowerShell,
2826 bytesRecebe a entrada
$args
e executa um regex-replace
para trocar as letras e+0
, em seguida, canaliza isso paraiex
(abreviadoInvoke-Expression
e semelhante aeval
).alternativamente
Se você concorda com alguma saída estranha, pode fazer o seguinte, também em
2826 bytes:Isso levará a sequência de entrada
$args
e a seqüência-split
de caracteres para os não números (removendo-os no processo). Por exemplo,1a2b33
se tornaria['1','2','33']
. Nós canalizamos isso paraMeasure-Object
o-Sum
parâmetro A saída seria como a abaixo:Editar - durr, não precisa do
[ ]
no regex, pois não estou mais especificando uma lista de possíveis correspondências ...fonte
Gema, 39 caracteres
Exemplo de execução:
fonte
Sério, 13 bytes
Experimente online!
Explicação:
fonte
a
. Deve ser uma correção de um byte.Java, 70 bytes
fonte
TI-Básico, 106 bytes
Funciona em calculadoras TI-83/84!
fonte
Clojure / ClojureScript, 35 bytes
fonte
R, 50 bytes
Requer ter
gsubfn
instaladoUsa
strtoi
para coagir ao numéricofonte
Ruby 45 bytes
(A primeira tentativa no trabalho revisitará isso)
fonte
POSIX sh + tr + dc,
2725 bytesConverte qualquer execução de não dígitos (incluindo a nova linha final) em
+
operador, pressiona dois zeros na pilha (caso a entrada comece com não dígitos), adiciona todos e imprime o resultado. Pode haver um zero extra restante no final da pilha, mas não nos importamos com isso.fonte
Lua, 51 bytes
Muito curto pela primeira vez! Ainda mais curto que o Java! A entrada deve ser um argumento da linha de comandos para que funcione.
Ungolfed
fonte
Utilitários Bash + GNU, 29
Se for necessário suportar entrada sem números (por exemplo,
a
), podemos fazer o seguinte:Utilitários Bash + GNU, 38
1 byte salvo graças a @TobySpeight.
fonte
a
. No momento, estamos discutindo se isso é válido ou não.;
vez de||
sempre adicionar zero, sem causar danos.Python 2, 70 bytes
Estou colocando uma resposta em Python apenas por diversão.
Muito simples e usa regex para encontrar todos os números na entrada. Experimente online!
fonte
raw_input
ou alternar para python3. Uma versão menor (PY3, 56 bytes):import re;print(sum(map(int,re.findall('\d+',input()))))
.Oracle SQL 11.2, 105 bytes
O regex converte caracteres alfa em ','
XMLTABLE cria uma linha por item na cadeia usando ',' como separador.
SUM as linhas para obter o resultado.
O NVL é necessário para contabilizar uma sequência sem dígito.
fonte