Questa domanda è ispirata da questa risposta . Per coincidenza, usavo la moltiplicazione etiope quando ero un bambino, ma non avevo mai conosciuto il nome del metodo fino a poco tempo fa.
La moltiplicazione etiopica è un metodo per moltiplicare numeri interi usando solo addizione, raddoppio e dimezzamento.
Metodo:
- Prendi due numeri da moltiplicare e scrivili nella parte superiore di due colonne.
- Nella colonna di sinistra dimezzare ripetutamente l'ultimo numero, scartando tutti i resti e scrivere il risultato sotto l'ultimo nella stessa colonna, fino a quando si scrive un valore di 1.
- Nella colonna di destra raddoppia ripetutamente l'ultimo numero e scrivi il risultato qui sotto. si interrompe quando si aggiunge un risultato nella stessa riga in cui la colonna di sinistra mostra 1.
- Esamina la tabella prodotta e scarta qualsiasi riga in cui il valore nella colonna di sinistra è pari. Somma i valori nella colonna di destra che rimangono per produrre il risultato della moltiplicazione dei due numeri originali insieme.
Ad esempio: 17 x 34
17 34
Dimezzare la prima colonna:
17 34
8
4
2
1
Raddoppio della seconda colonna:
17 34
8 68
4 136
2 272
1 544
Barrare le righe la cui prima cella è pari, lo faremo racchiudendo quei numeri a destra tra parentesi quadre:
17 34
8 [68]
4 [136]
2 [272]
1 544
Somma i numeri rimanenti nella colonna di destra:
17 34
8 [68]
4 [136]
2 [272]
1 544
=====
578
Quindi 17 moltiplicato per 34, con il metodo etiope è 578.
L'obiettivo:
Codice da golf che accetta due numeri tra 1 e 1000 ed esegue lo stesso layout e lo stesso algoritmo, visualizzando il prodotto di seguito.
Metodo di input: comunque scegli ...
Esempio di input:
19 427
Uscita risultante:
19 427
9 854
4 [1708]
2 [3416]
1 6832
======
8113
Si prega di notare l'allineamento delle cifre. Questo è molto importante nel layout. Si noti inoltre che la doppia linea tracciata da segni di uguale deve essere più lunga di due caratteri rispetto alla risposta generale e deve essere giustificata al centro.
analisi
Come lo proverai? Fornendo un'esecuzione del programma utilizzando due numeri. Questi numeri possono essere estratti dal tuo numero ID utente (questo può essere ottenuto passando il cursore sul tuo avatar nella finestra in alto). Prendi il tuo numero e prendi le ultime tre cifre, questo sarà il numero B, prendi qualsiasi altra cosa rimanga in primo piano, che sarà il numero A. Quindi prova per A volte B.
Esempio di test:
Il mio numero ID utente è 8555, quindi i miei numeri sono 8 e 555. Quindi il mio output dovrebbe apparire così:
8 [555]
4 [1110]
2 [2220]
1 4440
======
4440
restrizioni:
Nessun operatore di moltiplicazione nativa ha permesso di risparmiare nell'uso del "raddoppio", come indicato nell'algoritmo. In altre parole, se stai usando un operatore come *, può essere usato solo per moltiplicare per 2.
Le voci che non aderiscono a questo non verranno prese in considerazione e l'utente verrà scortato fuori dai locali con una scatola di cartone piena delle sue cose. Ogni voce avrà un codice, oltre al test basato sul numero ID utente.
Questo è il codice golf. Il minor numero di byte riceverà il premio, la gloria e l'ammirazione dei loro coetanei ... (E forse un Lamborghini ... ho detto "forse"!)
*
ox
), ma è impossibile rilevare se viene utilizzata la moltiplicazione o meno. Tranne quella parte, la sfida è interessante.