Pregunta

Digamos que tengo un límite de 5 valores de significado de 0,1,2,3,4,5

La diferencia de (5 to 0) o (5 to 0) es 1
La diferencia de (5 to 1) o (1 to 5) es 2
La diferencia de (0 to 4) o (4 to 0) es 2

La forma en que parece entender esto es usar solo la diferencia de envoltura si el último valor o el primer valor se usa en cualquiera de los valores.Aparte de los normales que funcionan con Math.abs debería estar bien

Como Math.abs(1-3)
La diferencia de (1 to 3) es 2
La diferencia de (3 to 4) es 1

Parece que no puedo entender cómo programar la parte de diferencia de envoltura.

Intenté esto pero no es nada especial, creo que algo con el operador de módulo funcionará pero parece que no puedo entenderlo.

int value_one = 0;
int value_two = 5;

int answer = Math.abs(value_one - value_two);
answer = (((answer % 5) + 5) % 5) + 1;
System.out.println(answer);
int answer2 = (value_one + value_two) % 5;
System.out.println(answer2);
¿Fue útil?

Solución

int v1 = Math.min(value_one, value_two);    
int v2 = Math.max(value_one, value_two);
int answer = Math.min(v2 - v1, v1 + values.length - v2);

donde valores.longitud es la longitud de {0, 1, 2, 3, 4, 5} que es 6.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top