Перейти к содержимому

Doob

Гуру
  • Публикации

    1 086
  • Зарегистрирован

  • Посещение

  • Победитель дней

    139

Doob стал победителем дня 1 октября 2023

Doob имел наиболее популярный контент!

Репутация

2 748 Очень хороший

Doob

  • Звание
    Старожил

Информация

  • Пол
    Не определился

Посетители профиля

5 089 просмотров профиля
  1. Их очень много, можно визуализировать при помощи дебаг платы таким скриптом: local l_x, l_y, l_z = 1427, 44, 816 -- координаты центральной точки local setblock, block = 'setblock ', ' minecraft:redstone_block' local run = require('component').debug.runCommand local sqrt = math.sqrt local collision = { [16] = true, [18] = true, [22] = true, [24] = true, [30.757112998459] = true, [32] = true, [32.326459750489] = true, [33] = true, [36] = true, [36.837480912788] = true, [44] = true, [48] = true } for x = 0, 32 do for z = 0, x do for y = 0, x do if collision[sqrt(x^2 + y^2 + z^2)] then for xm = -1, 1, 2 do for ym = -1, 1, 2 do for zm = -1, 1, 2 do run(setblock .. l_x + x*xm .. ' ' .. l_y + y*ym .. ' ' .. l_z + z*zm .. block) run(setblock .. l_x + z*xm .. ' ' .. l_y + y*ym .. ' ' .. l_z + x*zm .. block) run(setblock .. l_x + y*xm .. ' ' .. l_y + x*ym .. ' ' .. l_z + z*zm .. block) end end end end end end end Для разных расстояний разные вероятности, в среднем при однократном сканировании бывает около 30% ошибок от общего числа, это ~216 блоков на весь объем.
  2. Нет, коллизии возникают на фиксированных расстояниях, если сместить геосканер в любую сторону, те расстояния покрываются областью где плотность определяется на 100% без коллизий.
  3. Чтобы узнать плотность всех блоков на 100% требуется затратить примерно на 30% больше энергии и времени из-за дополнительных сканирований. (19% если немного усложнить алгоритм) Если надеяться на удачу и повторно сканировать блоки только с явной коллизией, то в худшем случае, будет потрачено в 2.4 раза больше энергии и времени. Вот списки расстояний с коллизиями руды и окружающей породы: Коллидирующие расстояния для земли почти полностью объединены с расстояниями камня, а гравий встречается в 3 раза реже земли, поэтому их можно полностью игнорировать. Самый безопасный куб x23 блока с геосканером в центре не имеет коллизий, но он довольно мал для серьезных задач. Поэтому лучше потратить энергию на сканирование и тогда абсолютная точность будет достигнута для объема 65x65x63.
  4. local robot = require('robot') local component = require('component') local tunnel = component.tunnel local function send() local qty = 0 for i = 1, 12 do qty = qty + robot.count(i) end tunnel.send(qty) end local event = require('event') local term = require('term') while true do local e = {event.pull()} if e[1] == 'modem_message' then term.clear() term.write(e[6]) end end
  5. Doob

    Шаблон ИИ

    Да, обучал на питоне, модель конвертировал в Lua-табличку. Свертки "в лоб" работают очень плохо O(n^2) против O(n*log(n)) на нормальных алгоритмах. Полносвязные до определенного предела будут работать спокойно, но условно после 1000 параметров градиент перестанет влезать в память и скорость обучения упадет на пару порядков. Поэтому лучше работать с готовой моделькой, функционал попроще и мороки меньше.
  6. Doob

    Шаблон ИИ

    Нейронка или дерево? Я как-то сделал сверточную нейронку для MNIST'a, распознавание числа занимало около 1600 тиков.
  7. Вот как вариант, выгружает тикеты, когда их больше или равно нужному количеству. От других предметов инвентарь не чистит, для этого нужна отдельная функция. local component = require('component') local function get_tickets(item, min_qty, side) -- получаем имя предмета, количество и куда перемещать if not component.isAvailable('chest') then -- проверяем наличие сундука return nil, 'нет сундука' end local chest = component.chest -- линкуем сундук local stacks = chest.getAllStacks() -- получаем инвентарь local counter, slots, c_item, moved = 0, {} -- создаем счетчик, список слотов и текущий предмет for k, v in pairs(stacks) do -- пробегаем по слотам c_item = v.basic() -- линкуем основную информацию о предмете if c_item.id == item then -- если имя совпадает table.insert(slots, k) -- добавляем слот в список counter = counter + c_item.qty -- обновляем счетчик end end if counter >= min_qty then -- условие допилить под свои нужды moved = true for i = 1, #slots do -- бежим по слотам chest.pushItem(side, slots[i]) -- выгружаем предметы end end return moved, counter -- возвращаем количество end local status, tickets = get_tickets('minecraft:stone', 3, 'DOWN') if status then print('получено ' .. tickets .. ' билетов') -- обрабатываем удачную ситуацию else -- обрабатываем исключение end
  8. Doob

    Инвентарь debug

    Не добавят. Можно проверять наличие определенного предмета через удаление командой clear, затем возвращать его игроку.
  9. Да, рабочая штука. Еще MIPS и DCPU-16 попадались, но один удалили, другой не собирается.
  10. Дебага вроде не работала с плагинами без специального аддона. Или то вообще была кастомная дебага, короче встроенная не работала.
  11. Конвертацию итемов в цифру и переводы? Какой именно плагин? Какая СУБД? Как сервер устроен, через локалхост конектиться надо?
  12. Doob

    Дубокоп

    Пару лет назад я хотел сделать универсальный комбайн, чтобы можно было сделать специализированного робота, накидать ему алгоритм работы, а комбайн соберет и упакует все из готовых модулей, с учетом заданной конфигурации. Но удобство сомнительное и в EEPROM все нужные свистоперделки не влезают. Так что да, без харда нормальной копалке никак, да и не занимает он ничего, если не нужен доступ к роботу через OpenOS. С зарядниками весело было. Там в разных версиях, в разных модах, генераторы странно работали. Я долго с ними воевал и понял, что проще написать крафт кирок из булыги и алмазов, чем сделать поддержку всех популярных перезаряжаемых инструментов.
  13. Doob

    Дубокоп

    Шта? Алмазная кирка всегда ломала паутину. Есть у меня набор библиотек для копателя, там и контроль энергии, и поиск руды, навигация, обход препятствий, короче, на все случаи жизни. Надо только кое-чего подкрутить и можно будет хоть каждый час новую копалку писать. Алгоритм добычи дубокопа где-то на 50 строк влезет, а что-нибудь более совершенное и в 20 войдет.
  14. У робота есть слот для инструментов, только через него происходит работа (не знаю как сейчас, но раньше не каждый инструмент и не каждый блок обрабатывался адекватно). У дронов такого слота нет, поэтому они могут имитировать только пустую руку.
  15. Кому нужны такие подробные объяснения? Идея лежит на поверхности, ухватившись за нее, можно легко разобраться своим ходом. Это ведь прикладная задача. Берешь код, вставляешь в свою прогу и пользуешься.
×
×
  • Создать...