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