fgntfg
по моим представлением в k должен быть ключ, в v значение
Aleksey
Функция нормально работает на малых значениях, то есть когда в таблице строк десять
Aleksey
Точно, я уверен
Что-то подсказывает, что у тебя в данных цикл.
Aleksey
Все так, но я ключом использую таблицу, как и для значения
Aleksey
Что значит, цикл в данных?
Сделай таблицу, в которой будешь хранить уже просмотренные ключи.
Aleksey
Мне надо для каждого нода заново просматривать все значения в этой таблице
И проверяй, что такого ключа ещё не было.
Aleksey
Откуда может взяться цикл в данных?
Aleksey
А, я понял
Aleksey
Да
Aleksey
Проверю
А хотя, нет.
У тебя же там не список пар, а ключ-значение.
Aleksey
Но это все равно не объясняет, почему их таблицы попадает строка, которую я вижу вне функции
Aleksey
Из таблицы
Aleksey
Пропадает
Aleksey
У меня есть предложение, что луа каким-то специфичным образом передает аргументы в функции
Машину всё-таки следует винить в последнюю очередь.
Aleksey
Я понимаю Но все прошлые разы, когда я застревал с луа были из-за каких-то хитрых особенностей языка, которых я не знал
Тип у node какой?
Aleksey
table
hex_equal не может менять содержимое таблицы?
Aleksey
Нет, там просто return булева выражения
fgntfg
При работе с таблицами нужно понимать, что ты работаешь, на самом деле с указателями.
Aleksey
Я предполагал, что это, и это хорошо
Aleksey
Что это так
fgntfg
А k точно table?
fgntfg
просто странно что у тебя индекс таблицы - таблица
Aleksey
Да, точно
А, если это таблицы, то может быть цикл в данных.
Aleksey
Но почему этого цикла нет во время прохода вне этой функции?
Т.к. могут две эквивалентные ноды (но по сути разные таблицы) обе быть ключами.
fgntfg
Согласен с Чаем, надо смотреть входные данные
fgntfg
где-то логическая ошибка зарылась
fgntfg
и это не в этой функции
Aleksey
Я заполняю таблицу и проверяю, что в ней нет одинаковых таблиц, но расположенных в разных адресах
fgntfg
А покажи hex_equal
> hax
Aleksey
local function hex_equal(a,b) return a.q == b.q and a.r == b.r and a.s == b.s end
Aleksey
Ещё раз сделал вывод movements на экран до функции. Вывелось все как надо, среди значений есть гекс, совпадающий с goal. Вывожу внутри функции и там этого гекса нет. А ещё, что странно, находится по несколько v для одного и того же k
fgntfg
Там же hash-value харнилище
Aleksey
Да
Не для одного k, а для разных к с одинаковым содержимым.
Aleksey
Да
То есть, входные данные странные.
fgntfg
Как минимум
Aleksey
Но почему вне функции с ними все нормально?
fgntfg
У тебя индекс не очень однозначный, я бы сказал
fgntfg
наверное по этому и едет когда таблица разрастается, появляются коллизии
> Но почему вне функции с ними все нормально? Уверен, что это те же самые данные? Что ты ничего в них не менял?
Aleksey
Но я её не меняю после принта
А сколько записей в таблице?
Aleksey
Я делаю принт, вызываю функцию
fgntfg
Короче, я жду вечера и кода :)
fgntfg
А пока вернусь ка я к своим серверочкам
Aleksey
Сейчас 42 строки в таблице, судя по выводу до функции
Ну, не знаю. У тебя ZeroBrane, судя по фотографии экрана, там есть неплохой отладчик.
Можно пошагово выполнить и посмотреть, что когда чему равно.
Aleksey
Да, действительно, похожу с дебагером
Aleksey
Напишу, если что новое найду
fgntfg
кмк связанные ноду лучше не как индекс таблицы деражать, а как её элемент {r,q,v, next=>{node1,node2, node3}}
fgntfg
я бы так писал
Aleksey
Так, а вотч не показывает содержимое таблицы?
Кто?
Aleksey
Watch
Aleksey
В дебагере
Не знаю, что это. ._.
Но в дебаггере в таблицы заглянуть точно можно.
Aleksey
Почему-то через стек только можно посмотреть
Snusmumriken
Возьми сериализатор типа serpent/json и выведи содержимое гексов, авось попроще будет.
Anonymous
Всем привет
Snusmumriken
Привет! Ты пришёл предложить нам много денег по электронной почте? : )
Yuriy
Или много почты за электронные деньги?
Alexander
можно легально сегфолты у меня из проекта увезти?
Anonymous
Кстати задачка на сообразительность. Почему сегофолты называются segv а не segf
Alexander
ну там под сервис 80 мб хипа, а виртуальные таблички трутся как-то, хотя все по асинхронности грамотно написано (
Anonymous
А, понял