Итак, я хочу сделать декодер анаграммы и узнать, есть ли лучший способ сделать это. Мой текущий код такой:
Random random = new Random();
char[] splitAnagram = chosenAnagram.toCharArray();
int[] presetNumbers = new int[chosenAnagram.length()];
int i = 0;
while (true) {
TimeUnit.MILLISECONDS.sleep(10);
int thisRandom = random.nextInt(chosenAnagram.length());
if (Arrays.asList(presetNumbers).contains(thisRandom) == true)
presetNumbers[i] = thisRandom;
else
continue;
i++;
if (i > chosenAnagram.length())
break;
}
for (int l = 0; l < chosenAnagram.length(); l++) {
System.out.println(splitAnagram[presetNumbers[l]]);
}
По сути, он генерирует случайные числа для каждой буквы, так что он "скремблирует" слово. Он ошибочен как есть, потому что он еще даже не должен зацикливаться, просто сделать одну схватку, но в целом он кажется очень медленным и подверженным ошибкам (я сплю на 10 мс, потому что он может делать случайные числа только при каждом изменении системного времени ).
Мне интересно, есть ли какой-нибудь другой алгоритм для этого или возможный API, который я мог бы использовать. Спасибо!
P.S. Я использую Eclipse Photon, на случай, если вам известен плагин для этого.