Skip to content

Instantly share code, notes, and snippets.

@ddsilva
Created February 2, 2017 18:44
Show Gist options
  • Select an option

  • Save ddsilva/30c5b64aab34f7e2280a3c5e0e16b5ac to your computer and use it in GitHub Desktop.

Select an option

Save ddsilva/30c5b64aab34f7e2280a3c5e0e16b5ac to your computer and use it in GitHub Desktop.
<!--
Dada uma seqüência aleatória consistindo de números, letras, símbolos, você precisa somar os números na seqüência de caracteres.
Nota:
Inteiros consecutivos devem ser tratados como um único número. Por exemplo, 2015 deve ser tratado como um único número 2015, NÃO quatro números
Todos os números devem ser considerados como número inteiro positivo. Por exemplo, 11-14 deve ser tratado como dois números 11 e 14. Mesmo que 3,14, deve ser tratado como dois números 3 e 14
Se nenhum número foi dado na string, ele deve retornar 0
Exemplo:
"Em 2015, eu quero saber quanto custa o iPhone 6 +?" -> 2015, 6 => 2021
-->
<html>
<head>
<style>
#container{
font-family:monospace;
font-weight:bold;
}
</style>
</head>
<body>
<div id="container"></div>
<script>
function print(text) {
document.getElementById('container').innerText += text + '\n';
}
function assert(text, test) {
print(text + ': ' + test);
}
function getNumbers(text) {
var numbers = text.match(/[\d]+/g);
function mapFunction (item) {
return parseInt(item);
}
return numbers ? numbers.map(mapFunction) : [];
}
function sumNumbers(text) {
if ((typeof text) === 'number') {
return Math.floor(text);
}
if ((typeof text) !== 'string') {
return 0;
}
return getNumbers(text).reduce(function(current, next) {
return current + next;
}, 0);
}
assert('1', sumNumbers('1') === 1);
assert('{}', sumNumbers({}) === 0);
assert('15/10/1988', sumNumbers('15/10/1988') === 2013);
assert('Msg do enunciado',
sumNumbers('Em 2015, eu quero saber quanto custa o iPhone 6 +?') === 2021);
assert('teste', sumNumbers('teste') === 0);
assert('10-2.4 10', sumNumbers('10-2.4 10') === 26);
assert('10', sumNumbers(10) === 10);
assert('10,5', sumNumbers(10.5) === 10);
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment