Esta pergunta é inspirada nesta resposta . Coincidentemente, eu costumava usar a Multiplicação Etíope quando era criança, mas nunca conhecia o nome do método até recentemente.
A multiplicação etíope é um método de multiplicar números inteiros usando apenas adição, duplicação e metade.
Método:
- Pegue dois números para multiplicar e anote-os na parte superior das duas colunas.
- Na coluna da esquerda, reduza pela metade o último número repetidamente, descartando quaisquer restos, e escreva o resultado abaixo do último na mesma coluna, até escrever o valor 1.
- Na coluna da direita, dobre repetidamente o último número e escreva o resultado abaixo. para quando você adiciona um resultado na mesma linha em que a coluna da esquerda mostra 1.
- Examine a tabela produzida e descarte qualquer linha em que o valor na coluna esquerda seja par. Soma os valores na coluna da direita que restam para produzir o resultado da multiplicação dos dois números originais juntos.
Por exemplo: 17 x 34
17 34
Metade da primeira coluna:
17 34
8
4
2
1
Dobrar a segunda coluna:
17 34
8 68
4 136
2 272
1 544
Linhas de strikeout cuja primeira célula é par, faremos isso colocando os números à direita entre colchetes:
17 34
8 [68]
4 [136]
2 [272]
1 544
Soma os números restantes na coluna da direita:
17 34
8 [68]
4 [136]
2 [272]
1 544
=====
578
Então 17 multiplicado por 34, pelo método etíope é 578.
A tarefa:
Código de golfe que recebe dois números entre 1 e 1000 e executa o mesmo layout e algoritmo, exibindo o produto abaixo.
Método de entrada: No entanto, você escolhe ...
Exemplo de entrada:
19 427
Resultado resultante:
19 427
9 854
4 [1708]
2 [3416]
1 6832
======
8113
Observe o alinhamento dos dígitos. Isso é mais importante no layout. Observe também que a linha dupla apresentada por sinais de igual deve ter dois caracteres a mais que a resposta geral e deve ser justificada ao centro.
Teste
Como você estará testando isso? Fornecendo uma execução do seu programa usando dois números. Esses números podem ser extraídos do seu número de identificação do usuário (isso pode ser obtido passando o cursor do mouse sobre o seu avatar na janela superior). Pegue o seu número e pegue os três últimos dígitos, este será o número B, pegue o que restar na frente, o número A. Em seguida, teste A vezes B.
Exemplo de teste:
Meu número de identificação de usuário é 8555, portanto, meus números são 8 e 555. Portanto, minha saída deve ficar assim:
8 [555]
4 [1110]
2 [2220]
1 4440
======
4440
Restrições:
Nenhum operador de multiplicação nativo permitido, exceto no uso de "duplicação", conforme mencionado no algoritmo. Em outras palavras, se você estiver usando um operador como *, ele poderá ser usado apenas para a multiplicação por 2.
As inscrições que não aderem a isso não serão consideradas e o usuário será escoltado para fora das instalações com uma caixa de papelão cheia de seus pertences. Cada entrada terá código, além do teste com base no seu número de ID do usuário.
Isso é código de golfe. O menor número de bytes receberá o prêmio, a glória e a admiração de seus pares ... (E talvez um Lamborghini ... eu disse "talvez"!)
*
oux
), mas é impossível detectar se a multiplicação é usada ou não. Exceto essa parte, o desafio é interessante.