Snusmumriken
Я тут на codewars решал задачки на Lua и попалась такая задачка
Write a function that when given a number >= 0, returns an Array of ascending length subarrays.
(Напишите функцию, которая при задании числа >= 0 возвращает массив подмассивов возрастающей длины.)
pyramid(0) => [ ]
pyramid(1) => [ [1] ]
pyramid(2) => [ [1], [1, 1] ]
pyramid(3) => [ [1], [1, 1], [1, 1, 1] ]
Решил задачку простым решением в лоб, после открылись решения других участников и одно из решений прям выделяется среди остальных:
return function(n)
return setmetatable({}, {__index = function()
return setmetatable({},{__index = function() return 1 end}) end})
end
Но к сожалению, решение генерации таблички не позволяет производить обход результирующей таблички.
Ещё N не используется, конечная метатабличка как бы бесконечная. Ещё оно будет работать со строковыми ключами. И ещё куча "но".
Так что результат в целом не соответствует задаче, и подходит только под случай когда пользователь пытается получить результирующий ключ напрямую а ля v = t[2][3] )
Gaisin
да, автотесты вроде проверяют только конечный результат
Alxius
тут случайно заглянул на Unigine blog, i они пишут о генерации целых текстур реалистичных на основе шейдеров и что можно новые делать используя целый редактор. https://habr.com/ru/company/unigine/blog/679134/ я в этом не слишком разбираюсь я все таки по 2д куда больше, но показанные видео впечатлили.
B
Мне вот лично с униженом ничего не понятно, они дали людям немного свободы и возможность немного поиграть с движком но он же у них всецело коммерциализирован, по уровню свободы до анриала далеко
Luсky
Медленный, собака.
Dmitriy
Всем привет!
Может кто-нибудь помочь с реализацией вот такого задания?
На языке программирования LUA:
Реализуйте кэш (в кэше должно быть 10 произвольных записей), содержащий в себе объекты следующего класса:
Id - идентификатор сущности (всегда числовой),
name - имя сущности,
descr - примечание,
amount - цифровое поле,
fn – поле содержащее функцию, которая выводит на экран всю информацию (значения всех известных полей) о переданной записи по ее идентификатору.
Затем необходимо:
1.Вывести на экран все значения из кэша (использовать для этого созданную ранее функцию), идентификатор которых является четным, а также вывести общее кол-во записей в кэше с указанием сколько из них являются четными.
2.Вывести на экран самое минимальное, максимальное и среднее арифметическое значение поля amount, для всех записей в кэше.
3.Вывести на экран значения name и amount из кэша для последней записи в кэше.
4.Добавить в кэш новое значение и вывести его на экран.
5.Добавить в кэш новую запись с дополнительным полем newField = ‘NewValue’ и вывести на экран значение всех полей добавленной записи.
Alexander
паодкиньте пожалуйста формулу преобразавания милесекунд в секунды. Например 5455 милесекунд привести к формату 5:455
Денис
Денис
Денис
Попробуй math.modf
Если нужно округлить до целой, где-то валялась самописная функция с Coderoad для округления
Aqendo
Александр
modf и округления это про < 5.3
Arsen
Всем привет
Arsen
пацаны прям срочно нужна помощь
Arsen
Есть объект, через который может проходить чел, если у него нвбулка true, всё вроде работает, но через некоторое время отключаются на всех объектах коллизия и всё падает под карту
Arsen
**
hook.Add( "ShouldCollide", "hospital_epta", function( ent1, ent2 )
if not IsValid(ent1) then return true end
if not IsValid(ent2) then return true end
if not ( ent1:GetClass() == 'money_printer' and ent2:GetNWBool( "hospital_death", false) == false) then return true else return false end
end )
**
Arsen
Александр помогите
retrocat
бан, реклама
retrocat
Snusmumriken
Snusmumriken
И да, давай более подробную инфу.
Что за двигло? Что за хуки? Где как и так далее.
Arsen
Arsen
gLua
Александр
Александр
Т.е. я бы рекомендовал поотлаживать и проследить причину отключения столкновений, ибо то, что всё падает под карту из-за выключения физики столкновений. Плюс пара запросов в поисковике не выдали мне GetNWBool( "hospital_death", false) ситуаций, когда в данной функции есть второй параметр. Т.е. вполне логично, что в SetNWBool() два параметра, но откуда они в Get я не совсем понимаю.
Arsen
Я данный код с сборки взял
Arsen
Arsen
Мне нужент код чтоб текстуры не падали а я не могу найти
Arsen
(
Александр
Плюс я прямо скажу не в теме gMod'а, поэтому особо не подскажу. Единственное что меня смущает, что позитивное true возвращается на ситуациях, когда сущности не допустимы, другими словами я не совсем понимаю, для чего нужна данная функция возврата. Самое простое - найдите документацию по крюкам, посмотрите за что отвечает значение функции.
Arsen
понял
Arsen
спасибо
Александр
А лучше поискать тематический форум по этой теме, там скорее всего аудитория и живее и больше в теме разбирается, ибо это больше не луа, а спецефичная для среды вещь.
Arsen
hook.Add( "ShouldCollide", "CustomCollisions", function( ent1, ent2 )
-- If players are about to collide with each other, then they won't collide.
if ( ent1:IsPlayer() and ent2:IsPlayer() ) then return false end
end )
Arsen
вот такое есть
Arsen
я нашел
Arsen
а ссылку скидывать можно тут ?
Александр
Arsen
)
Александр
А у вас столкновение должно быть или нет ? Т.е. вы отлавливаете момент столкновения для чего ? Для того чтобы его остановить ?
Arsen
Есть объект, через который может проходить плеер
Arsen
через некоторое время отключаются на всех объектах коллизия и всё падает под карту
Aqendo
Может стек переполняется или что-то такое?
Arsen
Александр
Честно говоря я не знаю, тут либо к тем кто в теме вопросы задавать, либо отлаживать
Alexander
kirill
Всех приветствую.
Вопрос к тем, кто использовал совместно Lua и Rust.
Пытаюсь на rust написать модуль для Lua. Пишу на винде, использоваться модуль тоже будет на винде, поэтому решение именно под эту ось ищу.
Пробовал использовать просто lua под раст, но под виндой он не собрался. потом посоветовали mlua, который с помощью msys2 удалось собрать и даже написать на нём модуль.
Но модуль получился под Lua5.1 вместо необходимого мне 5.3.
Я попытался найти решение, но так и не понял как в mlua указать, для какой версии нужно собирать.
Если кто-то поможет, буду благодарен.
Snusmumriken
Ой какая специфичная фигня
Inellok
Хз. На цпп пишут же, почему бы на раст не (пере)писать
Igor
Igor
Среди них имеется lua53, по дефолту он выключен
Igor
Ща, найду
Igor
https://docs.rs/crate/mlua/latest/features#lua53
Igor
Во
Igor
Флаги при сборке указываются, если что.
Igor
Если мне память не изменяет, что-то типа такого: cargo build --features "lua53"
🐅🤦♂️
Или нужные фичи указать в Cargo.toml проекта, в секции библиотек.
Igor
А, ну кстати да
usernameak
как я могу получить какую-то ссылку на луашный объект, чтобы потом использовать её в сишном коде?
usernameak
при этом чтобы GC этот объект не освобождал пока эта ссылка существует
usernameak
хм. luaL_ref это то что мне нужно?
Snusmumriken
Snusmumriken
Получаешь ссылку, а потом такой вытягиваешь в стек по ссылке из REGISTRYINDEX. Если больше не нужно — unref.
Roman
Доброго дня! Подскажите курсs по lua, на русском желательно, условно бесплатный, может кто посоветовать.
Snusmumriken
Ну и второй очевидный вопрос — для каких целей?
Snusmumriken
Тут нет индексации по числам. Для её реализации — получаешь кусочек строки:
str = "DDDDFFFFSSSSSSS"
третий_символ = string.sub(str, 3, 3)
кусок_строки_с_3_по_5_символы = string.sub(str, 3, 5)
К строкам можно применять ООПшные фишки, вроде
третий_символ = str:sub(3, 3), вызывать функции как методы. В луа методы вызываются через двоеточие, это такой синтаксический сахар.
Roman
Тут нет индексации по числам. Для её реализации — получаешь кусочек строки:
str = "DDDDFFFFSSSSSSS"
третий_символ = string.sub(str, 3, 3)
кусок_строки_с_3_по_5_символы = string.sub(str, 3, 5)
К строкам можно применять ООПшные фишки, вроде
третий_символ = str:sub(3, 3), вызывать функции как методы. В луа методы вызываются через двоеточие, это такой синтаксический сахар.
😳😳😳 Даже, непривычно слышать. Тогда с самого начла пробежать, п о базе. Посмотрю рекомендованное видео. СПС
Snusmumriken
И через хитрую жопу можно добавить числовые индексы, вроде:
debug.getmetatable("").__index = function(self, key)
if type(key) == "number" then
return self:sub(key, key)
end
return string[key]
end
str = "Hello!"
print( str[2] ) --> e
Roman
Snusmumriken
Лучше к этому не привыкать. Это изменение стандартного поведения строк, что не очень хорошо для консистентности.