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

Doob

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

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

  • Посещение

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

    141

Все публикации пользователя Doob

  1. У роботов в minecraft мире есть одна очень удобная фича - возможность копать и ставить блоки, ну и двигаться от блока к блоку. Это дает возможность программировать тьюрмитов с самыми минимальными познаниями в программировании. Код тьюрмита прост, но исполнение кода похоже на развитие живого организма - маленькая часть кода генерирует огроммные, замысловатые узоры и фракталы. Пример для муравья Лэнгтона: local r = require('robot') while 1 do if r.detectDown() then r.swingDown() r.turnLeft() else r.placeDown() r.turnRight() end r.forward() end Креативного робота можно запустить на суперплоскости из грязи и он будет работать даже без инструмента. Я написал скрипт, подобный муравью, но робот должен находится не над блоками, а в той же плоскости. local r = require('robot') while 1 do if r.detect() then r.swing() r.turnLeft() else r.forward() r.turnAround() r.place() r.turnRight() end end Результат работы после 10000 шагов: Предлагаю выкладывать в этой теме код и скрин работы разных клеточных автоматов, реализованных при помощи роботов.
  2. Да, это все очевидно, но для моей задачи задействовать видеокарту довольно трудно, потому-что надо подбирать код, который будет оптимально работать в minecraft мире. В общем, мне нужен редактор генетического кода для саморазвивающихся роботов, общий объем 8 килобайт, для мутации в пределах развитого поколения от 12 до 100 байт, на создание жизнеспособного проекта уйдет от 300k до 800k часов, даже с читерским ускорителем, поэтому надо задать точку отсчета, чтобы роботы развивались не с нуля. Хотя, я прекрасно знаю, что этот способ тупиковый и сама идея тоже. Робот, после появления обращается к коду в каждой ситуации, т. е. извлекает инструкции предков и пытается применить их в подходящих ситуациях, в пределах одного поколения, роботы голосуют за наиболее успешные участки кода и передают их в следующее поколение, если использовать ускоритель, то голосование между серверами будет невозможно (следовательно, тоже нужен алгоритм разбиения на блоки) Но в конечном итоге все сводится к клеточным автоматам, хоть и довольно сложным, но бессмысленным.
  3. В некоторых задачах это единственный способ. Сжималка это только пример, мне нужны способы разбиения словаря для брута на равные блоки, без предварительно генерации самого словаря.
  4. С выпиливанием вайтлиста стало как-то скучно. В общем имеем код "сжималки" с рабочим названием "Popoff2" local data = require('data') local function compress(str) local list = '' for i = 1, #str do if string.find(list, string.sub(str, i, i)) == nil then list = list .. string.sub(str, i, i) end end local lhex = string.format('%x', #str) for j = 1, 8-#lhex do lhex = '0' .. lhex end return data.md5(str) .. data.fromHex(lhex) .. list end Суть алгоритма: К примеру, закодируем строку 'helloworld' (строка короткая, сжатия нет, зато перебор быстрый) Получаем хеш и размер строки в двоичном виде (для примера размер указываем в четырех байтах), в конец добавляем используемые символы [FC5E038D38A57032085441E7FE7010B0] [0000000A] [lowerdh] = 24 байта из 10, но это всего-лишь пример (вообще, можно указать количество повторений для каждого символа, тогда на пермутациях можно выиграть очень много времени, а исходные данные предварительно жать через deflate) Чтобы вернуть исходные данные, надо перебором генерировать из указанных символов последовательность, указанной длинны. Очень неэффективно, но не в этом суть. Нужен алгоритм, при помощи которого можно подбирать исходные данные на нескольких устройствах несвязанных во времени и пространстве, т. е. чтобы диапазоны перебора предварительно разбивались на блоки, которые алгоритм будет обрабатывать отдельно. Какие есть предложения?
  5. Хорошая штука - YouTube, теперь, вместо простыней текста и мануалов есть куча видео про все на свете.
  6. Мм... Зачем жить, если жизнь - велик?)) Где зимуют раки, когда кончается игра? Без практики есть риск остаться хеллоувордщиком или скатиться до скрипт-кидди, тогда вообще нет смысла лезть в программирование.
  7. Всего-лишь идея, начал делать свой пейнт с инструментами и палитрой, сразу в чат начали сыпать объявлениями о создании СуперМегаФотошопов. Так как получать точные координаты клика можно только через моник Т3, я это дело бросил, но в редакторе голограмм это реализовали.
  8. Давно хотел сделать заливалку с кучей настроек, но пока допиливаю очень сложный алгоритм, вряд-ли между делом выйдет что-то толковое. С такими условиями я уже на трех проектах забросил постить скрипты. Кстати, спасибо за идею обменника через чат, очень удобно получается!))
  9. Больше информации по шеллу! Его можно использовать во многих случаях, когда используются сторонние программы. Очень облегчит жизнь тем, кто только осваивается. Это излишества, хотя можно сделать надстройку к существующей системе.
  10. Тогда достаточно прописать mkdir /kotiki/ /kotiki/moy/ Подпапки прекрасно создаются, следовательно противоречие с Пропишите команду mkdir /usr/bin/ /usr/lib rm /koriki можно не использовать, а сделать rename, т. е. mv /koriki /kotiki
  11. Добавить в event.lua надстройку, которая будет проверять дату изменения файлов, но это будет сильно грузить комп.
  12. Doob

    ESAPI

    http://computercraft.ru/topic/436-zakaz№002-ozhidanie-programma-batareia-ogon-a/?p=14143 Вообще рандомный хардкор.
  13. Иногда надо получить относительные или абсолютные координаты робота или узнать путь, по которому он прошел, чтобы вернуть робота назад. Я немного модифицировал стандартную библиотеку робота, теперь можно задавать/удалять/просматривать координаты робота. Нет функции сохранения координат в файл, поэтому после перезагрузки координаты сбросятся, поэтому это делать надо самостоятельно. Так же, нафигация не работает, если управлять роботом, как компонентом (т.е. в обход robot API) скачать: pastebin get -f Hb32aQeR /lib/robot.lua Список новых функций: robot.getPos() - возвращает текущие координаты, если не заданы, то при первой загрузке библиотеки устанавливаются x, y, z = 0, 0, 0, а направление - север. robot.setPos(x, y, z, side) - устанавливает заданные координаты, side задается в формате N/E/S/W (стороны света) robot.getPath() - возвращает пройденный путь в виде строки, каждому движению соответсвует одна буква - [F]orward, [В]ack, p, [D]own, [L]eft, [R]ight. (например 'FFFULFFD' - три вперед, один вверх, один влево, два вперед, один вниз) robot.setPath(boolean) - активация/деактивация записи маршрута, соответственно true/false Можно было бы сделать в стиле navigation API с использованием sides API, но это не особо удобно. Триггер записи маршрута по-умолчаию отключен, для экономии памяти, ибо каждое движение съедает один байт, по-уму надо прикрутить автоматическое сжатие. Чтобы пройти по пройденному маршруту обратно, надо в начале активировать robot.setPath(true), а в конце запустить примерно такую программку: Полезно для полностью автономных программ. Очень удобно вытаскивать робота-грифера из чужих приватов. Утилита, через которую можно проверить и задать координаты: pastebin get nJ5i4qiL /bin/pos.lua Программа движения сквозь блоки: pastebin get X5G4PHnS /bin/goto.lua Роботу необходим инструмент для разрушения блоков, для запуска надо указать координаты.
  14. Doob

    ESAPI

    Хм! Мне понравилась функция es.rotation, так же можно нормальный кубик Рубика сделать, очень просто выходит, не надо морочить голову со сдвигами таблицы.
  15. Я незнаю, что имел ввиду Нео, но свой взгляд я уже высказал выше. Хеш это энергия+время, т.е. тоже ресурс, хоть и преобразование необратимое. Так как это ресурс, то у него есть некоторая стоимость, которая выясняется в результате торгов и добычи. Если их будут генерировать игроки, то нужен какой-то античит, чтобы хеш, сгенерированный на не родном клинете был недействителен в системе. А если генерацию производит какой-то центральный орган, то это превращается в очередной админшоп.
  16. Вангую, что это очередной бездонный проЭкт, типа ОпинФорекс, никто в эти фантики играть не будет, если даже его не забросят. Интересно мне посмотреть на тех хардкорщиков, которые возьмутся писать сайт-обработчик. А вот с хешами я бы поиграл, сделать как битки, только по-проще. К примеру вот такой хеш 000000000000000000b699db1c777238d5876b44cef240654c749dd09e1790efSHA256 будет примерно равноценен сундуку изумрудных блоков. В блокчейне имеем историю транзакций, либо ключ генерации хеша, сам хеш и ник последнего владельца, при транзакции просто меняется ник и все. Суть майнинга будет заключаться в получении редкого хеша (чем менее случайная последовательность, тем выше цена). Думаю, это больше подходит для вычислительной мощности ОпенКомпов, чем реалистичные криптовалюты.
  17. @KelLiN, я тоже это хотел предложить, но кто будет заниматься скриптом получения котировок?
  18. У меня странное дежавю, будто эта тема уже поднималась, но так как ее на форуме нет, значит она улетела в ресайклер. Если по-уму сделать, то это все-равно будет рулетка, а не биржа. Первая же пара нормальных ботов раздавят экономику. А с хешами не все так просто, если их ищет банк или какая-то другая организация, то их стоимость вначале близка к бесконечности, потому-что опенкомпутеровские компы очень медленно будут их искать. А если их будут искать игроки, то кто мне запретит написать брутфорс на ассемблере и при помощи видеокарты подбирать по десятку гигахешей в секунду? Но в общем, да, идея здравая. Если еще и чанклоадерам цены неподъемные сделать, то будет настоящая, почти рандомная экономика.
  19. Главное, чтобы игроки выразили интерес. Я на одном немецком сервере построил мини-казино, за месяц пришли только два игрока, хотя онлайн 50 человек. Было очень весело, стоит посреди поля большая постройка, внутри куча автоматов, я сижу один и играю с компом в покер.
  20. Зачем такая сложная формулировка? Рулетка на IT-light - просто и понятно, только зачем? Предлагали же как-то, но никто не выразил интереса.
  21. Если я правильно помню, unicode.find() удалили из мода, можно поискать в старой версии мода или на OpenPrograms.
  22. У меня была такая идея, но она так и осталась на бумаге. Главное меню [продать/купить] [хранилище] Меню хранилища [ Игрок ][ Хранилище ] [название предмета][ количество ][ количетво ] [iron Ore ][64 [+][-][128 [+][-] Меню магазина [ Игрок ][ Магазин ] [название предмета][количество][цена][количество][цена] [Cobblestone ][1024 ][0.1 ][9999999 ][1 ] Клик по предмету вызывает - Меню операций торговли/хранилища [Название предмета] [операция][количество][стоимость] [ продажа][ ][ ] [ покупка][ ][ ] Клик по количеству или стоимости вызывает цифровую клавиатуру. [1][2][3] [4][5][6] [7][8][9] [<][0][X]
  23. Ммм! Наконец-то маленькие квадратные пиксели!
  24. Тут у нас не патентное бюро, я немного ковырялся в МС1.8, да забил, потом увлекся магазинчиком на пимке и тоже забил.
×
×
  • Создать...