Sfondo:
La matematica delle operazioni standard come l'aggiunta e la moltiplicazione di base nel mondo reale funzionano in questo modo:
12 + 123 = 135
e
12 * 123 = 1476
Non è interessante e noioso! Molte scuole lo stanno già interpretando come pratica, pratica, pratica di algoritmi formali. Ciò implica una dieta matematica piuttosto rigida e noiosa e non è ciò che si intende in questa sfida. Preparati a divertirti sul nostro amato sito.
Considera il processo di aggiunta di due numeri interi positivi, quindi l'aggiunta di tutte le cifre del suo risultato. Ripetendo con l'aggiunta fino a ottenere una sola cifra. Per esempio:
- Il risultato di
12 + 123
è 135. - Aggiungendo tutte le cifre di 135 otteniamo
1 + 3 + 5 = 9
.
Il numero di passaggi richiesti per ottenere un valore di una cifra singola in questa aggiunta ripetuta è 2.
Come nel precedente processo di addizione, la moltiplicazione di due numeri interi positivi segue lo stesso processo. Moltiplicare tutte le cifre del suo risultato e quindi ripetere questo processo fino a quando rimane una sola cifra. Prendi l'esempio sopra:
- Il risultato
12 * 123
è 1476. - Moltiplica tutte le cifre del 1476 che otteniamo
1 * 4 * 7 * 6 = 168
. - Moltiplica nuovamente tutte le cifre di 168 che otteniamo
1 * 6 * 8 = 48
. - Moltiplica nuovamente tutte le cifre di 48 che otteniamo
4 * 8 = 32
. - Moltiplica ancora una volta tutte le cifre di 32 che otteniamo
3 * 2 = 6
.
Il numero di passaggi richiesti per ottenere un valore a singola cifra 6 questa moltiplicazione ripetuta è 5.
Per il bene di questa sfida ed evitando qualsiasi uso improprio delle notazioni matematiche, presento queste due notazioni fittizie: (+)
e (*)
, ma puoi usare qualsiasi notazione che ti piace , che funziona come le seguenti:
- L'operazione del processo di addizione ripetuta per ottenere un singolo valore è
12 (+) 123 = 9
. - L'operazione del processo di moltiplicazione ripetuta per ottenere un singolo valore è
12 (*) 123 = 6
.
Sfida:
La sfida è scrivere un programma o una funzione in grado di eseguire entrambe le operazioni, come spiegato nella sezione di sfondo: (+)
e (*)
.
Ingresso:
Gli ingressi del programma o della funzione sono due numeri interi positivi e un'operazione sia (+)
e (*)
. Il formato dell'input è una scelta arbitraria del programmatore . Si può formattare l'ingresso, per esempio, a (+) b
o di F(a, (+), b)
o qualsiasi formato che si desidera.
Produzione:
L'output del programma o della funzione deve contenere il risultato dell'operazione e il numero di passaggi richiesti con il formato freestyle come desiderato.
Casi di prova (ignora il formato di input e output):
81 (+) 31 --> (4 ; 2)
351 (+) 14568 --> (6 ; 3)
21 (*) 111 --> (8 ; 3)
136 (*) 2356 --> (0 ; 2)
Regole generali:
- Questo è code-golf , quindi la risposta più breve in byte vince la sfida.
Non lasciare che esolang ti scoraggi dal pubblicare una risposta con lingue regolari. Goditi questa sfida fornendo una risposta il più breve possibile con il tuo linguaggio di programmazione. Se pubblichi una risposta intelligente e una chiara spiegazione, la tua risposta sarà apprezzata (da qui i voti positivi) indipendentemente dal linguaggio di programmazione che usi. - Per la tua risposta valgono regole standard , quindi puoi usare STDIN / STDOUT, funzioni / metodo con i parametri corretti, programmi completi, ecc. La scelta è tua.
- Se possibile, il programma può gestire correttamente numeri di grandi dimensioni. In caso contrario, andrà bene.