2025年10月20日 星期一

Lua, 使用string.match的精簡解法

7 kyu: Regex validate PIN code

這題算很簡單,題目是求PIN碼是否正確,
PIN碼格式需為數字且長度為4或6個字元。
我的寫法如下:
local function validate_pin(pin)
  for i = 1, #pin do
    local s = pin:sub(i, i)
    if nil == tonumber(s) then
      return false
    end
  end
  if 4 == #pin or 6 == #pin then
    return true
  else
    return false
  end
end

return validate_pin

但是別人用string.match,可以很精簡就解出來了,

如下:

local function validate_pin(pin)
  return pin:match("^%d%d%d%d$") ~= nil or pin:match("^%d%d%d%d%d%d$") ~= nil
end
 

return validate_pin 


沒有留言:

張貼留言

Basic Blind Chess的兩大問題

 Basic Blind Chess已經好久沒更新了, Windows版可以獲得最好的遊戲体驗, 但是Android版的,不只是比較舊, 它其實存在兩大問題: 1. 拿子移動時,顯示怪怪的,只顯示前幾個移動的殘影。 這個只有在最早的版本,沒有這個問題, 但是最早的版本實機測試時,...