@ProLua

Страница 19 из 307
Alex Фэils?︙
07.06.2016
14:20:48
это которые по их баг-трекеру

Snusmumriken
07.06.2016
14:25:47
Я, если честно, хотел бы в качестве фич к следующей версии больше метаметодов, возможность переопределения типов таблиц и прочей лабуды. В общем, превращение таблицы во что угодно.

И так делаю ООП в смешном стиле, с конструктором объекта в __call-метаметоде класса.

Плюшка
07.06.2016
14:32:56
я делаю в стиле JS

Google
Плюшка
07.06.2016
14:33:16
MyClass = function(a,b,c) ... end

Snusmumriken
07.06.2016
14:33:55
А методы?

Плюшка
07.06.2016
14:34:06
методы класса?

Snusmumriken
07.06.2016
14:34:10
Ага

Плюшка
07.06.2016
14:34:12
хз

я пока не юзал

Snusmumriken
07.06.2016
14:34:59
Хм. Ну вот, например, методы.

Плюшка
07.06.2016
14:35:36
просто у меня ничего серьёзного на луа нет

я пилил одну либу для OC

но забросил

Мерлин
07.06.2016
14:36:26
А в 5.3 integer вроде есть?

Snusmumriken
07.06.2016
14:36:34
Дальше можно: c = require 'constructor' d = c:new('int', 10, 20)

Есть но не нужно. Даблов хватает же.

Google
Snusmumriken
07.06.2016
14:38:17
Ну, если добавить лишний метаметод конструктору, то вместо d = c:new('int', 10, 20) Можно писать d = c('int', 10, 20)

Типа вызов таблицы как функции.

Люблю такие штуки. Минимизируется куча фигни.

Snusmumriken
07.06.2016
14:52:15
Это уже есть. Метаметод __call.

Alejandro
07.06.2016
14:53:11
Выпустили новую версию, что изменилось? Добавили новые неизвестные баги.

Snusmumriken
07.06.2016
14:54:01
Ага. И не исправили ещё не обнаруженные, потому что их НЕ НАШЛИ.

The Dude
07.06.2016
14:54:31
Мне кажется дальше 5.1 в луа ничё не поменялось.

И будет он как питон 2.7 ещё 3000 лет.

Alejandro
07.06.2016
14:55:18
В 5.2 чото добавляли важное

И будет он как питон 2.7 ещё 3000 лет.
Совершенство. На солнце пятен нет.

The Dude
07.06.2016
14:56:05
Совершенство. На солнце пятен нет.
Согласен. Не знаю, что ещё нужно в луа, кроме функций имеющихся в 5.1.

Нужно ещё только в луагите 2 гига лимит фиксануть.

Snusmumriken
07.06.2016
15:21:16
На тему метаметодов, которые сейчас есть.

Ну, это просто самое типичное. Через это легко сделать, например, свою длинную арифметику, или свой класс строк.

На тему функций которые добавили в lua 5.2-5.3, есть метаметоды типа __pairs, которые вызываются при проходе по таблице. Это очень удобно. Возможность легко делать хеш-таблицы с заданным порядком (не только сортирующиеся в процесе).

Свои итераторы кто-нибудь мутил?

The Dude
07.06.2016
15:36:56
@Snusmumriken расскажи что пишешь на луа?

Snusmumriken
07.06.2016
15:38:45
О, кстати, задачка на алгоритмическую сообразительность. Есть список объектов. Надо пройти по списку, и удалить часть объектов, которые соответствуют некоторому условию. Как это сделать в один проход, без ошибок выхода за пределы списка и без пропуска элементов?

Google
Snusmumriken
07.06.2016
15:38:52
@Snusmumriken расскажи что пишешь на луа?
Всё что нужно. Игрушки, сетевые либы, пакеры, пробиватели NAT. Даже веб-сервер на коленке. С другой стороны, гитхаба у меня нет, и я могу давать линк только на свой гугл-драйв.

Snusmumriken
07.06.2016
15:43:17
А чего не заведешь?
Лень обыкновенная. И я пишу одновременно на куче компьютеров, одни и те же файлы. Синхронизация гугл-драйва - самое удобное.

да вроде не сложно звучит
Не сложно. Попробуй.

The Dude
07.06.2016
15:44:44
Snusmumriken
07.06.2016
15:46:03
Не использую плагинов. Зиробрейн неплох, но я пишу на большом количестве языков. Notepad++.

Alex Фэils?︙
07.06.2016
15:46:10
Не сложно. Попробуй.
я ща занят, могу тебе пример на плюсах только если накидать

Snusmumriken
07.06.2016
15:46:34
Давай :3 Считай что тебе надо стереть часть динамического вектора. Ну, или динамического же списка. Если брать самый грубый вариант, количество строк то же что и у обычного цикла.

Snusmumriken
07.06.2016
15:49:54
оч нужно
У тебя есть хотя бы один комп с белым айпи? Мой NAT pusher регистрирует пользователя по udp, поддерживая соединение, и на запрос об айди выдает реальный айпишник. Формат сообщений - json.

Uncel
07.06.2016
15:50:05
В dynasm avx-512 завезли?

Мерлин
07.06.2016
15:51:02
А Прокся Ок Так и я могу
Собсно это первое, что приходит в голову

Snusmumriken
07.06.2016
15:51:06
Не совсем прокся. Через эту 'проксю' только получаем адрес и линкуемся напрямую. Зато оно может обслуживать кучу всего, выдавать список серверов по маске id и так далее. Главное - чтобы твое приложение отвечало на пинги хоть чем-то, иначе оно будет убито. Я буду чутка его перепиливать в сторону масштабируемости на манер DNS-сетей.

Совсем напрямую обход NAT невозможен

Google
Snusmumriken
07.06.2016
15:56:06
с v6 работает?
Luasocket не работает с ipv6. Да и когда его таки распространят, надобность в моём пушере отвалится. Use teredo, Luke. Через тередо - работает.

Alex Фэils?︙
07.06.2016
15:56:24
надо б им патч выслать)

Snusmumriken
07.06.2016
15:58:34
Примеров решения простой задачки не будет? :3

Alex Фэils?︙
07.06.2016
16:00:12
чтоб ипв6 работал)

Snusmumriken
07.06.2016
16:02:02
чтоб ипв6 работал)
Сложна. Это надо высылать конкретно в kepler project, которые занимаются разработкой luasocket. Слегка обидно что они заблокировали по умолчанию работу с serial port, можно было бы пилить, например, bluetooth-софтины. А разбирать и перекомпилировать лень.

Alex Фэils?︙
07.06.2016
16:03:23
template <typename T> struct list { T val; list *next; } // допустим, что в типе T есть функция bool remove_condition_is_true() // template<typename T> void rm_elem_from_list(list<T> &l) { list *tmp = &l; list *last = &l; while(tmp->next != 0) { if (tmp->val->remove_condition_is_true()) { last->next = tmp->next; } else { last = tmp; } tmp = tmp->next; }

Snusmumriken
07.06.2016
16:04:00
Молодец. Но сложна :3

Мерлин
07.06.2016
16:04:58
Snusmumriken
07.06.2016
16:07:41
Фактически, это аналог данного

Можно проще

Мерлин
07.06.2016
16:09:22
Я бы так делать не стал

Snusmumriken
07.06.2016
16:09:34
Почему? Что бы ты стал делать?

Мерлин
07.06.2016
16:16:01
Потому что сложность table.remove( . ) - O(n) То есть чтобы удалить первый элемент в таблице из тысячи записей, эта функция переберёт 999 элементов Я бы сделал как-то так local l = newlist {1, 2, 3, 4, 5, 6} --какая-нибудь релизация контейнера двунаправленного списка из миллиона существующих. Или написал бы сам урезаную версию в четыре строки local curr while curr do if not isvalid(curr.val) then curr.remove() end curr = curr.next() end Вот эта штука curr.remove() (удаление из списка) имеет сложность порядка O(1), то есть не зависит от длины списка

Snusmumriken
07.06.2016
16:19:45
Ок, тогда не while i < #t а while i <= #t. Переберём все элементы. У тебя сложность чуть выше, потому что лишнее условие. На деле, можно сделать еще проще, как для восприятия, так и по длине строк. Просто чуть-чуть подумать.

Мерлин
07.06.2016
16:21:31
Ок, тогда не while i < #t а while i <= #t. Переберём все элементы. У тебя сложность чуть выше, потому что лишнее условие. На деле, можно сделать еще проще, как для восприятия, так и по длине строк. Просто чуть-чуть подумать.
Лол Чувак Сложность алгоритма определяется не сколько сложностью строк Проверок у меня даже меньше, чем у тебя Но дело в том, что проверка - как раз быстрая операция А вот удаление из массива - очень тяжёлая

Snusmumriken
07.06.2016
16:21:31
Ответ: for i = #t, 1, -1 do if (valid) then table.remove(t, i) end end

Мерлин
07.06.2016
16:21:52
Проще для понимания =/= правильно

Snusmumriken
07.06.2016
16:22:04
Ответ правильный. Проверь. Работает лучше всего.

Мерлин
07.06.2016
16:22:18
Это работает Но работает фигово

Google
Мерлин
07.06.2016
16:22:34
Потому что удалять из массива воообще неправильно

За это на собеседованиях руки отрывают И правильно делают

Это не демагогия, а факт Ты ведь знаешь как работает table.remove ?

Она сдвигает ** каждый ** элемент выше удаляемого на одну позицию вниз

Неужели так сложно rtfm?

Snusmumriken
07.06.2016
16:24:39
Неужели так сложно rtfm?
А те что ниже не трогает.

Да, физически не сдвигает, если что. Меняет порядок слабых связей в лишней табличке ответственной за порядок

The Dude
07.06.2016
16:25:35
А как, кстати, в луа сразу задать размер массива?

Понятное дело динамика, но чтобы сразу памяти отхапать.

Мерлин
07.06.2016
16:26:36
А те что ниже не трогает.
И что? В среднем при равномерном распределении удаляемых элементов тебе придётся сдвинуть N/2 элементов

Snusmumriken
07.06.2016
16:27:30
The Dude
07.06.2016
16:27:45
Snusmumriken
07.06.2016
16:27:50
И скок это?
Делаешь пустой список на n элементов. Байты зависят от длины. Пустая таблица 50000x30000 весит полтора гига.

The Dude
07.06.2016
16:28:16
Сколько пустая таблица байтов?

Мерлин
07.06.2016
16:28:44
Не физически же.
Ну двигет она указатели вместо флоатов и что? Разница минимально, всё равно надо переназначить N/2 указателей

The Dude
07.06.2016
16:28:56
Ну тогда задачу можно решить просто чекрм.

Страница 19 из 307