ex4_8.lua 771 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. local function remove(str, start, _end)
  2. local start_part = str:sub(1, start - 1)
  3. local end_part = str:sub(_end + 1, -1)
  4. return start_part .. end_part
  5. end
  6. local function remove_patterns(str, pattern)
  7. while true do
  8. local rem_start, rem_end, _ = str:find(pattern)
  9. if rem_start == nil then
  10. break
  11. end
  12. str = remove(str, rem_start, rem_end)
  13. end
  14. return str
  15. end
  16. local function ispali(str)
  17. str = str:lower()
  18. -- format
  19. str = remove_patterns(str, "%s")
  20. str = remove_patterns(str, "%p")
  21. return str == str:reverse()
  22. end
  23. local function test(str)
  24. print(("%s: %q"):format(str, ispali(str)))
  25. end
  26. test("step on no pets")
  27. test("banana")
  28. print()
  29. test("Step. On no pets!")
  30. test("Banana??")