首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >园林建筑. ASCII风格

问园林建筑. ASCII风格
EN

Code Golf用户
提问于 2017-11-24 07:56:16
回答 10查看 2K关注 0票数 18

我们的房子外面有一个10×10米的花园。我们想种草和做一个露台。我们已经决定了如何划分花园,但是我们还没有决定草的数量和梯田的比例。

我们需要帮助可视化它,而ASCII-艺术显然是最好的方式这样做。

挑战:

在包含范围0,100 (或者可选的十进制0,1)中取一个整数,表示花园中应该有多少%是梯田。

一平方米的露台将由一个破折号-或酒吧|表示。一平方米的草将用散列标记#表示。

  • 如果露台的数量小于或等于50%,那么花园应该用栏杆覆盖,从左下角开始,垂直填充,然后水平填充。
  • 如果露台的数量超过50%,我们希望甲板是相反的方式(破折号而不是酒吧),从左下角开始,水平填充,然后垂直。

示例:

代码语言:javascript
复制
N = 25%
||########
||########
||########
||########
||########
|||#######
|||#######
|||#######
|||#######
|||#######

N = 75%
##########
##########
-----#####
----------
----------
----------
----------
----------
----------
----------

N = 47%
||||######
||||######
||||######
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####

N = 50%
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####

N = 51%
##########
##########
##########
##########
-#########
----------
----------
----------
----------
----------

N = 0%
##########
##########
##########
##########
##########
##########
##########
##########
##########
##########

N = 100%
----------
----------
----------
----------
----------
----------
----------
----------
----------
----------

这是密码-高尔夫,所以以字节为单位的最短代码获胜。关于I/O的标准规则这是ASCII-art,所以输出应该类似于上面的例子。也就是说,输出["|", "|" ...]是不可以的。

鼓励一如既往地作出解释:)

EN

回答 10

Code Golf用户

发布于 2017-11-24 08:30:37

[化]双模拟,34字节

匿名前缀函数,期望整数在0-100范围内。假定⎕IO (索引起源)为0,这在许多系统上是默认的。

代码语言:javascript
复制
{'#-|'[⊖⍉⍣s⊢10 10⍴100↑⍵⍴1+s←50≥⍵]}

在网上试试!

{…} lambda;⍵是论点:

'#-|[…] 用以下数组对字符串进行索引:

50≥⍵ 1如果50大于或等于参数,则为0

S的s← 商店(适合小型)

1+ 增量

⍵⍴ 周期性地对参数长度进行整形。

100↑ 取其中的前100个,填充0

将10 10⍴整形为10行10列

⊢ 产量(将s与10 10分开)

小⍉⍣s 转座子

⊖ 倒转

票数 7
EN

Code Golf用户

发布于 2017-11-24 17:49:30

果冻,23字节

代码语言:javascript
复制
<©51ị⁾|-ẋḷ"”#ẋ³¤s⁵Z®¡ṚY

在网上试试!

更改页脚中Ç之前的数字以更改输入。在没有命令行参数的程序中充当一元链接,这是被允许.

票数 4
EN

Code Golf用户

发布于 2017-11-24 10:19:16

马蒂尔,26字节

代码语言:javascript
复制
'|-#'100:i>~o10eG50>?!E]P)

在网上试试!或验证所有测试用例.

解释

代码语言:javascript
复制
'|-#'     % 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 display
票数 3
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/148959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档