Skoči na vsebino

P2 2021/22 DN06 - Amadej M.

resitev
import java.util.Arrays;

public class DN06{

    static int bsdChecksum(String niz) {
        // https://en.wikipedia.org/wiki/BSD_checksum
        int checksum = 0;
    
        for (int i = 0; i<niz.length(); i++) {
          checksum = (checksum >> 1) + ((checksum & 1) << 15);
          checksum += niz.charAt(i);
          checksum &= 0xffff;       
        }
        return checksum;
      }

    static String povecaj(String niz){
        char[] seznamCrk = niz.toCharArray();
        for (int i = seznamCrk.length - 1; i >= 0; i--) {
            if ((int) seznamCrk[i] + 1> 122){
                seznamCrk[i] = 'a';
                continue;
            }
            else{
                seznamCrk[i] = (char) (int) (seznamCrk[i] + 1);
                break;
            }
        }
        return new String(seznamCrk);
    }

    static boolean preveriEnakost(String podaniNiz, String trenutniNiz){
        if(bsdChecksum(podaniNiz) == bsdChecksum(trenutniNiz)){
            return true;
        }
        return false;
    }
    public static void main(String[] args) {
        String podaniNiz = args[0];
        boolean enakost = false;
        char [] charArray = new char[podaniNiz.length()];
        Arrays.fill(charArray, 'a');
        String trenutniNiz = new String(charArray);

        while (!enakost){
            enakost = preveriEnakost(podaniNiz, trenutniNiz);
            if(!enakost){
                trenutniNiz = povecaj(trenutniNiz);
            }
            else{
                System.out.println(trenutniNiz);
            }
        }
    }
}

Zadnja posodobitev: April 5, 2022