Question

Disons que j'ai une limite de 5 valeurs de signification de 0,1,2,3,4,5

La différence avec (5 to 0) ou (5 to 0) est 1
La différence avec (5 to 1) ou (1 to 5) est 2
La différence avec (0 to 4) ou (4 to 0) est 2

La façon dont je semble comprendre cela est de n'utiliser la différence de suremballage que si la dernière valeur ou la première valeur est utilisée dans l'une des valeurs.À part ceux normaux qui fonctionnent avec Math.abs ça devrait aller

Tel que Math.abs(1-3)
La différence avec (1 to 3) est 2
La différence avec (3 to 4) est 1

Je n'arrive pas à comprendre comment programmer la partie différence de suremballage.

J'ai essayé ça mais ce n'est rien de spécial, je pense que quelque chose avec l'opérateur module fonctionnera mais je n'arrive pas à le comprendre

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);
Était-ce utile?

La solution

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);

où valeurs.longueur est la longueur de {0, 1, 2, 3, 4, 5} qui est 6.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top