用J语言打印等边三角形

问题描述 投票:2回答:1

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

]\ 'hello' NB. which prints
h
he
hel
hell
hello
loops j
1个回答
1
投票

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

   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

eq是一个动词,该动词首先使用参数,并使用1([: >:/~ i.)的左下角创建一个矩阵,然后将其馈送到(] ,.~ |.@}."1),该行将丢弃每行的第一个字符,然后反转在追加到原始矩阵之前。最后,要摆脱丑陋的0,我使用了外部连词8!:2,该异形将二进制数组格式化为字符,并且左参数'b< >'指定0将被空格替换。

第二解决方案:

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

[eq2以相同的方式工作,不同之处在于它最初使用了]\,这意味着不需要格式外部连词,因为送入([ ,.~ |.@}."1)的结果已经是字符形式。

© www.soinside.com 2019 - 2024. All rights reserved.