编写此ruby段的最短可能方式

Llo*_*ley -5 ruby

什么是重写下面代码段的最短方法?

print @b > @d ? ( @d+=1 ;"S" ) : @b < @d ? ( @d -= 1; "N" ) : "";

print @a > @c ? ( @c+=1 ; "E") : @a < @c ? ( @c -= 1; "W" ) : "";

puts" " 
Run Code Online (Sandbox Code Playgroud)

第一行和第二行在结构上是相同的但具有不同的变量,因此如果对象要将字节数保持为最小,则某种宏扩展可能是有用的.ruby是否支持任何宏扩展样式语法?像c或c ++这样的东西.

我发现这个fizzbuzz挑战的例子鼓励短代码https://www.ruby-forum.com/topic/99787,但不完全理解语法.

编辑:对于Cary和其他人提供完整的上下文,我的程序的完整代码如下几个建议:

@a,@b,@c,@d=gets.split(" ").collect{|x|x.to_i}; 
do 
print"SN[t=@b<=>@d,1];
@d+=t print"EW"[t=@a<=>@c,1];
@c+=t 
end
Run Code Online (Sandbox Code Playgroud)

Car*_*and 5

欢迎来到Code Golf!这是一种可能性:

print ['',?S,?N][t=@b<=>@d]; @d+=t
puts  ['',?E,?W][t=@a<=>@c]+' '; @c+=t
Run Code Online (Sandbox Code Playgroud)

编辑从@Steve窃取了一个想法.