【问题标题】:Printing mountain ranges algorithm打印山脉算法
【发布时间】:2026-02-09 10:30:02
【问题描述】:
  /\
 /  \
/    \



 /\/\
/    \ 

   /\  
/\/  \

 /\
/  \/\


/\/\/\

对于 n=3 对起伏,我有 5 种可能的方式来绘制这些山脉。(我不应该低于 x=0 轴)。我有以下长 javascript 代码,当我在浏览器的控制台中打印这些输出时可以正常工作。但是,当我尝试将它们输出为 html 时,起伏没有正确对齐。这是我的代码:

<html>


<script>
F=n=> {
m = n+n
outer:
   for (i=1; i < 1<<m; i+=2)
  {
       o=[]
       l=0;
       p=1;
   for (j = 1; j <1<<m; j+=j,p++)
 {

        if (i&j)
     {
        q=o[n-l]||[]
        q[p]=1;
        o[n-l]=q
        ++l;
     }
      else
       {
         --l;
          if (l<0) continue outer;
          q=o[n-l]||[]
          q[p]=0;
          o[n-l]=q
         }
      }
      if (l==0) 
  {

       console.log(o.join('\n').replace(/,\d?/g,r=>'\\/'[r[1]]||' '));    // WORKS FINE IN CONSOLE AS SHOWN IN ABOVE.
       document.write(o.join('<br>').replace(/,\d?/g,r=>'\\/'[r[1]]||' ')  ) // DOESNT PROPERLY SHOW THEM.

            }
        }
    }


    F(3);

    </script>

</html>

它会这样打印它们:

/\
/ \
/ \

/\/\
/ \

/\
/\/ \

/\
/ \/\


/\/\/\

有人知道我如何正确输出它们吗?

【问题讨论】:

  • 使用&lt;pre&gt;标签作为输出,或&lt;textarea&gt;
  • 我会在代码的什么地方使用它?
  • 哦,好的,现在它似乎可以工作了,非常感谢
  • document.write("&lt;pre&gt;" + ...)
  • 像这样:jsfiddle.net/mhwvczdz

标签: javascript arrays formatting output catalan


【解决方案1】:

您的问题是您使用' ' 空格作为垃圾空间。 HTML 不喜欢文字空间。最好使用&amp;nbsp; as

document.write(o.join('&lt;br&gt;').replace(/,\d?/g, r =&gt; '\\/' [r[1]] || '&amp;nbsp;'));

另外,使用固定宽度的字体和正确的line-height 以获得更好的效果。

JSFiddle Example

【讨论】:

  • @ayt_cem 确保您标记您的答案并为解决您的问题的答案投票。干杯。