Anonymous
ㅤ
local map = {
{1, 2, 3, 3},
{1, 2, 3, "I"},
{1, 2, 3, 3},
}
local coord = {
x = 1, y = 1
}
local function find_start(map, height, width)
local res = coord;
while map[res.y][res.x] ~= 'I' and res.y < height do
res.x = 1;
while map[res.y][res.x] ~= 'I' and res.x < width do
res.x = res.x + 1;
end
res.y = res.y + 1;
end
if res.y == height then
error("File has no start");
end
return res;
end
print(find_start(map, 2, 4))
Я правильно понял, как это должно использоваться?
Highly Likely
Highly Likely
Ну, то есть, внутрь второго while’а поставь print(res.x)
ㅤ
Не должно ли тут быть <= вместо <? И нет ли у map кастомного __index?
dmatseku
а все отбой
Anonymous
local map = {
{1, 2, 3, 3},
{1, 2, 3, "I"},
{1, 2, 3, 3},
}
local coord = {
x = 1, y = 1
}
local function find_start(map, height, width)
local res = coord;
while map[res.y][res.x] ~= 'I' and res.y < height do
res.x = 1;
while map[res.y][res.x] ~= 'I' and res.x < width do
res.x = res.x + 1;
end
res.y = res.y + 1;
end
if res.y == height then
error("File has no start");
end
return res;
end
print(find_start(map, 2, 4))
Я правильно понял, как это должно использоваться?
А не влияет ли то что у тебя в map I в двойных кавычкая, а в теле правила с одними?
dmatseku
я тупой
ㅤ
ㅤ
Хоть это и не совсем по теме.
dmatseku
хотя такая ошибка в другой проге была, но именно в этой функции все вроде норм
dmatseku
local map = {
{1, 2, 3, 3},
{1, 2, 3, "I"},
{1, 2, 3, 3},
}
local coord = {
x = 1, y = 1
}
local function find_start(map, height, width)
local res = coord;
while map[res.y][res.x] ~= 'I' and res.y < height do
res.x = 1;
while map[res.y][res.x] ~= 'I' and res.x < width do
res.x = res.x + 1;
end
res.y = res.y + 1;
end
if res.y == height then
error("File has no start");
end
return res;
end
print(find_start(map, 2, 4))
Я правильно понял, как это должно использоваться?
и да, первую часть условия первого цикла походу надо вынести в конец его тела в качестве if-break, а так все вроде норм
ㅤ
ㅤ
dmatseku
та не, уже ошибки нет
Highly Likely
ㅤ
Что?
Если не доходишь до конца массива, то вываливаешься в условие с ошибкой.
ㅤ
Если I в конце.
Highly Likely
dmatseku
у тут бойня.
function find_start(map, height, width)
local res = coord;
while res.y < height do
res.x = 1;
while map[res.y][res.x] ~= 'I' and res.x < width do
res.x = res.x + 1;
end
if map[res.y][res.x] == 'I' then
break;
end
res.y = res.y + 1;
end
if res.y == height then
error("File has no start");
end
return res;
end
dmatseku
рабочий вариант, без выпадения исключений
Highly Likely
Ну значит проблема в том, как ты сравниваешь строки
dmatseku
Highly Likely
Может быть, у тебя не ‘I’
Highly Likely
Highly Likely
Как и на что?
dmatseku
dmatseku
Как и на что?
getmetatable("").__index = function(str, i) return string.sub(str, i, i); end
dmatseku
иначе str[i] у меня не работает
Highly Likely
Ну, да, ведь в Lua строки –– не массивы символов :-)
Highly Likely
Шутки ради вот этот кусок замени
Highly Likely
if map[res.y][res.x] == 'I' then
break;
end
на
if map[res.y][res.x] == 'I' then
print(‘Blablabla’)
break;
end
Highly Likely
И покажи вывод консоли
dmatseku
dmatseku
по-другому здесь может и можно выйти, но уже не вспомню как
ㅤ
dmatseku
ахах, да я уже просто общаюсь, я ж уже давно написал, что решил проблему
dmatseku
попросили вставить - я вставил
ㅤ
А, всё. Туплю спросонья.
dmatseku
может мы просто не поняли друг друга
ㅤ
dmatseku
о, неплохо
dmatseku
кст, а как тут память устроена? тупо все в куче выделяется?
dmatseku
а то я видел про уборщика, но не видел про выделение ничего
Anonymous
Подскажет кто нибудь как проверить существование папки, плиз?) 🙃
dmatseku
ну, если не ответят, то вродь можно прикрутить фрагмент на си, а там уже dirent
Anonymous
Эм... Я что то сомневаюсь что интерпритатор GG такое воспримет
dmatseku
хотя это же lua к си прикручивается, а не си к lua
dmatseku
но я где-то видет про полукровный код
Anton
Anonymous
Вроде да
Anonymous
Все функции луа 5,3 вроде может
Anton
Ну тогда примерно так:
tarantool> os.execute('test -d /tmp')
---
- 0
...
tarantool> os.execute('test -d /ololo')
---
- 256
...
tarantool>
Но это под linux и не особо изящно
Anonymous
Спасибо, сейчас пойду почитаю что делает os.execute и проверю
fgntfg
https://stackoverflow.com/questions/1340230/check-if-directory-exists-in-lua
dmatseku
а можно как-то сдвинуть массив? т. е. сделать массив {1, 2, 3, 4} {2, 3, 4} без полного ручного копирования?
fgntfg
shift?
fgntfg
pop?
fgntfg
кажется Lua такое умеет
dmatseku
та все, я список зафигачил
dmatseku
трудно ориентироваться в переменных, не могу до конца понять, когда я беру ссылку, а когда копию
Highly Likely
Highly Likely
(ну почти всё)
dmatseku
ну хоть подобность джавам\шарпам обнадеживает
dmatseku
конечно, ручное управление больше нравится, но не при динамической типизации
🐅🤦♂️
🐅🤦♂️
dmatseku
а можно как-то объекты вынести в отдельный файл? типа есть
coord = { x = 1, y = 1, parent = 0 }
и хотелось бы не переписывать его постоянно
dmatseku
долбанный шитф не нажимается
Highly Likely
dmatseku
сяб)
Anonymous
Парни, а луа может копировать файлы из одной директории в другую?
Anonymous
С существованием папок разобрался,встал на другом моменте
Anonymous
Мне нужно создавать текстовый файл, с параметрами профиля графики, профили есть готовые заранее
Anonymous
Но они в hex'e
Anonymous
Anonymous
Anonymous
Не въеду как мне корректно записать в переменную это значение, чтоб оно в итоге записало это в конечный текстовый файл