@ProLua

Страница 202 из 307
Philipp
14.11.2017
13:52:15
Получаешь ответ

Тут даже пузырек для сортировки подойдет

Код писать не буду - сам уверен сможешь

(Это если я задачу понял правильно)

Google
annelin
14.11.2017
13:56:37
бля, сорь, не сдержался

a,b,c,d,e = io.read("*number", "*number", "*number", "*number", "*number") -- проверять не надо же? arr = {a,b,c,d,e} -- лол table.sort(arr) res = (arr[2]+arr[3]+arr[4])/3

annelin
14.11.2017
13:58:12
ну, это же как бы неправильное решение (:

так делать ни в коем случае нельзя!

не примут скорее всего, и правильно сделают(:

Philipp
14.11.2017
13:59:06
А чо нет то. Отработать должно

annelin
14.11.2017
13:59:17
ну эээ да

fgntfg
14.11.2017
13:59:17
Пишите на брейнфаке, 4tehlulz

annelin
14.11.2017
13:59:21
но это читерство немножко

Snusmumriken
14.11.2017
13:59:59
Ммм. Вариант для детей. ratecount = 5 rate = {} min, max = math.huge, -math.huge for i = 1, ratecount do -- get rates print('Enter '..i..' rate') local v = io.read('*n') -- пока не введут число, запрашивать снова while not v do print('Enter '..i..' rate') v = io.read('*n') end if v < min then min = v end if v > max then max = v end rate[i] = v end removed_min, removed_max = false, false -- удаляем то что не нужно (даже если оценки повторяются) for i = #rate, 1, -1 do if removed_min and rate[i] == min then removed_min = true table.remove(rate, i) end if removed_max and rate[i] == min then removed_max = true table.remove(rate, i) end end answer = 0 for i = 1, #rate do answer = answer + rate[i] end answer = answer/#rate -- average print('Average: '..answer)

annelin
14.11.2017
13:59:59
я думаю, суть задачки всё-таки в ручной сортировке, нет?

Google
Snusmumriken
14.11.2017
14:00:49
А у меня - для детей, чтобы мог объяснить потом.

Philipp
14.11.2017
14:00:55
annelin
14.11.2017
14:02:34
да, одинаково

боюсь, time показывает время запуска интерпретатора, а исполняется оно мгновенно в любом случае :)

Philipp
14.11.2017
14:03:21
У Снуса мб даже каплю быстрее

Snusmumriken
14.11.2017
14:03:35
Это детский вариант простой задачи :< Известны 10 преимуществ Паскаля перед Си. Я приведу только одно, но самое важное. На Си вы можете написать: for(;P("\n").R--;P("\ "))for(e=0x3DC;e--;P("_ "+(*u++/8)%2))P("| "+ (*u/4)%2); На Паскале Вы НЕ МОЖЕТЕ такого написать. P.S. Это преимущество.

Philipp
14.11.2017
14:03:53
:3

annelin
14.11.2017
14:05:49
добавлял тут в луарокс сишный модуль это оказалось офигенно просто и понятно!

один из первых более-менее заметных контрибьютов в опенсурс я няша! (нет)

Philipp
14.11.2017
14:09:45
У нас на луа....
Ни спасибо, ни до свидания...

Snusmumriken
14.11.2017
14:10:33
a,b,c,d,e = io.read("*number", "*number", "*number", "*number", "*number") -- проверять не надо же? arr = {a,b,c,d,e} -- лол table.sort(arr) res = (arr[2]+arr[3]+arr[4])/3
Тогда уж arr = {io.read("*n", "*n", "*n", "*n", "*n")} table.sort(arr) res = (arr[2] + arr[3] + arr[4])/3 У тебя целая строчка лишняя, на преобразование в массив.

Philipp
14.11.2017
14:11:31
Что тейблсорт возвращает?

Snusmumriken
14.11.2017
14:11:49
Ничего. Это обидно. Возвращал бы сортированную таблицу - можно было бы в две строки.

annelin
14.11.2017
14:11:56
о, не знал, что так можн

Philipp
14.11.2017
14:11:56
Вот, да

annelin
14.11.2017
14:12:18
точнее, лень проверять было %)

Snusmumriken
14.11.2017
14:17:24
У нас на луа....
Кстати, что за заведение, где на луа заставляют писать? : )

Snusmumriken
14.11.2017
14:26:06
Я пока не видел школ где учат по opencomputers из майнкрампфта, и задачи не мкпфтские а обычные, "школьно/колледже-первокурсные".

Google
annelin
14.11.2017
16:33:10
посоны, медленная генерация текстового файла из таблички :(

есть способ пофиксить?

peers = { peer = { key=value, key=value, key=value }, peer2= {key=value, key=value } }

for peer,options in pairs(peers) do config = config..peer for k,v in pairs(options) do config = config..k..'='..v..'\n' end end

Alexey
14.11.2017
16:47:32
local buf = {} for peer,options in pairs(peers) do buf[#buf + 1] = peer for k,v in pairs(options) do buf[#buf + 1] = k..'='..v..'\n' end end config = table.concat(buf)

Group Butler [beta]
14.11.2017
19:10:28
Добро пожаловать в чат pro.lua, Иван! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Vlad
15.11.2017
01:36:04
звините глуп вопрос мож но как оно работает?

if val > 1 then return end

Snusmumriken
15.11.2017
01:59:28
1. val > 1 - логическое выражение, возвращает true или false. 2. return - прерывает текущую функцию и возвращает из неё nil.

Vadim
15.11.2017
06:27:35
кстати, да. не возвращает ничего. Просто выходит.

> function a() if 2 > 1 then return end end > return a() >

Vlad
15.11.2017
11:38:54
я просто решил на love2d глянуть там столкнулся с такой вещицей для ограничения дельты в случае когда мы цепляем окно и апдейт не вызывается делали как то так if dt > 0.040 then return end и вот и стало интересно а как оно работает

я просто не въеду дельта постоянно аккумулируеться и когда мы делаем return из чего конкретно мы выходим? love.update(dt) if dt > 0.040 then return end if x > 400 then dir = -1 elseif x < 100 then dir = 1 end x = x + dir * 60 * dt end потому что если : 2. return - прерывает текущую функцию и возвращает из неё nil. то мы же и так не вызываем ее когда таскаем окно

Snusmumriken
15.11.2017
11:50:49
я просто не въеду дельта постоянно аккумулируеться и когда мы делаем return из чего конкретно мы выходим? love.update(dt) if dt > 0.040 then return end if x > 400 then dir = -1 elseif x < 100 then dir = 1 end x = x + dir * 60 * dt end потому что если : 2. return - прерывает текущую функцию и возвращает из неё nil. то мы же и так не вызываем ее когда таскаем окно
Нет, это "защита" от слишком кривого fps. Ну, знаешь, когда ты как раз таскаешь окно, кадры не рендерятся, игра ставится на "паузу", но dt как раз аккумулируется. Допустим, ты привязал движение к dt. Прыгнул персонажем, схватил окно мышкой, подержал десять секунд, и в игре - к координатам персонажа прибавился вектор движения умноженный на dt = 10. Персонаж пролетел вверх вообще всю карту, а если есть потолок и коллизия не continious - вообще за пределы карты нафиг.

Vlad
15.11.2017
11:53:40
а логика работы куска какая?

Snusmumriken
15.11.2017
11:53:54
Но способ кривой, по хорошему, игра должна не зависеть от размера dt, и интегрировать по долям от него, т.е. например подержали окно 10 секунд - обновили игру примерно 30 * 10 раз, или обновили 5 раз, а остальное отбросили, типа пауза.

Логика работы - если dt слишком большой - кадр пропускается.

Elias
15.11.2017
11:58:09
Ага, fixed delta - самый стабильный и надёжный подход, из моего опыта

Особенно для физики

Google
Elias
15.11.2017
11:59:40
Кратко говоря, зафиксированный dt делится на какой-то fixed dt (например 1/60 секунды для 60 ФПС), и потом столько раз вызывается update

При этом вместо dt в логике используется 1/60 секунды эти

Snusmumriken
15.11.2017
12:00:56
Не совсем. На тормозах, всё остальное тоже начинает тормозить. Если делать dt гибким - должно быть норм, по хорошему. Ну, примерно так: if dt > 0.04 then dt = 0.04 end — будет тормозить только если fps реально низкий, в противном случае, даже если fps = 10000000, оно всё равно не будет ни слишком быстрым, ни слишком медленным.

Elias
15.11.2017
12:03:52
Да, при тормозах, когда dt приходит большой, лучше не делать апдейтов, либо ограничивать их количество сверху

Некоторые крупные игры так делают (может даже много таких) Если что-то тормозит, то они по сути ставятся на паузу, пока не восстановится производительность Не лучший метод, но не ломает игру по крайней мере (иначе можно получить огромный dt и летать через стены)

brestows
16.11.2017
10:17:40
Народ, привет, подскажите можно ли подключить lua файл название которого хранится в переменной, например local hostname=gethostname(); require hostname; Как это правильно сделать?

Philipp
16.11.2017
10:18:09
Да

Require(hostname)

brestows
16.11.2017
10:18:23
Аааа

Скобки етид их

Спасибо огромное :)

Philipp
16.11.2017
10:18:46
Просто в Луа строчные аргументы, если он единственный, можно передавать без скобок

Как и таблицы

f({}) и f{} f("") и f”” - одно и то же

brestows
16.11.2017
10:19:42
Спасибо :) я lua только учу, спасибо большое

Elias
16.11.2017
10:22:27
И ещё есть крутая вещь, о которой я долго не знал. Если у тебя скрипт лежит в "lib/math/functions.lua", то можно сделать: require 'lib.math.functions' Красиво выглядит такой синтаксис :D

Чай
16.11.2017
10:42:45
local somefunc = require "somelib".somefunc

Snusmumriken
16.11.2017
10:44:55
модуль somelib должен возвращать локальную таблицу, соответственно

Elias
16.11.2017
10:45:40
Да, вот это тоже крутая вещь Жаль, что нельзя как в Питоне импортировать лишь часть функций из модуля. Все равно ведь require "somelib" положит ВСЮ таблицу в package.loaded

Чай
16.11.2017
10:46:25
>модуль somelib должен возвращать локальную таблицу, соответственно Естественно. А вот в Мунскрипте такая штука не прокатит — нужно писать require("somelib").somefunc.

Google
Elias
16.11.2017
10:47:37
Чай
16.11.2017
10:48:12
Какая разница? Ты делаешь модули которые реквайрятся пол часа?
local lpeg = require "lpeg" local V = lpeg.V local Ct = lpeg.Ct ... Неудобно.

Snusmumriken
16.11.2017
10:48:39
Да ладно.

Elias
16.11.2017
10:48:45
Какая разница? Ты делаешь модули которые реквайрятся пол часа?
Нет, просто как-то более явно показывается зависимость от конкретных вещей + память не тратится Где-нибудь в системах с маленьким кол-вом RAM это может иметь значение. Но это так, теоретически. Мне норм и то, что есть. Просто "ах если бы, ах если бы"

Чай
16.11.2017
10:48:52
import V, C, Ct from require "lpeg" Удобно.

Elias
16.11.2017
10:51:18
Да, но потом же освобождает память, которую уже не использует. Ну и Lua потенциально мог бы использовать меньше RAM после загрузки модуля и выпила ненужных функций. Но это сложно реализовать с системой модулей Lua, да. Кто-нибудь писал что-нибудь серьёзное на Moonscript? Хотел заценить как-нибудь и узнать, каковы ощущения от написания на нём. :D

Tverd
16.11.2017
11:18:35
Отлично на нем пишется... Ну игрушки точно. Я про мунскипт

Чай
16.11.2017
11:19:44
Пишу на нём большую часть игры на love2d. Удобен тем, что писать меньше кода, какие-то вещи делаются быстрее (import, items = [x * 2 for _, x in ipairs items], быстро сделать из куска кода функцию и сразу куда-нибудь её воткнуть (например, в pcall) — мелочи, но приятно). Классы встроенные удобны (правда, компилируются в большую кучу кода). Проблемы, с которыми столкнулся (первая — не в этом проекте): нельзя делать цепочки методов в несколько строк. Если в Lua можно писать вроде from(array) -- lualinq :where(function(item) -- ... end) :select(function(x) -- ... end):toArray() , то в Moonscript либо в одну строку, либо никак. Всякие линтеры под него менее развиты (тот же luacheck умеет больше, чем moonc -l). Пришлось вставить костыли для вывода правильных (не луашных) номеров строк в traceback'ах при падении.

Tverd
16.11.2017
11:22:28
with flag = display.newImage @view, "assets/images/flags/flag_#{@name}.png", 0, 0, true .name = 'flag_'..@name \scale 0.342, 0.342 \addEventListener 'touch',@

Чай
16.11.2017
11:22:39
with — не то.

Tverd
16.11.2017
11:22:43
так вполне работает, щас найду еще цепочку

Чай
16.11.2017
11:23:41
Если используешь with, то дёргаются функции из одной таблички, а в примере по цепочке передаётся каждый раз новая таблица. Даже issue есть на эту тему: https://github.com/leafo/moonscript/issues/347

Tverd
16.11.2017
11:24:42
кстати, пока нашел - в фукцию отправляется таблица с ключами display.newBitmapText parent: @view :text x: 0, y: 96 font: 'BebasNeue_64_bold' fontSize: 34

Не могу найти, помню сильно этовался, но вроде победил

Не вышло, может и не работают цепочки, во всяком случае не компиляются

brestows
16.11.2017
13:33:25
/help@FailsBot

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