Цикл набора чисел по часовой стрелке - PullRequest
1 голос
/ 16 мая 2019

у меня есть число, лежащее между 65 и 90

Я хочу сместить число на 13 позиций позади, но число должно начинаться с 90, как только оно уменьшится до 65.

Например: если у меня 67, оно должно стать 79, но 78 должно упасть до 65, а 77 должно упасть до 90

Я пытался использовать циклы if

var n = 67

if ((n - 13) < 65) {
  console.log(90 - (13 - (n - 65)))
}
else {
  console.log(n - 13)
}

Но как я могу использовать арифметику дляупростить мой код?

1 Ответ

2 голосов
/ 16 мая 2019

Вы можете получить нулевое базовое значение, вычтя смещение 65, добавив значение смещения и используя reaminder, чтобы получить значение в интервале от нуля до 25, а затем снова добавьте смещение.

Похоже на Цезарь с ROT13 :

from 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
     >A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
      N  O  P  Q  R  S  T  U  V  W  X  Y  Z >A  B  C  D  E  F  G  H  I  J  K  L  M
 to  78 79 80 81 82 83 84 85 86 87 88 89 90 65 66 67 68 69 70 71 72 73 74 75 76 77 

function shiftBy(value, shift) {
    return (value - 65 + shift) % 26 + 65;
}

console.log(shiftBy(67, 13)); // 80
console.log(shiftBy(77, 13)); // 90
console.log(shiftBy(78, 13)); // 65  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...