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

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

Етап Друкують одночасно
  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