Parece una pregunta muy simple, pero sorprendentemente hay muy poco escrito sobre ella en Internet, y estoy teniendo dificultades para implementarla correctamente por mi cuenta. ¿Cuál es la mejor manera de implementar una función de comparación modular en caracteres ASCII en Java, de modo que la comparación "envuelva" el final del alfabeto? Quiero usarlo para una función "entre" que puede dividir todo el alfabeto en ubicaciones arbitrarias, y devolver correctamente "verdadero" cuando se le pregunte si 'y' está entre 'x' y 'b'.Comparación modular de caracteres
ya he encontrado todas las preguntas y respuestas que hablan de modular la aritmética en los personajes, así que saben cómo hacer además modular (carácter cambiante) con el código de la siguiente manera:
char shifted = (((original - 'a') + 1) % 26) + 'a';
Sin embargo, esto se basa en las funciones aritméticas modulares integradas de Java, que no tienen equivalente para comparar. Incluso si estaba usando enteros simples, no tengo forma de preguntarle a Java si es < b < c mod 26 (que debería volver verdadero si a = 24, b = 25 y c = 1).
Así que la pregunta general es, ¿cuál es la mejor manera de implementar las operaciones de comparación en Java? Si ese es un problema demasiado difícil, ¿existe al menos una forma de hacer que esas comparaciones funcionen para el alfabeto ASCII?
Tenga en cuenta que la "comparación modular" no tiene sentido para una comparación binaria: no hay un orden "menor que" en la aritmética modular. Sin embargo, una cosa "entre" todavía es posible, por lo que su pregunta es válida. – MvG