loops - 用J语言打印一个等边三角形
问题描述
我试图在控制台屏幕上打印一个等边三角形。这是我能找到的
]\ 'hello' NB. which prints
h
he
hel
hell
hello
解决方案
我想出的第一个解决方案是:
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
是一个动词,它首先接受参数并在's using的左下角创建一个矩阵,([: >:/~ i.)
然后将其输入到(] ,.~ |.@}."1)
该矩阵中,删除每行的第一个字符,然后在附加到原始矩阵之前反转。最后,为了摆脱丑陋的 's,我使用了将二进制数组格式化为字符0
的外来连词,而 left 参数指定's 将被空格替换。8!:2
'b< >'
0
第二种解决方案:
eq2=: ([ ,.~ |.@}."1)@:(]\)
eq2 'hello'
h
ehe
lehel
llehell
ollehello
eq2 '*******'
*
***
*****
*******
*********
***********
*************
eq2
工作方式相同,除了它使用你的]\
初始,这意味着格式外来连接不是必需的,因为输入的结果([ ,.~ |.@}."1)
已经是字符形式。