Arrtorius
Неужели я нашел чат lua
Yuriy
Arrtorius
Maxim
Отличное решение перевести разговор в русло lua
mva
пыщь, и снус снёс весь лог до 4 утра
Artem
на самом интересном, я не дочитал))
Слава
Надо сделать историю всех сообщений
Dima
Всем большой привет.
Dadaskis
Большой привет...
Dadaskis
Как-то двусмысленно
fgntfg
Dima
опа
Dima
аааа
Dima
вся ясно
Snusmumriken
Тэкс, читаем шапку, новички ссылки не постят : )
Dima
он ругается на codewars
ㅤ
Dima
короче про то что индексируются массивы начиная с 1 я уже познал ({"even","odd"})[number%2 + 1]
🦥Alex Fails
Snusmumriken
Хм, кстати не знал.
Dima
а теперь изучая наработки других разработчиков, я встетил неожиданный синтаксис:
local o = {[0] = "even", [1] = "odd"}
return o[number %2 ]
Зачем 0 и 1 в скобочках квадратных?
Snusmumriken
🦥Alex Fails
fgntfg
[π]
Dima
Dima
но вот синтаксис
Snusmumriken
То есть:
local o = {[0] = "even", [1] = "odd"}
==
local o = {}
o[0] = 'even'
o[1] = 'odd'
Dima
главное 11.1 Arrays на Lua Org не дает всех этих подходов.
Dima
вообще какой ресурс вы исопльзуете для быстрого оценнки синтаксиса
Snusmumriken
Ну и например:
key = 'foo'
o = {[key] = 12345}
print(o.foo) --> 12345
Snusmumriken
Dima
Хорошо, чтоб не многословить. Какими инфорционными ресурсами люди пользуются
Snusmumriken
1. Учебник programming in lua
2. Lua in 15 min (последний пункт статей)
Это есть в шапке.
3. Статьями, lua-users_org, stackowerflow, rosetta code и ещё кучкой всего (вроде гугла)
Dima
Dima
mva
Dima
Snusmumriken
Dadaskis
Snusmumriken
mva
кстати
mva
искал ещё более упоротый свой код и нашёл вот что:
Dima
но вот синтаксис
красота. Вообще Lua достаточно скромно представлена в ответах на запросы в Google.
mva
mva
(картинкой потому что бложек закрытый)
Dadaskis
Super
Ребята, подскажите плиз дурацкий вопрос, мне надо посортировать ассоциативный массив на луа, если у элементов равные значения - я не хочу их менять местами.
Dadaskis
2019, сортировали ассоциативный массив как могли
Super
я вот такую функцию написал
Super
function arsort(t)
if type(t) == "table" then
local temp = {}
for k, v in pairs(t) do
local tab = {}
tab["key"] = tostring(k)
tab["value"] = tonumber(v)
table.insert(temp, tab)
end
table.sort(
temp,
function(a, b)
if a["value"] > b["value"] then
return true
end
end
)
return temp
end
end
Super
но она работает не правильно
mva
Super
мне надо чтобы если value одинаковые, элементы не переставлялись
Super
если делаю a["value"] >= b["value"] пишет что функция сортировки неверная
Snusmumriken
Ещё одно: стандартная луёвая table.sort — это quiksort. Его отличительная особенность как раз то, что он в среднем быстр, но выдаёт произвольный порядок одинаковых значений (он же рассекает основную часть списка на много частей).
Напиши пузырьковую/гномью сортировку или ещё какую-нибудь, она вроде норм. Не используя table.sort а так же table.insert и table.remove, там нужны только свапы значений ключей.
ㅤ
Super
у меня вот так примерно - {"53190605":0,"64730688":0,"63111882":1} - на входе допустим так. я хочу чтобы вышло {"63111882":1,"53190605":0,"64730688":0}
Super
т.е. вроде бы примитивнейшая задача, нужно ее через одно место выходит решать
ㅤ
Snusmumriken
-- выдираем ключи из хеша
local t = {"53190605":0,"64730688":0,"63111882":1}
local key_list = {}
for key in pairs(t) do
table.insert(key_list, tonumber(key))
end
-- сортируем
table.sort(key_list)
-- проходим по сортированным ключам
for i, k in ipairs(key_list) do
k = tostring(key) -- они всё ещё строковые
local v = t[key]
-- что-то делаем с ключами и со значениями
end
Через задницу, но должно быть норм. Выдели в отдельную функцию.
Super
спасибо, я тоже о чем-то таком думал. конечно и вправду через задницу. но что делать, этого в языке не продумали.
ㅤ
Snusmumriken
> этого в языке не продумали
Хе, сам напиши класс таблиц, который на добавление ключей — пихает их в табличку (бинарной вставкой) в замыкании, а потом итерирует по ним в произвольном порядке : )
Слишком частный случай. Мне такое не нужно было вообще ни разу, например.
Ну, просто по мне, это всё равно что жаловаться что "в сишке не продумали списков, словарей, рингбуферов и динамических структур, выдали какой-то malloc непонятный".
Super
самое интересное, на стековерфлоу практически все советы неверные
Super
например https://stackoverflow.com/questions/6726130/sorting-a-table-in-descending-order-in-lua
Snusmumriken
Super
а есть обычная функция не кастом сортировки, которая просто числа от большего к меньшему отсортирует не переставляя одинаковые элементы?
Snusmumriken
Super
аналог arsort на пхп
Super
table.sort без параметров от меньшего к большему сортирует, а мне надо от большего к меньшему
Snusmumriken
В луа есть набор универсальных инструментов, на которых можно построить почти всё что угодно, это как сишка, например. Строй или угоняй.
(в гугле много чего есть, кстати)
Super
table.sort (table [, comp])
Sorts table elements in a given order, in-place, from table[1] to table[n], where n is the length of the table. If comp is given, then it must be a function that receives two table elements, and returns true when the first is less than the second (so that not comp(a[i+1],a[i]) will be true after the sort). If comp is not given, then the standard Lua operator < is used instead.
The sort algorithm is not stable; that is, elements considered equal by the given order may have their relative positions changed by the sort.
Super
это из доки