3 ms·
/* I used to be able to do this without a compiler */ for(;;){ int i = values[0]; if(i == values[i])return i; values[i] ^= values[0]; va
by yarg 4y ago
/*
I used to be able to do this without a compiler
*/
for(;;){
int i = values[0];
if(i == values[i])return i;
values[i] ^= values[0];
values[0] ^= values[i];
values[i] ^= values[0];
}
/*
full test code, does java really not have Arrays.shuffle?
*/
public static void main(String...args){
final int result;
Integer[] values = new Integer[12];
for(int i = 1; i < values.length; i++){
values[i] = i;
}
final int dupe = values[0] = 1 + new Random().nextInt(values.length - 1);
final var list = Arrays.asList(values);
Collections.shuffle(list);
System.err.println(list);
for(;;){
int i = values[0];
if(i == values[i]){
result = i;
break;
}
values[i] ^= values[0];
values[0] ^= values[i];
values[i] ^= values[0];
}
System.err.println(dupe + " " + result);
}
- ldx1024 4y agoNice!