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

Лидеры


Популярный контент

Показан контент с высокой репутацией за 21.03.2024 во всех областях

  1. 1 балл
    Очень интересно получается: Через наковальню знак параграфа нельзя добавить, зато можно через компьютер. Через наковальню можно задать имя робота длиной максимум 30 символов, а через компьютер — больше мегабайта. И это, скорее всего, не предел, просто для вызова функции rep не хватило оперативной памяти. Ограничение EEPROM в 4096 байт с этого момента потеряло свою актуальность. Upd: Обсудили этот трюк в дискорде: Я заметил, что видимое имя робота обрезается по модулю 64 KiB. Например, при длине имени 64*1024+1 видимое имя будет состоять из одного символа, по крайней мере, при использовании стандартных ASCII-символов. @ProgramCrafter сделал прогноз, что имя длиннее 32KiB не переживёт перезагрузки сервера. Так и вышло: сохранился лишь огрызок из 32769 символов. Формат NBT не позволяет сохранить больше.
  2. 1 балл
    Ок, вот мои наработки по теме: https://gist.githubusercontent.com/Krutoy242/1f18eaf6b262fb7ffb83c4666a93cbcc Документацию напишу позже. Пока, как я и говорил, робот (или дрон!) умеет выполнять свое имя как Луа-код. Но к тому же, он может всё сокращать до 1-2 символов. Например, вот такая строка сторгует всё что есть у жителя: ~:Tg(){?!v{tr}} А вот мега программа в 54 символ для дрона, который носит предметы из одного вейпоинта к другому: Dm(tb.u(Nf(300)[a++%2+1].p))s(3)~#{Dsel(i)Dd(0)Dsu(0)} В этом примере есть такие сокращения: a++ это продвинутая версия a=a+1, только она работает даже если а==nil s(3) расшифруется как sleep(3) ~#{BODY} получится for i=1, (R or D).inventorySize() do BODY end Еще, я добавил крутые фичи связанные с "трубами" - как в лямбда программировании, когда мы можем скомпоновать функцию, которая будет передавать результат своей работы в другую функцию. Но пока не придумал как ими пользоваться. Главная фишка это утилизировать битовые операции. Я сделал такое: a|b превращается в function(c) return b(a(c)) end. Но оказалось, что это почти бессмысленно, если мы не можем получить ключ\значение из цикла. В итоге, я уже могу написать вот такую функцию: _4|(Dsel|Dd&0) Получится вот так (примерно): for k,v in pairs{1,2,3,4} do (function() return D.drop(0) end)(D.select(v,k)) end Но как то криво всё равно. Не элегантно. Но уже можно пользоваться. javaw_0VdCQylZec.mp4
  3. 1 балл
    У меня есть идея, но она ломает изначальный замысел. С точки зрения пользователя я бы предпочёл использовать стандартный синтаксис Lua, и чтобы все необходимые сокращения кода за меня выполняла программа. Получилось бы подобие упаковщика кода в последовательность ASCII-символов, которые можно было бы ввести через наковальню.
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...