Автор Гілка: strncmp у LUA  (Прочитано 1947 раз)

Михайло Даниленко

  • Гість
strncmp у LUA
« : 2008-05-11 17:59:36 »
Мої знання lua поки дуже поверхневі, тому мабуть я просто чогось не знаю.
Стоїть задача знайти позицію, де два рядки починають відрізнятися.
У C - це елементарний виклик strncmp, тут же мені спадають на думку лише танці з бубном навколо регекспів та розбиття рядка на таблицю літер, обидва підходи дещо "важкуваті" задля такої задачі...
« Змінено: 2008-05-11 18:04:21 від ISBear »

Михайло Даниленко

  • Гість
Re: strncmp у LUA
« Відповідей #1 : 2008-05-12 13:48:29 »
гм, ось, що в мене вийшло:
   local lpos
    local found -- for some reason lpos is not preserved on break's
    for lpos=1,#compl[1] do
        local str
        for _, str in pairs(compl) do
          if str:sub(lpos,lpos) ~= compl[1]:sub(lpos,lpos) then
            found = lpos - 1
            break
          end
        end
        if found then
          break
        end
    end
    if not found then
      found = #comp[1] - 1
    end

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1929
  • Карма: +5/-0
Re: strncmp у LUA
« Відповідей #2 : 2008-05-12 17:16:26 »
local function check(s1, s2)
  for pos=1, math.min(string.len(s1), string.len(s2)) do
        if string.sub(s1, pos, pos) ~= string.sub(s2, pos, pos) then
          return pos
        end
  end
  return -1
end
Fedora 35 (x86-64)