Ruby ERB模板中的代数数字符号处理

Ruby ERB模板中的代数数字符号处理,ruby,erb,algebra,Ruby,Erb,Algebra,我有一个雇员再培训局模板: <% a = rand(-10..10) b = rand(-10..10) c = rand(-10..10) %> The solution of this equation $<%=a%>x + <%=b%> = <%=c%>$ is $<%=a%>x = <%=c%> - <%=b%>$ ... 有没有办法避免这种情况,用+代替--使用if语句: <%= b &

我有一个雇员再培训局模板:

<%
a = rand(-10..10)
b = rand(-10..10)
c = rand(-10..10)

%>

The solution of this equation $<%=a%>x + <%=b%> = <%=c%>$ is 

$<%=a%>x = <%=c%> - <%=b%>$
...

有没有办法避免这种情况,用
+
代替
--

使用
if
语句:

<%= b > 0 ? '-' : '+' %>
0?'-':'+'%

你可能还想考虑做一些不同的事情(但是我不知道什么!)如果<代码> B==0

< P>这将起作用:(而不是<代码> -b>代码>你也可以说“代码> B.ABS”


$x=-$
$x=+$
或者,通过字符串操作:

$<%= a %>x = <%= "#{c} + #{b}".sub('+ -', '- ') %>$
$x=$

“但我不知道是什么!”–可能是
b=rand(1..10)。产生{u self{I{I,-I]。sample}
将排除零,但同时允许正值和负值。确保
b!=0当然是一个选项,是的。但是,如果OP确实希望包含一个有效的随机选择,那么他们需要决定它应该如何显示。事实上,你可能也希望处理
a
c
为零的问题。这是一个比OP指出的更广泛的“问题”。如果
a
b
为负数:
$x+=$
,您可能也需要考虑此行的格式。此外,如果a==0,则该等式要么无意义,要么不可能。另外,如果
c==0
,那么您可能希望从第2行中省略它。基本上,除非您想为整个过程引入一些“公式格式化程序”库,否则接受一些稍微奇怪的格式可能更容易,或者只需确保
a
b
c
都是正数。是的,但我指的是更代数的东西。无需与
if
语句讨论案例。一些库。真的,对于更复杂的方程,它是不现实的:太多的ifs。
<% if b.negative? -%>
  $<%= a %>x = <%= c %> - <%= -b %>$
<% else -%>
  $<%= a %>x = <%= c %> + <%= b %>$
<% end -%>
$<%= a %>x = <%= "#{c} + #{b}".sub('+ -', '- ') %>$