Lua 三元运算符(代码高尔夫)

我在进行代码高尔夫比赛,目前我遇到了这个问题:

for i=1,100 do for j=1,i do if i%j<1 then io.write(j.." ") end end print() end

有没有办法将 if 语句编写为内联形式?使其包含在 io.write() 中?

点赞
用户1190388
用户1190388

lua 中的三元运算可以使用 and..or 操作符模拟:

a and b or c

与真值下的

a ? b : c

类似。对于您的情况:

for i=1,100 do
  for j=1,i do
    io.write( ((i % j) < 1 and j.." " or '')
    -- (i % j) < 1 and io.write(.." ")
  end
  print() -- 为什么在这里打印?
end

缩短后,变为

io.write(i%j<1 and j.." "or'')

这可为您节省 4 个字符。

2018-02-05 02:50:00