对于任何正整数k,让d(k)表示k的除数。例如,d(6)是4,因为6有4除数(即1, 2, 3, 6)。
给定正整数N,使用固定字符显示ASCII艺术中的“天际线”,因此位于k水平位置的“建筑物”的高度为d(k) for k = 1, ..., N。参见下面的测试用例。
#。N = 10:
# # #
# # ###
#########
##########N = 50:
#
# #
# # # # # #
# # # # # #
# # # # # # # # # # ## # #
# # # # # # # # # # # ## # #
# # # # ### # ### # ### # ##### ### # ### # #
# # ### # ### # ### ##### # ##### ### # ### ###
#################################################
##################################################N = 200:
#
#
# # #
# # # #
# # # # #
# # # # #
# # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # ## # # # # # # # # # ## # # # # # # # # # # # # # # # # # # ## # ## # #
# # # # # # # # # # # # # # # # # # # # # ## # # # # # # # # # ## # # # # # # # # # # # # # # # # # # ## # ## # #
# # # # # # # # # # ## # # # # # # ## # # # # ## # # # # # # # ### # ## # # # # ## # # # # # # ## # # # ## # ### # # # ## # ### ### # # # # ### # ## # #
# # # # # # # # # # # ## # # # # # # ## # # # # ## # ## # # # # # ### # ## # # # # ## # # # # # # ## # # # ## # ### # # # ## # ### ### # # # # ### # ## # #
# # # # ### # ### # ### # ##### ### # ### # ### ##### # ##### ### # ##### ### ##### ####### ### # ### # ### ####### ##### ### ##### # ######### # ##### ##### ### # ### ##### # ######### # ### # #
# # ### # ### # ### ##### # ##### ### # ### ##### ##### # ##### ### # ##### ### ##### ####### ### # ### # ### ############# ### ##### # ######### # ##### ##### ### ##### ##### # ######### # ### # #
#######################################################################################################################################################################################################
########################################################################################################################################################################################################发布于 2017-05-07 18:33:39
发布于 2017-05-07 19:35:29
for i=1:input(''),p(1:nnz(~rem(i,1:i)),i)=35;end,[flip(p),'']for i=1:input('') % Loop, for i from 1 to the input value
p(1:nnz(~rem(i,1:i)),i)=35;end,[flip(p),'']
% Breakdown:
~rem(i,1:i) % Return true if the remainder of i divided by any of the values
% in the vector 1 - i
nnz(~rem(i,1:i)) % Check how many of them are non-zero
p(1:nnz(~rem(i,1:i)),i)=35;end % Assign the value 35 (ASCII for #) to rows 1
% to the number of divisors of i, in column i
end, % End loop
[flip(p),''] % Flip the matrix, and concatenate it with the empty string我想强调的几件事
循环内部发生了什么(假设输入6)
p = 35
p =
35 35
0 35
p =
35 35 35
0 35 35
p =
35 35 35 35
0 35 35 35
0 0 0 35
p =
35 35 35 35 35
0 35 35 35 35
0 0 0 35 0
p =
35 35 35 35 35 35
0 35 35 35 35 35
0 0 0 35 0 35
0 0 0 0 0 351,2,4)腾出空间1,2,3,6)腾出空间最后,我们将其翻转,并将其转换为字符串,并隐式地将0更改为32:
warning: implicit conversion from numeric to char
ans =
#
# #
#####
######https://codegolf.stackexchange.com/questions/119430
复制相似问题