Bases balanceadas:
As bases equilibradas são essencialmente as mesmas que as bases normais, exceto que os dígitos podem ser positivos ou negativos, enquanto nas bases normais os dígitos podem ser apenas positivos.
Daqui em diante, bases balanceadas de base b
podem ser representadas como balb
- base balanceada 4 = bal4
.
Na definição deste desafio, a gama de dígitos em uma base equilibrada da base b
é de -(k - 1)
que b - k
, onde
k = ceil(b/2)
Exemplos do intervalo de dígitos em várias bases balanceadas:
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
As representações de números em bases balanceadas são basicamente as mesmas que as bases normais. Por exemplo, a representação do número 27
(base 10) a bal4
(base balanceada 4) é 2 -1 -1
porque
2 -1 -1 (bal4)
= 2 * 4^2 + -1 * 4 + -1 * 1
= 32 + (-4) + (-1)
= 27 (base 10)
Tarefa:
Sua tarefa é, com três entradas:
- o número a ser convertido (
n
)- essa entrada pode ser flexível, consulte "Flexibilidade de E / S"
- a base que
n
está atualmente em (b
) - a base que
n
deve ser convertida em (c
)
Onde 2 < b, c < 1,000
.
Retorne o número na c
representação base balanceada de n
. A saída também pode ser flexível.
O programa / função deve determinar o comprimento da n
própria entrada.
Flexibilidade de E / S:
Sua entrada n
e saída podem ser representadas das seguintes maneiras:
- a definição de matriz de seu idioma
- uma string, com qualquer caractere como separador (por exemplo, espaços, vírgulas)
Exemplos:
Observe que eles usam uma matriz Python como n
e a saída. Você pode usar o que for adequado ao seu idioma, desde que ele se enquadre na definição de "I / O Flexibility".
[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]
Isso é código-golfe , então o código mais curto em bytes vence!
[1,1,1,-2,1,0]