首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两个反射镜之间的两个激光器

两个反射镜之间的两个激光器
EN

Code Golf用户
提问于 2018-04-09 13:28:59
回答 8查看 11.4K关注 0票数 72

如果我们有一个由两个平行镜子组成的走廊呢?

代码语言:javascript
运行
复制
|          |
|          |
|          |
|          |
|          |
|          |
|          |
|          |
|          |
|          |

现在我们用激光照射它..。

代码语言:javascript
运行
复制
|  \       |
|   \      |
|    \     |
|     \    |
|      \   |
|       \  |
|        \ |
|         \|
|         /|
|        / |

哦,看。它反弹了,直到最后,就在那里。

如果我们画两个激光器却朝相反的方向走呢?

代码语言:javascript
运行
复制
|  \    /  |
|   \  /   |
|    \/    |
|    /\    |
|   /  \   |
|  /    \  |
| /      \ |
|/        \|
|\        /|
| \      / |

嗯,他们好像没见过面。这很方便。如果两台激光器占据相同的空间会发生什么?

代码语言:javascript
运行
复制
|  \     / |
|   \   /  |
|    \ /   |
|     X    |
|    / \   |
|   /   \  |
|  /     \ |
| /       \|
|/        /|
|\       / |

我想这很明显是吧?

手工绘制这些图表相当费劲(请相信我)。也许一些代码能帮我们做到这一点?

  • 编写一些代码,输出两个平行反射镜,两个跳跃,相交的激光。
  • 输入(所有整数):
    • 走廊的宽度
    • 走廊的长度
    • 右转激光的起始位置(零索引,必须小于宽度)
    • 左转激光的起始位置(零索引,必须小于宽度)

  • 过程
    • 如果激光正在运转,它将在下面的直线上向右画一个空间。
    • 如果激光离开,它将画在左边的一条线上的空间。
    • 如果激光不能横向移动,它会改变方向,但不会改变位置。
    • 如果两个激光器都在同一索引处,则在该索引处打印大写X.

  • 输出
    • 多行字符串
    • 每一行的开头和结尾都有一个管道字符(\)
    • 右转激光用反斜杠()表示。
    • 左转激光用正切斜线表示。
    • 两个激光器的交集用大写X表示。

  • 任何语言
  • 我想看TIO链接
  • 尝试以最小字节数来修复它。

测试用例

宽:6长: 10右转:1左转:4

代码语言:javascript
运行
复制
| \  / |
|  \/  |
|  /\  |
| /  \ |
|/    \|
|\    /|
| \  / |
|  \/  |
|  /\  |
| /  \ |

宽:6长: 10右转:0左转:1

代码语言:javascript
运行
复制
|\/    |
|/\    |
|\ \   |
| \ \  |
|  \ \ |
|   \ \|
|    \/|
|    /\|
|   / /|
|  / / |

宽:4长: 10右转:2左转:0

代码语言:javascript
运行
复制
|/ \ |
|\  \|
| \ /|
|  X |
| / \|
|/  /|
|\ / |
| X  |
|/ \ |
|\  \|

宽: 20长:5右转:5左转: 15

代码语言:javascript
运行
复制
|     \         /    |
|      \       /     |
|       \     /      |
|        \   /       |
|         \ /        |

宽:5长:6右转:2左转:2

代码语言:javascript
运行
复制
|  X  |
| / \ |
|/   \|
|\   /|
| \ / |
|  X  |

宽:1长:2右转:0左转:0

代码语言:javascript
运行
复制
|X|
|X|
EN

回答 8

Code Golf用户

回答已采纳

发布于 2018-04-09 14:55:23

斯塔克斯,40 字节数

代码语言:javascript
运行
复制
àù@○⌡┼PY¼îαφu^·A☺°É⌠■╟¡Åt^◘v(µ╩Ñ♣t{╓○xß╦

运行并调试它

在网上试试!

很肯定这还能打得更远。

输入以width [right-going left-going] length的形式提供(@EngineerToast的注释)。

ASCII相当于:

代码语言:javascript
运行
复制
xHXdmzx);hi+x%Y92&;Hi-x%cy=41*47+&2ME:R\{|+m'||S
票数 12
EN

Code Golf用户

发布于 2018-04-09 22:30:58

Python 2,119个字节

代码语言:javascript
运行
复制
w,l,a,b=input()
exec"print'|%s|'%''.join(' \/X'[sum(i==k%(2*w)for k in[a,~b]+[~a,b]*2)]for i in range(w));a+=1;b-=1;"*l

在网上试试!

票数 11
EN

Code Golf用户

发布于 2018-04-09 14:38:58

Python 2,168个字节

代码语言:javascript
运行
复制
w,n,r,l=input()
R=L=1
exec"""
d=[~r*R,-~l*L].count
print'|%s|'%''.join(' /\X'[2*d(~x)|d(x+1)]for x in range(w))
if-1<r+R<w:r+=R
else:R=-R
if-1<l-L<w:l-=L
else:L=-L"""*n

在网上试试!

票数 9
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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