入力の桁をリストに入れ、このリストのインデックスを返すランダムジェネレーターを作成し、出力を形成します。
Integer input = 5278;
char[] digits = String.valueOf(input).toCharArray();
int numberOfTrinities = 4;
String result = "";
Random generator = new Random();
List<String> trinities = new ArrayList<String>();
while(trinities.size() < numberOfTrinities ) {
String nextTrinity = "";
for(int i = 0; i < 3; i++) {
nextTrinity += digits(generator.nextInt(digits.size()));
}
if(isUniqueDigitsTrinity(trinities, nextTrinity)) {
trinities.add(nextTrinity);
}
}
String result = "";
for(String trinity : trinities) {
result += trinity;
}
System.out.printl("Input: " + input + ", Result: " + result);
三位一体の一意の数字をチェックするためにこれを必要とします:
private boolean isUniqueDigitsTrinity(List<String> trinities, String candidateTrinity) {
for(String existingTrinity : trinities) {
String checker = existingTrinity;
for(char candidateChar : candidateTrinity.toCharArray()) {
checker.replace(candidateChar, '');
}
if(checker.length() <= 0) {
return false;
}
}
return true;
}