У меня есть непрерывная упорядоченная последовательность целых чисел, начинающихся меньше нуля и выше нуля; например, ...,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7
. Мне нужно сопоставить их с повторяющейся последовательностью 3,6,9,12
, с начальным условием f(0)=3
. Так, например, f(-2)=9, f(-1)=12, f(0)=3, f(1)=6, f(2)=9, f(3)=12, f(4)=3
и так далее. Существует ли компактный способ выражения этой операции в Java, так что мы можем просто использовать оператор остатка (%) и избегать любых операторов if/else?Последовательность целых чисел в повторяющейся последовательности
ответ
Я хотел бы предложить следующее обрабатывать отрицательный номера.
public int f(int n, int ... sequence) {
int idx = n % sequence.length;
if (idx < 0) idx += sequence.length;
return sequence[idx];
}
int x = f(n, 3,6,9,12);
однако в данном конкретном примере, есть гораздо более простое решение;)
public int f(int n) {
return (n & 3) * 3 + 3;
}
Спасибо, мне нравится очень простое решение в конце, и оно работает для обоих положительные и отрицательные числа. – Abiel
Я подозреваю, что три 3-го типа - это ожидаемое решение. –
int repeatingSequence[] = { 3,6,9,12 };
int fZero = 0;
int len = repeatingSequence.length;
public int f(int n) {
return repeatingSequence[ (n % len + fZero + len) % len ];
}
Работы для положительных, отрицательных и любых fZero в качестве исходного условия отображения.
Можете ли вы привести пример того, когда fZero не может быть 0? Если это 0, не может ли выражение быть короче? –
Это, похоже, не работает с отрицательными целыми числами. – Abiel
@ Peter, начальное условие отображения произвольно. 'fZero = 0;' имеет место в вопросе OP, который отображает '{0-> 3, 1-> 6, 2-> 9, 3-> 12, 4-> 3, ...}', ' fZero = 1; 'производит смещение 1, поэтому отображение выглядит так: {0-> 6, 1-> 9, 2-> 12, 3-> 3, 4-> 6, ...}' – davin
Это будет сервер вашей цели:
int repeatInt = 12 - ((11 - seqInt)*3) % 12 ;
where repeatInt = 3,9,6 or 12, the output
and seqInt = a number from your sequence
(простите за любые синтаксические ошибки, я попробовал код в PHP, и изменил его на Java)
- 1. Поиск повторяющейся последовательности в конце последовательности чисел
- 2. Генерация случайной, не повторяющейся последовательности всех целых чисел в .NET.
- 3. LISP - последовательность целых чисел
- 4. Последовательность в последовательности чисел
- 5. последовательность группы целых чисел
- 6. извлечение суб-последовательность целых чисел
- 7. Последовательность целых чисел в Rcpp
- 8. Пропуск значений в последовательности положительных целых чисел
- 9. Как найти повторяющуюся последовательность целых чисел в массиве целых чисел?
- 10. Сжатие возрастающей последовательности уникальных целых чисел
- 11. пытается получить последовательность целых чисел
- 12. regex: соответствие повторяющейся последовательности
- 13. Повторяющаяся последовательность чисел
- 14. Лексикографически сортировать последовательности целых чисел с LINQ
- 15. Сжатие перетасованной последовательности целых чисел [0, N)
- 16. Вычислить последовательность целых чисел в векторе
- 17. Как создать последовательность целых чисел в равномерном распределении?
- 18. Последовательность упорядочения/Анализ последовательности
- 19. Stumped: обнаружение идентичной последовательности целых чисел в двух целых массивах
- 20. Join повторяющейся последовательности к результатам
- 21. Hash a Последовательность положительных/отрицательных целых чисел
- 22. быстрый способ расшифровать последовательность целых чисел
- 23. Сервер, который получает последовательность целых чисел
- 24. Как создать идентичную последовательность псевдослучайных целых чисел?
- 25. Проверка того, увеличивается ли последовательность целых чисел.
- 26. Найти минимальный элемент, отсутствующий в последовательности неотрицательных целых чисел
- 27. Программа для конкретной последовательности целых чисел
- 28. Перечислить все конечные последовательности целых чисел?
- 29. Лучший алгоритм сжатия последовательности целых чисел
- 30. Найти сумму цифр последовательности целых чисел
звучит как домашнее задание для меня. это? –
Шон: Нет, просто что-то мне нужно сделать в приложении с математикой по дате. – Abiel