首页 > 解决方案 > 用J语言打印一个等边三角形

问题描述

我试图在控制台屏幕上打印一个等边三角形。这是我能找到的

]\ 'hello' NB. which prints
h
he
hel
hell
hello

标签: loopsj

解决方案


我想出的第一个解决方案是:

   eq=. ('b< >' 8!:2 (] ,.~ |.@}."1)@:([: >:/~ i.)) 
   eq 5
    1    
   111   
  11111  
 1111111 
111111111
   eq 10
         1         
        111        
       11111       
      1111111      
     111111111     
    11111111111    
   1111111111111   
  111111111111111  
 11111111111111111 
1111111111111111111

eq1是一个动词,它首先接受参数并在's using的左下角创建一个矩阵,([: >:/~ i.)然后将其输入到(] ,.~ |.@}."1)该矩阵中,删除每行的第一个字符,然后在附加到原始矩阵之前反转。最后,为了摆脱丑陋的 's,我使用了将二进制数组格式化为字符0的外来连词,而 left 参数指定's 将被空格替换。8!:2'b< >'0

第二种解决方案:

   eq2=: ([ ,.~ |.@}."1)@:(]\) 
   eq2 'hello'
    h    
   ehe   
  lehel  
 llehell 
ollehello
   eq2 '*******'
      *      
     ***     
    *****    
   *******   
  *********  
 *********** 
*************

eq2 工作方式相同,除了它使用你的]\初始,这意味着格式外来连接不是必需的,因为输入的结果([ ,.~ |.@}."1)已经是字符形式。


推荐阅读