Basi bilanciate:
Le basi bilanciate sono essenzialmente le stesse delle basi normali, tranne per il fatto che le cifre possono essere positive o negative, mentre in basi normali le cifre possono essere solo positive.
Da qui in poi, le basi bilanciate della base bpossono essere rappresentate come balb- così la base bilanciata 4 = bal4.
Nella definizione di questa sfida, l'intervallo di cifre in una base di base bilanciata bva da -(k - 1)a b - k, dove
k = ceil(b/2)
Esempi di intervallo di cifre in varie basi bilanciate:
bal10:
k = ceil(10/2) = 5
range = -(5 - 1) to 10 - 5 = -4 to 5
= -4, -3, -2, -1, 0, 1, 2, 3, 4, 5
bal5:
k = ceil(5/2) = 3
range = -(3 - 1) to 5 - 3 = -2 to 2
= -2, -1, 0, 1, 2
Le rappresentazioni dei numeri in basi bilanciate sono sostanzialmente le stesse delle basi normali. Ad esempio, la rappresentazione del numero 27(base 10) in bal4(base bilanciata 4) è 2 -1 -1, perché
2 -1 -1 (bal4)
= 2 * 4^2 + -1 * 4 + -1 * 1
= 32 + (-4) + (-1)
= 27 (base 10)
Compito:
Il tuo compito è, dato tre input:
- il numero da convertire (
n)- questo input può essere flessibile, vedere "Flessibilità I / O"
- la base che
nè attualmente in (b) - la base che
ndeve essere convertita in (c)
Dove 2 < b, c < 1,000.
Restituisce il numero nella crappresentazione di base bilanciata di n. L'output può anche essere flessibile.
Il programma / funzione deve determinare la lunghezza ndell'input stesso.
Flessibilità I / O:
I tuoi input ne output possono essere rappresentati in questi modi:
- la definizione della lingua di un array
- una stringa, con qualsiasi carattere come separatore (ad es. spazi, virgole)
Esempi:
Si noti che questi usano un array Python come ne l'output. È possibile utilizzare ciò che si adatta alla propria lingua, purché rientri nella definizione di "Flessibilità I / O".
[2, -1, -1] 4 7 = [1, -3, -1]
[1, 2, 3, 4] 9 5 = [1, 2, 2, -1, 2]
[10, -9, 10] 20 5 = [1, 1, 1, -2, 1, 0]
Questo è code-golf , quindi vince il codice più breve in byte!
[1,1,1,-2,1,0]