Bases

in #ita16 days ago

import java.util.ArrayList;
import java.util.List;

class BaseConverter {

private int originalBase;
private int[] originalDigits;

BaseConverter(int originalBase, int[] originalDigits) {
    this.originalBase = originalBase;
    if(this.originalBase < 2) throw new IllegalArgumentException("Bases must be at least 2.");
    this.originalDigits = originalDigits;
    for(int i=0; i < this.originalDigits.length; i++){
    if (this.originalDigits[i] < 0) throw new IllegalArgumentException("Digits may not be negative.");
    if (this.originalDigits[i] >=  originalBase) throw new IllegalArgumentException("All digits must be strictly less than the base.");
    }
}

int[] convertToBase(int newBase) {
    int number = 0;
    int toAdd = 0;
    int originalDigitsLength = this.originalDigits.length;
    List<Integer> resultList = new ArrayList<>();
    
    int  exp = originalDigitsLength-1;
    if(newBase < 2) throw new IllegalArgumentException("Bases must be at least 2."); 
    for(int i=0; i < originalDigitsLength; i++){ // mettere foreach??
        number += ((int) Math.pow(originalBase,exp)) * this.originalDigits[i];
        exp--;
    }
    while (number >= newBase){ 
        toAdd = number % newBase;
        number = (int) number / newBase;
        resultList.add(toAdd);
    }
    
    toAdd = number % newBase;
    number = (int) number / newBase;
    resultList.add(toAdd);   
     
    int[] resultConversion = new int[resultList.size()];
    for (int i = 0; i < resultList.size(); i++) {
        resultConversion[i] = resultList.get(i);
    }

    for (int i = 0; i < resultConversion.length/ 2; i++) {
        int temp = resultConversion[i];
        resultConversion[i] = resultConversion[resultConversion.length - 1 - i];
        resultConversion[resultConversion.length - 1 - i] = temp;
    }
    return resultConversion;
}

}

Sort:  

Thank you, friend!
I'm @steem.history, who is steem witness.
Thank you for witnessvoting for me.
image.png
please click it!
image.png
(Go to https://steemit.com/~witnesses and type fbslo at the bottom of the page)

The weight is reduced because of the lack of Voting Power. If you vote for me as a witness, you can get my little vote.

Coin Marketplace

STEEM 0.28
TRX 0.12
JST 0.032
BTC 66382.93
ETH 3031.14
USDT 1.00
SBD 3.69