Implementare una funzione divide(int a, int b, int c)
che stampa il valore di base 10 di a/b
. senza usare alcuna matematica a virgola mobile né BigInteger
/ BigDecimal
o librerie equivalenti di sorta. È necessario stampare almeno c
caratteri precisi all'interno dell'insieme di 0123456789.
, ad eccezione della (possibile) eccezione al punto 4 seguente.
a
eb
può essere qualsiasi numero intero a 32 bit. Aggiornamento: se, ai fini del golf, si desidera che l'input sia primitivo a 64 bit, va bene, ma non è necessario supportare l'intero intervallo di dati a 64 bit.- Non è necessario verificare che
c
sia positivo (anche se si spera che il programma non si blocchi) in caso contrario. - Il limite minimo supportato per
c
è500
. Va bene se il tuo programma non supporta i valori di cuic
sopra500
, ma va bene anche se lo fa. - Per i numeri che si dividono uniformemente, è la tua scelta se stampare zero aggiuntivi (in base al valore di
c
) o niente. - Non è necessario essere in grado di utilizzare la funzione per eseguire ulteriori attività con il quoziente, l'unico obiettivo è la stampa.
- Per i numeri tra
-1
e1
, è la tua scelta se stampare un vantaggio0
. Tuttavia, questo è l'unico scenario in cui è accettabile la stampa di uno zero iniziale e si può stampare solo uno di questi zero. - È possibile utilizzare qualsiasi logica di arrotondamento / piano / soffitto preferita per l'ultimo decimale.
- Per una risposta negativa, è necessario stampare un vantaggio
-
. Questo non conta ai finic
. Tuttavia, è la vostra scelta se si desidera stampare,
+
o nulla per una risposta positiva. - Divisione intera e modulo intero sono entrambi consentiti. Tuttavia, tieni presente che sei limitato alle primitive, a meno che tu non scelga di implementare la tua
BigInteger
/BigDecimal
libreria che conta per la lunghezza del tuo codice. - Non hai bisogno di gestire l'
b
essere0
, anche se puoi se vuoi. Il tuo programma può entrare in un ciclo infinito, o crash, seb=0
e non sarai penalizzato. - Leggero cambio di regola per commento. Per assicurarsi che il campo di gioco è il livello, mentre
a
eb
sono garantiti per essere di 32 numeri interi bit, è possibile utilizzare gli interi lunghi 64 bit. Se la tua lingua scelta va oltre i numeri interi a 64 bit come primitiva, non puoi mai usare quella funzionalità (fingi che sia limitata a 64 bit). - Un altro punto che non è chiaro (non dovrebbe cambiare nessuna delle attuali risposte valide, però): mentre
c
può essere interpretato come il numero di caratteri stampati o il numero di spazi dopo il decimale, il programma deve utilizzare inc
qualche modo in modo pertinente per decidere quanti caratteri stampare. In altre parole,divide(2,3,2)
dovrebbe essere un output molto più breve didivide(2,3,500)
; non va bene stampare 500 caratteri senza riguardoc
. - In realtà non mi interessa il nome della funzione.
d
va bene per il golf.
Ingresso
stdin
Sono accettate sia una chiamata di funzione che la lettura da . Se leggi da stdin
, qualsiasi carattere non presente nel set [-0123456789]
viene considerato un delimitatore di argomenti.
Produzione
Personaggi stdout
come descritto sopra.
Esempio
per divide(2,3,5)
, tutti i seguenti sono output accettabili:
0.666
0.667
.6666
.6667
0.666
0.667
.6666
.6667
+0.666
+0.667
+.6666
+.6667
Un altro esempio: per divide(371,3,5)
quanto segue sono tutti gli output accettabili:
123.6
123.7
123.6
123.7
+123.6
+123.7
123.66666
123.66667
123.66666
123.66667
+123.66666
+123.66667
E per divide(371,-3,5)
quanto segue sono tutti accettabili:
-123.6
-123.7
-123.66666
-123.66667
92,3,5
la risposta sarebbe, ad esempio,30.67