我们的房子外面有一个10×10米的花园。我们想种草和做一个露台。我们已经决定了如何划分花园,但是我们还没有决定草的数量和梯田的比例。
我们需要帮助可视化它,而ASCII-艺术显然是最好的方式这样做。
在包含范围0,100 (或者可选的十进制0,1)中取一个整数,表示花园中应该有多少%是梯田。
一平方米的露台将由一个破折号-或酒吧|表示。一平方米的草将用散列标记#表示。
N = 25%
||########
||########
||########
||########
||########
|||#######
|||#######
|||#######
|||#######
|||#######
N = 75%
##########
##########
-----#####
----------
----------
----------
----------
----------
----------
----------
N = 47%
||||######
||||######
||||######
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
N = 50%
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
N = 51%
##########
##########
##########
##########
-#########
----------
----------
----------
----------
----------
N = 0%
##########
##########
##########
##########
##########
##########
##########
##########
##########
##########
N = 100%
----------
----------
----------
----------
----------
----------
----------
----------
----------
----------这是密码-高尔夫,所以以字节为单位的最短代码获胜。关于I/O的标准规则这是ASCII-art,所以输出应该类似于上面的例子。也就是说,输出["|", "|" ...]是不可以的。
鼓励一如既往地作出解释:)
发布于 2017-11-24 08:30:37
发布于 2017-11-24 17:49:30
发布于 2017-11-24 10:19:16
'|-#'100:i>~o10eG50>?!E]P)'|-#' % Push this string
100: % Push array [1 2 ... 100]
i % Input a number and push it
>~ % Less than or equal (element-wise)? This transforms the
% array into [true ... true false ... false]
o % Convert to double. True becomes 1, false becomes 0
10e % Rehaspe into 10-row matrix, in column-major order
G % Push input
50> % Greater than 50?
? % If so
! % Transpose
E % Multiply by 2 (element-wise). So 0 remains as 0, and
% 1 becomes 2
] % End
P % Flip vertically
) % Index into string, modularly. So 1 corresponds to '|',
% 2 to '-', and 0 to '#'
% Implicitly displayhttps://codegolf.stackexchange.com/questions/148959
复制相似问题