我试图在控制台屏幕上打印等边三角形。这是我可以找到的
]\ '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
在([: >:/~ i.)
的左下角创建一个矩阵,然后将其馈送到(] ,.~ |.@}."1)
,该行将丢弃每行的第一个字符,然后反转在追加到原始矩阵之前。最后,要摆脱丑陋的0
,我使用了外部连词8!:2
,该异形将二进制数组格式化为字符,并且左参数'b< >'
指定0
将被空格替换。
第二解决方案:
eq2=: ([ ,.~ |.@}."1)@:(]\)
eq2 'hello'
h
ehe
lehel
llehell
ollehello
eq2 '*******'
*
***
*****
*******
*********
***********
*************
[eq2
以相同的方式工作,不同之处在于它最初使用了]\
,这意味着不需要格式外部连词,因为送入([ ,.~ |.@}."1)
的结果已经是字符形式。