3.4 KiB
3.4 KiB
title | id | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
Ethiopian multiplication | 599d1566a02b571412643b84 | 5 | Multiplicação etíope |
Description
A multiplicação etíope é um método de multiplicar inteiros usando apenas adição, duplicação e redução pela metade.
Método:
Pegue dois números para serem multiplicados e anote-os no topo de duas colunas. Na coluna da esquerda, separe repetidamente o último número, descartando qualquer resto, e escreva o resultado abaixo do último na mesma coluna, até você escrever um valor de 1. Na coluna da direita repetidamente, duplique o último número e escreva o número. resultado abaixo. pare quando você adicionar um resultado na mesma linha de onde a coluna da esquerda mostra 1. Examine a tabela produzida e descarte qualquer linha na qual o valor na coluna da esquerda seja par. Soma os valores na coluna da direita que permanecem para produzir o resultado da multiplicação dos dois números originais juntosPor exemplo: 17 × 34
17 34
Reduzindo a primeira coluna:
17 34
8
4
2
1
Duplicando a segunda coluna:
17 34
8 68
4 136
2 272
1 544
Linhas de ataque cuja primeira célula é par:
17 34
8 68
4 136
2 272
1 544
Soma os números restantes na coluna da direita:
17 34
8 -
4 ---
2 ---
1 544
====
578
Então 17 multiplicado por 34, pelo método etíope é 578.
Tarefa:A tarefa é definir três funções / métodos / procedimentos / sub-rotinas nomeadas:
um para reduzir pela metade um inteiro, um para dobrar um inteiro e um para indicar se um inteiro é par.Use essas funções para criar uma função que faça multiplicação etíope.
Instructions
Tests
tests:
- text: <code>eth_mult</code> é uma função.
testString: 'assert(typeof eth_mult === "function", "<code>eth_mult</code> is a function.");'
- text: '<code>eth_mult(17,34)</code> deve retornar <code>578</code> .'
testString: 'assert.equal(eth_mult(17, 34), 578, "<code>eth_mult(17,34)</code> should return <code>578</code>.");'
- text: '<code>eth_mult(23,46)</code> deve retornar <code>1058</code> .'
testString: 'assert.equal(eth_mult(23, 46), 1058, "<code>eth_mult(23,46)</code> should return <code>1058</code>.");'
- text: '<code>eth_mult(12,27)</code> deve retornar <code>324</code> .'
testString: 'assert.equal(eth_mult(12, 27), 324, "<code>eth_mult(12,27)</code> should return <code>324</code>.");'
- text: '<code>eth_mult(56,98)</code> deve retornar <code>5488</code> .'
testString: 'assert.equal(eth_mult(56, 98), 5488, "<code>eth_mult(56,98)</code> should return <code>5488</code>.");'
- text: '<code>eth_mult(63,74)</code> deve retornar <code>4662</code> .'
testString: 'assert.equal(eth_mult(63, 74), 4662, "<code>eth_mult(63,74)</code> should return <code>4662</code>.");'
Challenge Seed
function eth_mult (a, b) {
// Good luck!
}
Solution
// solution required