Як двоє друкують в одному рядку і не втрачають жодної літери

Два курсори, один рядок і жодного сервера, який тримає ручку. Один повзунок розбирає злиття за індексами і збирає його наново на адресах, що живуть між літерами.

Етап Друкують одночасно
  1. 0
  2. 1
  3. 2
  4. 3
  5. 4

Натисніть на ділянку схеми, щоб відкрити етап.

Що дав дріб

Індекс описує місце в списку, який інші змінюють у вас під руками. Дробовий ідентифікатор із номером вузла описує місце, яке може створити лише його автор, тому будь-яка репліка збере ту саму множину правок в той самий рядок: без мережі, у будь-якому порядку і без сервера, що вирішує, хто має рацію.

Що всередині

  1. 1 Обоє вставляють у той самий проміжок · Індекс 1 перестає означати те саме, щойно хтось відредагував рядок раніше за вас.
  2. 2 У літери з’являється адреса, а не індекс · Аня і Боб потрапляють в ту саму середину, саме заради цього випадку в ідентифікаторі є номер вузла.
  3. 3 Пакети приходять у різному порядку · Тут нема чого «зберігати»: порядків два, і обидва справжні.
  4. 4 Вхідні сортують, а не застосовують по черзі · Дві правки з рівною позицією розводить номер вузла: правило довільне, але однакове на всіх машинах.
  5. 5 Обидва екрани приходять до тих самих п’яти літер · Збіжність це згода не про сенс, а про порядок.

Інтерактивні пояснення

Етап Друкують одночасно
  1. 0
  2. 1
  3. 2
  4. 3
  5. 4
1 / 5