Doob
Гуру-
Публикации
1 089 -
Зарегистрирован
-
Посещение
-
Победитель дней
141
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя Doob
-
У роботов в 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 шагов: Предлагаю выкладывать в этой теме код и скрин работы разных клеточных автоматов, реализованных при помощи роботов.
- 9 ответов
-
- 5
-
-
- opencomputers
- муравей лэнгтона
- (и ещё 3 )
-
Да, это все очевидно, но для моей задачи задействовать видеокарту довольно трудно, потому-что надо подбирать код, который будет оптимально работать в minecraft мире. В общем, мне нужен редактор генетического кода для саморазвивающихся роботов, общий объем 8 килобайт, для мутации в пределах развитого поколения от 12 до 100 байт, на создание жизнеспособного проекта уйдет от 300k до 800k часов, даже с читерским ускорителем, поэтому надо задать точку отсчета, чтобы роботы развивались не с нуля. Хотя, я прекрасно знаю, что этот способ тупиковый и сама идея тоже. Робот, после появления обращается к коду в каждой ситуации, т. е. извлекает инструкции предков и пытается применить их в подходящих ситуациях, в пределах одного поколения, роботы голосуют за наиболее успешные участки кода и передают их в следующее поколение, если использовать ускоритель, то голосование между серверами будет невозможно (следовательно, тоже нужен алгоритм разбиения на блоки) Но в конечном итоге все сводится к клеточным автоматам, хоть и довольно сложным, но бессмысленным.
- 8 ответов
-
- 1
-
-
- lua
- параллельные вычисления
- (и ещё 1 )
-
В некоторых задачах это единственный способ. Сжималка это только пример, мне нужны способы разбиения словаря для брута на равные блоки, без предварительно генерации самого словаря.
- 8 ответов
-
- lua
- параллельные вычисления
- (и ещё 1 )
-
Долго же. А что если у меня 15 компьютеров?
- 8 ответов
-
- lua
- параллельные вычисления
- (и ещё 1 )
-
С выпиливанием вайтлиста стало как-то скучно. В общем имеем код "сжималки" с рабочим названием "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) Чтобы вернуть исходные данные, надо перебором генерировать из указанных символов последовательность, указанной длинны. Очень неэффективно, но не в этом суть. Нужен алгоритм, при помощи которого можно подбирать исходные данные на нескольких устройствах несвязанных во времени и пространстве, т. е. чтобы диапазоны перебора предварительно разбивались на блоки, которые алгоритм будет обрабатывать отдельно. Какие есть предложения?
- 8 ответов
-
- lua
- параллельные вычисления
- (и ещё 1 )
-
Хорошая штука - YouTube, теперь, вместо простыней текста и мануалов есть куча видео про все на свете.
-
Мм... Зачем жить, если жизнь - велик?)) Где зимуют раки, когда кончается игра? Без практики есть риск остаться хеллоувордщиком или скатиться до скрипт-кидди, тогда вообще нет смысла лезть в программирование.
-
Всего-лишь идея, начал делать свой пейнт с инструментами и палитрой, сразу в чат начали сыпать объявлениями о создании СуперМегаФотошопов. Так как получать точные координаты клика можно только через моник Т3, я это дело бросил, но в редакторе голограмм это реализовали.
-
Давно хотел сделать заливалку с кучей настроек, но пока допиливаю очень сложный алгоритм, вряд-ли между делом выйдет что-то толковое. С такими условиями я уже на трех проектах забросил постить скрипты. Кстати, спасибо за идею обменника через чат, очень удобно получается!))
-
OpenOS. От дуба до Мастера. Часть третья. [||·]
Doob прокомментировал Fingercomp запись в блоге в Fingercomp's Playground
Больше информации по шеллу! Его можно использовать во многих случаях, когда используются сторонние программы. Очень облегчит жизнь тем, кто только осваивается. Это излишества, хотя можно сделать надстройку к существующей системе. -
OpenOS. От дуба до Мастера. Часть вторая. [|··]
Doob прокомментировал Fingercomp запись в блоге в Fingercomp's Playground
Тогда достаточно прописать mkdir /kotiki/ /kotiki/moy/ Подпапки прекрасно создаются, следовательно противоречие с Пропишите команду mkdir /usr/bin/ /usr/lib rm /koriki можно не использовать, а сделать rename, т. е. mv /koriki /kotiki -
Добавить в event.lua надстройку, которая будет проверять дату изменения файлов, но это будет сильно грузить комп.
-
http://computercraft.ru/topic/436-zakaz№002-ozhidanie-programma-batareia-ogon-a/?p=14143 Вообще рандомный хардкор.
-
Иногда надо получить относительные или абсолютные координаты робота или узнать путь, по которому он прошел, чтобы вернуть робота назад. Я немного модифицировал стандартную библиотеку робота, теперь можно задавать/удалять/просматривать координаты робота. Нет функции сохранения координат в файл, поэтому после перезагрузки координаты сбросятся, поэтому это делать надо самостоятельно. Так же, нафигация не работает, если управлять роботом, как компонентом (т.е. в обход 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 Роботу необходим инструмент для разрушения блоков, для запуска надо указать координаты.
- 2 ответа
-
- 2
-
-
- navigation
- robot
- (и ещё 3 )
-
Хм! Мне понравилась функция es.rotation, так же можно нормальный кубик Рубика сделать, очень просто выходит, не надо морочить голову со сдвигами таблицы.
-
Я незнаю, что имел ввиду Нео, но свой взгляд я уже высказал выше. Хеш это энергия+время, т.е. тоже ресурс, хоть и преобразование необратимое. Так как это ресурс, то у него есть некоторая стоимость, которая выясняется в результате торгов и добычи. Если их будут генерировать игроки, то нужен какой-то античит, чтобы хеш, сгенерированный на не родном клинете был недействителен в системе. А если генерацию производит какой-то центральный орган, то это превращается в очередной админшоп.
-
Вангую, что это очередной бездонный проЭкт, типа ОпинФорекс, никто в эти фантики играть не будет, если даже его не забросят. Интересно мне посмотреть на тех хардкорщиков, которые возьмутся писать сайт-обработчик. А вот с хешами я бы поиграл, сделать как битки, только по-проще. К примеру вот такой хеш 000000000000000000b699db1c777238d5876b44cef240654c749dd09e1790efSHA256 будет примерно равноценен сундуку изумрудных блоков. В блокчейне имеем историю транзакций, либо ключ генерации хеша, сам хеш и ник последнего владельца, при транзакции просто меняется ник и все. Суть майнинга будет заключаться в получении редкого хеша (чем менее случайная последовательность, тем выше цена). Думаю, это больше подходит для вычислительной мощности ОпенКомпов, чем реалистичные криптовалюты.
-
@KelLiN, я тоже это хотел предложить, но кто будет заниматься скриптом получения котировок?
-
У меня странное дежавю, будто эта тема уже поднималась, но так как ее на форуме нет, значит она улетела в ресайклер. Если по-уму сделать, то это все-равно будет рулетка, а не биржа. Первая же пара нормальных ботов раздавят экономику. А с хешами не все так просто, если их ищет банк или какая-то другая организация, то их стоимость вначале близка к бесконечности, потому-что опенкомпутеровские компы очень медленно будут их искать. А если их будут искать игроки, то кто мне запретит написать брутфорс на ассемблере и при помощи видеокарты подбирать по десятку гигахешей в секунду? Но в общем, да, идея здравая. Если еще и чанклоадерам цены неподъемные сделать, то будет настоящая, почти рандомная экономика.
-
Главное, чтобы игроки выразили интерес. Я на одном немецком сервере построил мини-казино, за месяц пришли только два игрока, хотя онлайн 50 человек. Было очень весело, стоит посреди поля большая постройка, внутри куча автоматов, я сижу один и играю с компом в покер.
-
Зачем такая сложная формулировка? Рулетка на IT-light - просто и понятно, только зачем? Предлагали же как-то, но никто не выразил интереса.
-
Если я правильно помню, unicode.find() удалили из мода, можно поискать в старой версии мода или на OpenPrograms.
-
У меня была такая идея, но она так и осталась на бумаге. Главное меню [продать/купить] [хранилище] Меню хранилища [ Игрок ][ Хранилище ] [название предмета][ количество ][ количетво ] [iron Ore ][64 [+][-][128 [+][-] Меню магазина [ Игрок ][ Магазин ] [название предмета][количество][цена][количество][цена] [Cobblestone ][1024 ][0.1 ][9999999 ][1 ] Клик по предмету вызывает - Меню операций торговли/хранилища [Название предмета] [операция][количество][стоимость] [ продажа][ ][ ] [ покупка][ ][ ] Клик по количеству или стоимости вызывает цифровую клавиатуру. [1][2][3] [4][5][6] [7][8][9] [<][0][X]
- 123 ответа
-
- opencomputers
- lua
-
(и ещё 1 )
Теги:
-
Ммм! Наконец-то маленькие квадратные пиксели!
-
Тут у нас не патентное бюро, я немного ковырялся в МС1.8, да забил, потом увлекся магазинчиком на пимке и тоже забил.
- 123 ответа
-
- opencomputers
- lua
-
(и ещё 1 )
Теги:
