Esta pregunta está inspirada en esta respuesta . Casualmente, solía usar la multiplicación etíope cuando era niño, pero nunca había conocido el nombre del método hasta hace poco.
La multiplicación etíope es un método para multiplicar enteros utilizando solo la suma, la duplicación y la reducción a la mitad.
Método:
- Tome dos números para multiplicarlos y escríbalos en la parte superior de dos columnas.
- En la columna de la izquierda, reduzca a la mitad el último número repetidamente, descartando cualquier resto, y escriba el resultado debajo del último en la misma columna, hasta que escriba un valor de 1.
- En la columna de la derecha, doble el último número repetidamente y escriba el resultado a continuación. se detiene cuando agrega un resultado en la misma fila donde la columna de la izquierda muestra 1.
- Examine la tabla producida y descarte cualquier fila donde el valor en la columna izquierda sea par. Suma los valores en la columna de la derecha que quedan para producir el resultado de multiplicar los dos números originales juntos.
Por ejemplo: 17 x 34
17 34
Reducir a la mitad la primera columna:
17 34
8
4
2
1
Doblando la segunda columna:
17 34
8 68
4 136
2 272
1 544
Filas tachadas cuya primera celda es par, haremos esto encerrando esos números a la derecha entre corchetes:
17 34
8 [68]
4 [136]
2 [272]
1 544
Suma los números restantes en la columna de la derecha:
17 34
8 [68]
4 [136]
2 [272]
1 544
=====
578
Entonces 17 multiplicado por 34, por el método etíope es 578.
La tarea:
Código de golf que toma dos números entre 1 y 1000 y realiza el mismo diseño y algoritmo, mostrando el producto a continuación.
Método de entrada: como quiera que elija ...
Entrada de ejemplo:
19 427
Resultado resultante:
19 427
9 854
4 [1708]
2 [3416]
1 6832
======
8113
Tenga en cuenta la alineación de los dígitos. Esto es lo más importante en el diseño. También tenga en cuenta que la línea doble establecida por signos iguales debe ser dos caracteres más larga que la respuesta general y debe estar justificada al centro.
Pruebas
¿Cómo vas a probar esto? Al proporcionar una ejecución de su programa utilizando dos números. Estos números se pueden extraer de su número de identificación de usuario (esto se puede obtener colocando el cursor sobre su avatar en la ventana superior). Tome su número y tome los últimos tres dígitos, este será el número B, tome lo que quede en el frente, ese será el número A. Luego, pruebe A por B.
Ejemplo de prueba:
Mi número de identificación de usuario es 8555, por lo que mis números son 8 y 555. Por lo tanto, mi salida debería verse así:
8 [555]
4 [1110]
2 [2220]
1 4440
======
4440
Restricciones:
Ningún operador de multiplicación nativo permitió guardar en el uso de "duplicación", como se menciona en el algoritmo. En otras palabras, si está utilizando un operador como *, solo se puede usar para multiplicar por 2 solamente.
Las entradas que no cumplan con esto no serán consideradas y el usuario será acompañado fuera de las instalaciones con una caja de cartón llena de sus pertenencias. Cada entrada tendrá un código, más la prueba basada en su número de identificación de usuario.
Este es el código de golf. El menor número de bytes recibirá el premio, la gloria y la admiración de sus compañeros ... (Y tal vez un Lamborghini ... ¡Dije "tal vez"!)
*
ox
), pero es imposible detectar si se usa la multiplicación o no. Excepto esa parte, el desafío es interesante.