Jump to content

No entiendo porque no anda


0xCiBeR

Recommended Posts

  • MTA Team

Este es mi pedazo de codigo..Estara malformulada la funcion?

Dice que falta un END en MinHeap:_tostring(index,depth) .. Pero no falta nada..Ya intente agregar un end y nada

  
MinHeap = {} 
MinHeap.__index = MinHeap 
function MinHeap.new() 
  return setmetatable({n = 0}, MinHeap) 
end 
function MinHeap:__tostring(index, depth) 
index = index or 0 
depth = depth or 0 
if index >= self.n then 
return "" 
end 
return "    ":rep(depth) .. tostring(self[index]) .. "\n" .. self:__tostring(index * 2 + 1, depth + 1) .. self:__tostring(index * 2 + 2, depth + 1) 
end 

Link to comment
  
MinHeap = {} 
MinHeap.__index = MinHeap 
function MinHeap.new() 
  return setmetatable({n = 0}, MinHeap) 
end 
function MinHeap:__tostring(index, depth) 
index = index or 0 
depth = depth or 0 
if index >= self.n then 
return "" 
end 
return ("    "):rep(depth) .. tostring(self[index]) .. "\n" .. self:__tostring(index * 2 + 1, depth + 1) .. self:__tostring(index * 2 + 2, depth + 1) 
end 

Es un error bastante sencillo, deberías intentar hacer tus propias funciones para evitarlos.

Link to comment

'MTA San Andreas 1.3\server\mods\deathmatch\resources(\[gameplay])\gps\MinHeap.lua':

MinHeap = {} 
MinHeap.__index = MinHeap 
  
local floor = math.floor 
  
function MinHeap.new() 
    return setmetatable({ n = 0 }, MinHeap) 
end 
  
function MinHeap:insertvalue(num) 
    self[self.n] = num 
    self.n = self.n + 1 
     
    local child = self.n - 1 
    local parent, temp 
    while child > 0 do 
        parent = floor((child - 1)/2) 
        if self[parent] <= self[child] then 
            break 
        end 
        temp = self[parent] 
        self[parent] = self[child] 
        self[child] = temp 
        child = parent 
    end 
    return true 
end 
  
function MinHeap:findindex(num, root) 
    root = root or 0 
    if root >= self.n or num < self[root] then 
        return false 
    end 
    if num == self[root] then 
        return root 
    end 
    return self:findindex(num, root*2 + 1) or self:findindex(num, root*2 + 2) 
end 
  
function MinHeap:deleteindex(index) 
    if index < 0 or index >= self.n then 
        return false 
    end 
    local deleted = self[index] 
    self[index] = self[self.n-1] 
    self[self.n-1] = nil 
    self.n = self.n - 1 
     
    local parent = index 
    local child, temp 
    while true do 
        child = parent*2 + 1 
        if child >= self.n then 
            break 
        end 
        if child < self.n - 1 and self[child+1] < self[child] then 
            child = child + 1 
        end 
        if self[parent] <= self[child] then 
            break 
        end 
        temp = self[parent] 
        self[parent] = self[child] 
        self[child] = temp 
        parent = child 
    end 
    return deleted 
end 
  
function MinHeap:deletevalue(num) 
    local index = self:findindex(num) 
    if not index then 
        return false 
    end 
    return self:deleteindex(index) 
end 
  
function MinHeap:size() 
    return self.n 
end 
  
function MinHeap:empty() 
    return self.n == 0 
end 
  
function MinHeap:__tostring(index, depth) 
    index = index or 0 
    depth = depth or 0 
    if index >= self.n then 
        return '' 
    end 
    return ('    '):rep(depth) .. tostring(self[index]) .. '\n' .. self:__tostring(index*2+1, depth+1) .. self:__tostring(index*2+2, depth+1) 
end 
  

Link to comment
  • MTA Team

Use las mismas variables para practicar como dije soy nuevo en esto.. Y estoy aprendiendo..

..Igual no importa.. Es increible como los scripters de la seccion en español le buscan la quinta pata al gato como dice el dicho..

Vas a la seccion en ingles y ahi no se preocupan por cosas como esta.. Salu2

PD: y no crean que porque pregunto bastante en el foro soy un Noob.Bajen un poco del pedestal.No quiero el offtopic asi que mejor cierren o borren este Post.

Link to comment

No es mi intención ni la de @SolidSnake14 insultarte, hacerte sentir mal o hacernos parecer a nosotros mejor, pero según veo el código en que necesitabas ayuda no tenia ninguna diferencia con el que esta en el recurso 'gps', fuiste tu quien pregunto por que dije que la función era de alguien mas y nosotros respondimos, deberías intentar relajarte y dejar de esforzarte por parecer un scripter profesional o algo así.

A fin de cuentas, esto es solo un juego.

"Tu" script:

function MinHeap:__tostring(index, depth) 
index = index or 0 
depth = depth or 0 
if index >= self.n then 
return "" 
end 
return "    ":rep(depth) .. tostring(self[index]) .. "\n" .. self:__tostring(index * 2 + 1, depth + 1) .. self:__tostring(index * 2 + 2, depth + 1) 
end 

El de 'gps':

function MinHeap:__tostring(index, depth) 
    index = index or 0 
    depth = depth or 0 
    if index >= self.n then 
        return '' 
    end 
    return ('    '):rep(depth) .. tostring(self[index]) .. '\n' .. self:__tostring(index*2+1, depth+1) .. self:__tostring(index*2+2, depth+1) 
end 

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...