首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Rnccia不太好的道路

在Rnccia不太好的道路
EN

Code Golf用户
提问于 2017-03-23 14:52:16
回答 2查看 485关注 0票数 7

在这里绝对是虚构的乡村,我们有很多好东西,但道路不是很好。有很多洞,只有一半能修好。即使如此,只有一半的修复工作做得很好。你的任务是拥抱这个国家糟糕的道路,并为我画出它们。

输入

您将收到两个正整数作为输入。一个代表道路的长度,第二个代表每个方向的车道数。这条路的长度保证是偶数。

输出

输出或返回一个ASCII-艺术形象的道路上有尽可能多的洞将适合。阅读接下来的两个部分,看看道路和洞应该如何产生。

路布局

  1. 每条路的上方和下面都有一条直线。
  2. 每条路在两个方向都有相同的车道数。
  3. 每条路的中间都有一条相等的标志。
  4. 车道在它们之间划出直线(不包括规则3中的特殊中线)。一个减号,一个空格等等。从负数开始。

道路实例:

代码语言:javascript
复制
Road with one lane in both sides:

--------------

==============

--------------

Road with two lanes in both sides:

--------------

- - - - - - -

==============

- - - - - - - 

--------------

孔布置

  1. 每条路都有7n个洞。N是道路上可容纳的洞数的上限,除以七个。
  2. 每条路都有4n个未固定的洞。未固定孔表示为双O (OO)。
  3. 每条路都有2n个洞,这些洞是固定的,表示为双# (##)。
  4. 每条道路也有n个孔,这些孔固定得很好,表示为双H (HH)。
  5. 洞(在任何状态)出现在每条车道上的对角线模式,从右上角开始,向下移动。一条新的洞线应该开始在每4车道和每8个字符在顶部车道。如需澄清,请参阅示例。
  6. 洞的顺序是无关紧要的。
  7. 如果7n个洞不能适应给定长度的道路,你可以使用#6来选择哪些洞是不可见的。

在本例中,我们有14个孔,其中4个孔修复得很差,2个孔被修复得很好:

代码语言:javascript
复制
------------------
OO      HH      OO
- - - - - - - - -
  ##      OO
- - - - - - - - -
    ##      OO
==================
      OO      OO
- - - - - - - - -
OO      ##      HH
- - - - - - - - -
  ##      OO
------------------

在这个例子中,我们有9个洞,它不是7的倍数。因此,您要使用的洞池大小为14,包含8 (OO)、4(##)、2(HH)。你可以用它上的任何洞来填路。

代码语言:javascript
复制
------------------
OO  OO  OO  OO  OO
==================
  OO  OO  OO  ##
------------------

另一个角落的例子。道路只能有三个洞。池为7: 4(OO),2(##),1(HH)。同样,任何人都可以使用:

代码语言:javascript
复制
------
##  
- - - 
  ##
======
    HH
- - - 

------

其他规则

  1. 您可以将洞的外观更改为任何其他字符中的两个,但-、=和空格除外。只要在你的回答中提出来。
  2. 它是密码-高尔夫,所以使您的代码尽可能紧凑。
EN

回答 2

Code Golf用户

回答已采纳

发布于 2017-03-24 11:04:02

JavaScript (ES6),158个字节

代码语言:javascript
复制
f=
(w,l)=>[...Array(l*4+1)].map((_,i)=>[...Array(w)].map((_,j)=>i%2?(i>>1)-j&3?`  `:s[n%7]+s[n++%7]:i/2%l?`- `:i-l-l?`--`:`==`).join``,n=0,s=`O#OHO#O`).join`\n`
代码语言:javascript
复制
<div oninput=o.textContent=f(+w.value,+l.value)><input id=w type=number min=1 value=1><input id=l type=number min=1 value=1><pre id=o>--
OO
==

--
票数 1
EN

Code Golf用户

发布于 2017-03-24 10:03:18

批处理,380个字节

代码语言:javascript
复制
@echo off
set h=O#OHO#O
set r=
for /l %%i in (1,1,%1)do call set r=--%%r%%
set/an=%2*2-1
for /l %%j in (0,1,%n%)do call:c %1 %2 %%j
echo %r%
exit/b
:c
if %3==0 (echo %r%)else if %3==%2 (echo %r:-==%)else echo %r:--=- %
set s=
for /l %%i in (1,1,%1)do set/an=%3-%%i^&3&call:l
echo(%s%
exit/b
:l
if %n%==3 (set s=%s%%h:~,1%%h:~,1%&set h=%h:~1%%h:~,1%)else set s=%s%  
票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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