Utwórz procedurę, która pobiera tablicę bloków w jednym numerycznym systemie bazowym i przekształca je w tablicę bloków w innym numerycznym systemie bazowym. Zarówno do, jak i do systemów są arbitralne i powinny zostać zaakceptowane jako parametr. Tablica wejściowa może mieć dowolną długość (jeśli używasz języka, w którym długości tablic nie są przechowywane w tablicy, takiego jak C, parametr długości należy przekazać do funkcji).
Oto jak powinno to działać:
fromArray = [1, 1]
fromBase = 256
toBase = 16
result = convertBase(fromArray, fromBase, toBase);
Które powinny zwrócić [0, 1, 0, 1]lub ewentualnie [1, 0, 1](wiodące 0s są opcjonalne, ponieważ nie zmieniają wartości odpowiedzi).
Oto kilka wektorów testowych:
Wektor testu tożsamości
fromArray = [1, 2, 3, 4] fromBase = 16 toBase = 16 result = [1, 2, 3, 4]Trywialny wektor testowy
fromArray = [1, 0] fromBase = 10 toBase = 100 result = [10]Duży testowy wektor
fromArray = [41, 15, 156, 123, 254, 156, 141, 2, 24] fromBase = 256 toBase = 16 result = [2, 9, 0, 15, 9, 12, 7, 11, 15, 14, 9, 12, 8, 13, 0, 2, 1, 8]Naprawdę duży wektor testowy
fromArray = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] fromBase = 2 toBase = 10 result = [1, 2, 3, 7, 9, 4, 0, 0, 3, 9, 2, 8, 5, 3, 8, 0, 2, 7, 4, 8, 9, 9, 1, 2, 4, 2, 2, 3]Niezrównany wektor bazowy
fromArray = [41, 42, 43] fromBase = 256 toBase = 36 result = [1, 21, 29, 22, 3]
Inne kryteria / zasady:
Wszystkie zmienne całkowite powinny mieścić się w standardowej 32-bitowej liczbie całkowitej ze wszystkimi rozsądnymi zakresami wejściowymi.
Możesz przekonwertować na reprezentację pośredniczącą, o ile pośrednik nie jest niczym więcej niż tablicą 32-bitowych liczb całkowitych ze znakiem.
Spodziewaj się obsługiwać bazy od 2 do 256. Nie ma potrzeby obsługi wyższych baz od tego (ale jeśli chcesz, na pewno).
Spodziewaj się obsługiwać rozmiary wejściowe i wyjściowe co najmniej do 1000 elementów. Rozwiązanie skalowane do 2 ^ 32-1 elementów byłoby lepsze, ale 1000 jest w porządku.
Nie musi to oznaczać posiadania najkrótszego kodu spełniającego te reguły. Chodzi o posiadanie najczystszego i najbardziej eleganckiego kodu.
Nie jest to do końca trywialne, więc odpowiedź, która prawie działa, może zostać zaakceptowana!