Gil
Уже написал про это.
Нет, Вену = третья форма, на пикче вторая.
Arrtorius
Неужели я нашел чат lua
Arrtorius
Maxim
Отличное решение перевести разговор в русло lua
mva
пыщь, и снус снёс весь лог до 4 утра
Artem
на самом интересном, я не дочитал))
Слава
Надо сделать историю всех сообщений
Dima
Всем большой привет.
Dadaskis
Большой привет...
Dadaskis
Как-то двусмысленно
Snusmumriken
Всем большой привет.
Можно чуть поменьше? А то места нет ((
Dima
опа
Dima
аааа
Dima
вся ясно
Snusmumriken
Тэкс, читаем шапку, новички ссылки не постят : )
Dima
он ругается на codewars
Тэкс, читаем шапку, новички ссылки не постят : )
А там нельзя белый список сайтов задать?
Dima
короче про то что индексируются массивы начиная с 1 я уже познал ({"even","odd"})[number%2 + 1]
Snusmumriken
А там нельзя белый список сайтов задать?
а) нет б) не нужно в) он раздуется до невиданных величин
🦥Alex Fails
Snusmumriken
Хм, кстати не знал.
а) нет б) не нужно в) он раздуется до невиданных величин
Если этого нет, то это не нужно. Почти подумал, что ты стал линуксоидом.
Dima
а теперь изучая наработки других разработчиков, я встетил неожиданный синтаксис: local o = {[0] = "even", [1] = "odd"} return o[number %2 ] Зачем 0 и 1 в скобочках квадратных?
Snusmumriken
а теперь изучая наработки других разработчиков, я встетил неожиданный синтаксис: local o = {[0] = "even", [1] = "odd"} return o[number %2 ] Зачем 0 и 1 в скобочках квадратных?
Чтобы индексировать с нуля, разработчику захотелось нулевых индексов. В квадратных скобках можно указать любой ключ по значению.
fgntfg
[π]
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
Lua-интерпретатор
Dima
Хорошо, чтоб не многословить. Какими инфорционными ресурсами люди пользуются
Snusmumriken
1. Учебник programming in lua 2. Lua in 15 min (последний пункт статей) Это есть в шапке. 3. Статьями, lua-users_org, stackowerflow, rosetta code и ещё кучкой всего (вроде гугла)
Dima
Snusmumriken
Lua in 15 min отличная статья для быстрого входа, лаконичная.
Только если у тебя есть опыт в другом ЯП, поэтому обычно не советую, а если и да — то после основного мануала.
mva
То есть: local o = {[0] = "even", [1] = "odd"} == local o = {} o[0] = 'even' o[1] = 'odd'
мне особенно нравится { [[=[Возможность[=Создавать=]Такие[=]Вот]=[ключи]=]] } 😃
Dima
мне особенно нравится { [[=[Возможность[=Создавать=]Такие[=]Вот]=[ключи]=]] } 😃
не ясно ка кэто работает. когда с левой стороны от = стоит [
Snusmumriken
не ясно ка кэто работает. когда с левой стороны от = стоит [
Потом поймёшь, это практически никогда не используется.
mva
кстати
mva
искал ещё более упоротый свой код и нашёл вот что:
Dima
но вот синтаксис
красота. Вообще Lua достаточно скромно представлена в ответах на запросы в Google.
mva
mva
(картинкой потому что бложек закрытый)
Dadaskis
Аве луа
Super
Ребята, подскажите плиз дурацкий вопрос, мне надо посортировать ассоциативный массив на луа, если у элементов равные значения - я не хочу их менять местами.
Snusmumriken
Ребята, подскажите плиз дурацкий вопрос, мне надо посортировать ассоциативный массив на луа, если у элементов равные значения - я не хочу их менять местами.
Ассоциативные массивы не сортируются и не имеют порядка. Перебор элементов ведётся в порядке, который вернёт хеш-функция. Если тебе действительно нужен порядок - сохрани где-то список ключей в нужном порядке и выуживай из ассоциативного массива.
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
но она работает не правильно
Super
мне надо чтобы если value одинаковые, элементы не переставлялись
Super
если делаю a["value"] >= b["value"] пишет что функция сортировки неверная
Snusmumriken
Ещё одно: стандартная луёвая table.sort — это quiksort. Его отличительная особенность как раз то, что он в среднем быстр, но выдаёт произвольный порядок одинаковых значений (он же рассекает основную часть списка на много частей). Напиши пузырьковую/гномью сортировку или ещё какую-нибудь, она вроде норм. Не используя table.sort а так же table.insert и table.remove, там нужны только свапы значений ключей.
мне надо чтобы если value одинаковые, элементы не переставлялись
> напиши Или найди либу с устойчивой сортировкой.
mva
список ключей в нужном порядке тоже не панацея
https://gist.github.com/raw/ecc698840ac47737a19ac0c56a0da045 😃
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
например https://stackoverflow.com/questions/6726130/sorting-a-table-in-descending-order-in-lua
Нет, часть норм. Просто для другого использования.
Super
а есть обычная функция не кастом сортировки, которая просто числа от большего к меньшему отсортирует не переставляя одинаковые элементы?
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
это из доки