Ошибка!

В предыдущих постах, я упоминал о том, что искомая программа сгенерированна и задача поиска 90% решений найдена. Но это не так 🙂 Я проанализировал код, который подобрал решения для 56 записей из 60 и пришел к выводу, что он не выполняет свою функцию… После небольшой отладки, я понял, что решение было найдено, но оно полностью зависело от рантайма в момент выполнения этого кода моей виртуальной машиной. Под рантаймом я понимаю состояние памяти организмов, и конкретные числа полученные функцией Math.random(). Помимо этого, я нашел несколько критических ошибок: например, лучшие организмы не всегда с большей вероятностью давали потомство. Короче говоря, мне таки удалось получить работоспособную программу да еще и в 3х вариантах 🙂 Вуаля:

// winner 1 -------------------
v1 = v1 & v0
v0 = +!v2
v1 = v1 | v3
v0 = v1 > v3
v1 = v3 >> v1
if (v1 < v0) {
    v2 = 6
}
v0 = 4
v1 = 2
v0 = v3 >> v2

// winner 2 -------------------
if (v1 > v3) {
    v0 = org.toMem(v1)
    v3 = v3 << v2
}
v2 = v0 << v1
v1 = org.toMem(v0)
v0 = v0 < v2
if (v2 > v3) {
    if (v0 < v3) {
        v2 = 3
        v0 = v2 & v1
    }
}

// winner 3 -------------------
v3 = v3 + v3
v1 = v0 & v1
v1 = v1 - v3
v1 = v1 >> v0
v2 = v1 >>> v3
v3 = 8
v0 = 3
v2 = v0 + v2
v1 = +!v0
v0 = v3 >> v2

В данном случае нужно сделать небольшую оговорку. Данные победители нашли 14 решений из 15 исходных. Я специально уменьшил выборку, чтобы ускорить процесс.

Update на 06.08.2017:

v3 = v3 + v3
if (v3 > v1) {
    v0 = 5
    v3 = v0 & v3
    v2 = v1 >>> v0
    v0 = 2
    if (v2 != v0) {
        if (v2 == v3) {
            v1 = +!v0
            v3 = 9
            v3 = v3 << v3
            v0 = v0 - v3
            v3 = 15
            v2 = v0 << v3
            v0 = v2 < v1
        }
    }
}

53 из 60 – это 88.3% 🙂

Теперь я спокоен 🙂

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s