Поиск чисел из чата по шаблонам

A S K I T

Активный
Автор темы
200
69
Версия MoonLoader
.026-beta
Приветикс. Уже спрашивал, никто так и не ответил.
Подскажите как реализовать поиск чисел из чата по шаблонам типа: XXXXXX, XXYYXX, YYXXXX и так далее.
Так работают все скрипты для ловли симкарт: Игрок выбирает нужный шаблон, например XXYYXX, и как только в чате появляется число типа 227722 - скрипт завершает работу.
 

A S K I T

Активный
Автор темы
200
69
Распиши всевозможные шаблоны, может что-то и придумаю
Допустим, игрок хочет поймать красивое число из чата, и ему доступны такие шаблоны:
1) XXXXXX - Любое число с повторяющимися цифрами (777777, 555555 и т.д.)
2) XYXYXY - Любое число с "переменными" цифрами (121212, 565656 и т.д.)
3) XXXYYY - Половина одних цифр, половина других (666999, 111222 и т.д.)
4) 34XXXX - Точные цифры (34) + любые повторяющиеся = 346666, 341111 и т.д.

Ну вот примерно так.
 

meowprd

Тот самый Котовский
Проверенный
1,298
732
Допустим, игрок хочет поймать красивое число из чата, и ему доступны такие шаблоны:
1) XXXXXX - Любое число с повторяющимися цифрами (777777, 555555 и т.д.)
2) XYXYXY - Любое число с "переменными" цифрами (121212, 565656 и т.д.)
3) XXXYYY - Половина одних цифр, половина других (666999, 111222 и т.д.)
4) 34XXXX - Точные цифры (34) + любые повторяющиеся = 346666, 341111 и т.д.

Ну вот примерно так.
Возможно не самая лучшая реализация (скорее всего вообще ужасная)
Не знаю этого ли ты хотел добиться, но возможно ты доработаешь как надо или даже перепишешь, потому что моя голова что-то отказалась думать
Lua:
function check(number)
  local tM = {}
  for w in tostring(number):gmatch("%d") do
    table.insert(tM, w)
  end
  for n=1, #tM do
    if tM[n] == tM[n+1] then
        if tM[n+1] ~= tM[n+2] then
          return true
        else
          return true
        end
    elseif n == 1 then
        if string.format("%d%d", tM[n], tM[n+1]) == string.format("%d%d", tM[n+2], tM[n+3]) then return true end
    end
  end
  return false
end

-- XXXXXX
print(check(777777)) -- true

-- XYXYXY
print(check(121212)) -- true

-- XXXYYY
print(check(666999)) -- true

-- 34XXXX
print(check(346666)) -- true

-- random
print(check(220655)) -- true
print(check(357534)) -- false
print(check(541497)) -- false

Наверное я бы не стал советовать использовать этот способ, потому что он нормально не проверен и не доведен до ума
 
  • Нравится
Реакции: A S K I T

A S K I T

Активный
Автор темы
200
69
Возможно не самая лучшая реализация (скорее всего вообще ужасная)
Не знаю этого ли ты хотел добиться, но возможно ты доработаешь как надо или даже перепишешь, потому что моя голова что-то отказалась думать
Lua:
function check(number)
  local tM = {}
  for w in tostring(number):gmatch("%d") do
    table.insert(tM, w)
  end
  for n=1, #tM do
    if tM[n] == tM[n+1] then
        if tM[n+1] ~= tM[n+2] then
          return true
        else
          return true
        end
    elseif n == 1 then
        if string.format("%d%d", tM[n], tM[n+1]) == string.format("%d%d", tM[n+2], tM[n+3]) then return true end
    end
  end
  return false
end

-- XXXXXX
print(check(777777)) -- true

-- XYXYXY
print(check(121212)) -- true

-- XXXYYY
print(check(666999)) -- true

-- 34XXXX
print(check(346666)) -- true

-- random
print(check(220655)) -- true
print(check(357534)) -- false
print(check(541497)) -- false

Наверное я бы не стал советовать использовать этот способ, потому что он нормально не проверен и не доведен до ума
Спасибо за старания) Решением пока не сделаю, нет времени затестить.