Несподівано до Джепа підскакує Ральф і щось стурбовано шепоче на вухо. Чоловіки відходять і дивляться на тестову галерею. Там щось коїться. Лице Кейтаро витягується. Він кидає короткий наказ Ральфу і розвертається. Ральф Доернберг швидко спускається з помосту, прихопивши з собою «Ремінгтон». За ним прямують двоє чилійських охоронців. Тим часом Джеп забирає делегацію і поспішно виводить американців з оглядового майданчика.

— Що там відбувається? — спитав Тимур.

Канадець не відповів.

Картинка знову міняється. Посеред екрана блимає: «ЕКСПЕРИМЕНТ ЗАКІНЧЕНО». Камера напливає на ботів, що стоять у глухому куті, оточені бетонними блоками. Один з них вискакує на спину іншого, витягується і чіпляє руками кронштейн, на якому кріпиться правий M134. Підтягнувшись, бот дотягується до поворотної системи і кількома ударами роздовбує її. Кулемет хилиться, дзижчить і валиться на землю.

«ЕКСПЕРИМЕНТ ЗАКІНЧЕНО». Тоді що за чортівня з тими ботами?

У цей час Ральф та чилійці виходять із-за броні. Боязко роззираються і крокують до ботів по коридору. «Малюк», зіскочивши на землю, намагається знешкодити лівий кулемет. Другий кронштейн знаходиться набагато вище і є недосяжним для нього.

Експеримент закінчено? Та невже?

— Ось код процедури, скомпільованої в їхні голови перед початком тесту.

Тимур нахилився до монітора. З подивом відмітив, що інтерфейс debugger’а йому не відомий. На щастя, синтаксис нагадував С++, тому з кодом проблем не було.

int TEST_010524()

{

    Targets DOLLS(System.GetTargets(gt_Front, gt_Type1));

    if (!DOLLS) return 0;

    int NT = DOLLS.GetTargetsNumber();

    for (int i=0; iNT; i++)

    {

        System.MoveToObject(DOLLS[i], 1, 0, 0);

        DOLLS[i].Destroy;

    }

    System.Macros();

    Clear();

    if DOLLS.AllDestroyed() return 1

    else return 0;

}

Процедура була надзвичайно простою. Оголошувалася змінна DOLLS. Далі системна функція GetTargets аналізувала об’єкти попереду бота і записувала в DOLLS масив знайдених мішеней типу gt_Type1.

— gt_Type1 — це глобальна константа, що описує манекени, — розтлумачив Ральф.

Метод GetTargetsNumber визначав кількість мішеней. Потому запускався цикл, на кожному кроці якого бот рухався до мішені і ліквідовував її. Для цього використовувались функції MoveToObject та Destroy. Наостанок очищалася системна пам’ять і здійснювалася перевірка, чи всі манекени знищені. Для Тимура лишалося невідомим одне — призначення функції System.Macros.

Тимур продивлявся код, коли раптом усвідомив очевидне: ботів не програмували на знищення кулеметів. У їхній свідомості (точніше, у віртуальному баченні світу) M134 просто не існували! Боти бачили лише манекени. Попри це «малюки» знайшли «Мініґани». Більше того, боти силкувались вивести їх з ладу через дві хвилини після того, як тестові програми витерли з мозкових плат.

— А тепер подивись на візуалізацію результатів енцефалографії.

На екрані з’явилося нове вікно, розділене навпіл. Ліву частину займала 3D-модель мозку. Справа прокручувався відеозапис експерименту. Без пришвидшення. Перші двадцять секунд мозкові плати палали червоним. Працювали на повну. Решта мозку лишалася сірою. Лиш де-не-де проступали рожеві плями. Знищивши останній манекен, боти завмерли.

— В цьому місці процедура видаляється з мозкових плат, — сказав Ральф.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже