Я видел диапазоны чисел, представленные как [first1,last1)
и [first2,last2)
.
Я хотел бы знать, что такое обозначение.
Я видел диапазоны чисел, представленные как [first1,last1)
и [first2,last2)
.
Я хотел бы знать, что такое обозначение.
Скобка означает, что конец диапазона включен - он включает в себя указанный элемент. Скобка означает, что конец эксклюзивный и не содержит указанный элемент. Итак, для [first1, last1)
диапазон начинается с first1
(и включает его), но заканчивается непосредственно перед last1
.
Предполагая целые числа:
[a,b]
включает в себя конечные точки.(a,b)
исключает их.В вашем случае включена конечная точка в начале интервала, но конец исключен. Таким образом, это означает интервал "first1 <= x < last1".
Полупрозрачные интервалы полезны в программировании, потому что они соответствуют общей идиоме для цикла:
for (int i = 0; i < n; ++i) { ... }
Здесь я находится в диапазоне [0, n).
Концепция интервальной нотации возникает как в математике, так и в компьютерной науке. Математическая нотация [
, ]
, (
, )
обозначает область (или диапазон) интервала.
Скобки [
и ]
означают:
Скобки (
и )
означают:
Интервал со смешанными состояниями называется "полуоткрытым".
Например, диапазон последовательных целых чисел от 1.. 10 (включительно) будет обозначен как таковой:
Обратите внимание, как использовалось слово inclusive
. Если мы хотим исключить конечную точку, но "накрыть" тот же диапазон, нам нужно переместить конечную точку:
Для левого и правого краев интервала есть фактически 4 перестановки:
(1,10) = 2,3,4,5,6,7,8,9 Set has 8 elements
(1,10] = 2,3,4,5,6,7,8,9,10 Set has 9 elements
[1,10) = 1,2,3,4,5,6,7,8,9 Set has 9 elements
[1,10] = 1,2,3,4,5,6,7,8,9,10 Set has 10 elements
Как это относится к математике и информатике?
Индексы массивов имеют тенденцию использовать другое смещение в зависимости от того, в каком поле вы находитесь:
Эти различия могут приводить к ошибкам после ошибки, ака, off-by-one при реализации математических алгоритмов, таких как for-loops.
Если у нас есть набор или массив, скажем, из первых нескольких простых чисел [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 ]
, математики будут ссылаться на первый элемент как абсолютный элемент 1st
. т.е. используя индексную нотацию для обозначения индекса:
Некоторые языки программирования, в противоположность этому, относятся к первому элементу как относительный элемент zero'th
.
Так как индексы массива находятся в диапазоне [0, N-1], тогда для целей ясности было бы "приятно" сохранить одно и то же числовое значение для диапазона 0.. N вместо добавления текстовых шумов, таких как -1
.
Например, на C или JavaScript для итерации по массиву из N элементов программист будет писать общую идиому i = 0, i < N
с интервалом [0, N) вместо немного более подробного [0, N-1 ]:
function main() {
var output = "";
var a = [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 ];
for( var i = 0; i < 10; i++ ) // [0,10)
output += "[" + i + "]: " + a[i] + "\n";
if (typeof window === 'undefined') // Node command line
console.log( output )
else
document.getElementById('output1').innerHTML = output;
}
<html>
<body onload="main();">
<pre id="output1"></pre>
</body>
</html>
Это может быть математическое соглашение в определении интервала, где квадратные скобки означают "экстремальные включительные" и круглые скобки "экстремальные исключения".