SK

reverse(str)

Por Skymagnum, 05 de mai. de 2013 em Mods, funções e outros

function
lua
4
1.4k
SkymagnumS
05 de maio de 2013 às 22:45

G712z042[/pastebin]

 

Input:

local k = "Ola, seu fdp"

print(reverse(k))

 

Output:

fdp seu Ola,

caoticC
09 de maio de 2013 às 15:14

Digamos que eu gosto de usar o while:

 

function reverse(str)
local t = string.explode(str, " ")
x = #t
y = ""
while x > 0 do
_ = x-1 > 0 and t[x].." " or t[x]
y = y.._
x = x-1
end
return y
end

print(reverse("Ola oi ss kk"))

Editado Maio 9 por caotic

dalvorsnD
10 de maio de 2013 às 18:03

ficou até boa, mas você não precisa transformar em tabela pra depois transformar em string, pode fazer direto como string, assim:

function explode(e, sep)
   local result = {}    e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end)
   return result
end

function reverse(str)
   local ret_str = ""
   local words = explode(str, " ")

   for i = #words, 2, -1 do
       ret_str = ret_str .. words[i] .. " "
   end

   ret_str = words[1] and ret_str .. words[1] or ""

   return ret_str
end

Editado Maio 10 por dalvorsn

SkymagnumS
10 de maio de 2013 às 19:11

ficou até boa, mas você não precisa transformar em tabela pra depois transformar em string, pode fazer direto como string, assim:

function explode(e, sep)
local result = {}	e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end)
return result
end

function reverse(str)
local ret_str = ""
local words = explode(str, " ")

for i = #words, 2, -1 do
	ret_str = ret_str .. words[i] .. " "
end

ret_str = words[1] and ret_str .. words[1] or ""

return ret_str
end

Hum, boa, mas fiz na hora só tinha pensado desse modo ;d.