首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电梯顺序

电梯顺序
EN

Code Golf用户
提问于 2021-06-29 00:23:58
回答 5查看 1.6K关注 0票数 21

完全不受Lyxal的启发,在聊天中反复提到电梯:P

挑战

简而言之:模拟一些人在电梯里加油,然后离开电梯。

电梯被简化为一个网格,每个人都可以占用网格的一个单元。网格的高度和宽度是输入参数。宽度总是奇数,在顶部的中心有一个1单位宽的开口。下图显示了一个宽度为5和高度4的电梯,最初是空的:

代码语言:javascript
复制
+------   ------+
| ?  ?  ?  ?  ? |
| ?  ?  ?  ?  ? |
| ?  ?  ?  ?  ? |
| ?  ?  ?  ?  ? |
+---------------+

现在,20个人,按登机顺序从1到20人,开始给电梯加油。人们倾向于坚持在前面,但不能阻止其他人登机时,有些地方仍然是空的。作为一种简化,让我们简单地假设人们从最前面的行中填充左-右-左-右的位置,而中间的列则为空(然后由最后几个人填充):

代码语言:javascript
复制
+------    ------+
|  1  3 20  4  2 |
|  5  7 19  8  6 |
|  9 11 18 12 10 |
| 13 15 17 16 14 |
+----------------+

当人们离开电梯时,他们会一排排地,从中间的列开始,然后左右交替。因此,离开的顺序如下:

代码语言:javascript
复制
20, 3, 4, 1, 2, 19, 7, 8, 5, 6, 18, 11, 12, 9, 10, 17, 15, 16, 13, 14

挑战是为给定的电梯宽度和高度产生这个序列(同样,宽度保证为奇数)。

您可以使用基于0的编号代替基于1的编号。

应用序列 I/O。I/O格式可以有三种方式之一:

  • 获取宽度和高度,并输出完整的序列
  • 获取宽度、高度和n(最多为单元格数),并输出前n个数字。

适用标准的密码-高尔夫规则。以字节为单位的最短代码获胜。

更多测试用例

代码语言:javascript
复制
width = 1, height = 1
output = 1

width = 1, height = 10
output = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1

width = 9, height = 1
output = 9, 7, 8, 5, 6, 3, 4, 1, 2

width = 7, height = 5
output = 35, 5, 6, 3, 4, 1, 2, 34, 11, 12, 9, 10, 7, 8, 33, 17, 18,
15, 16, 13, 14, 32, 23, 24, 21, 22, 19, 20, 31, 29, 30, 27, 28, 25, 26
EN

回答 5

Code Golf用户

发布于 2021-06-29 13:53:51

果冻,12字节

代码语言:javascript
复制
p1Ṛ;@pỤɓḊU^1

在网上试试!

获取(高度、宽度)参数并返回序列。

不相关的字符串保存了两个字节。谢谢!

(宽度,高度)= (7,5)的

解释ḊU^1[width..2],每个XORed都有1[6,7,4,5,2,3]。 我们用笛卡儿p[1..height]旋光管。结果是一个6×5对的列表: [[1,6], [1,7], [1,4], [1,5], [1,2], [1,3], [2,6], [2,7], [2,4], [2,5], [2,2], [2,3], [3,6], [3,7], [3,4], [3,5], [3,2], [3,3], [4,6], [4,7], [4,4], [4,5], [4,2], [4,3], [5,6], [5,7], [5,4], [5,5], [5,2], [5,3]] 然后,p1Ṛ;@[[5,1],[4,1],[3,1],[2,1],[1,1]]追加到这个列表中,总共为7×5对。 [[1,6], [1,7], [1,4], [1,5], [1,2], [1,3], [2,6], [2,7], [2,4], [2,5], [2,2], [2,3], [3,6], [3,7], [3,4], [3,5], [3,2], [3,3], [4,6], [4,7], [4,4], [4,5], [4,2], [4,3], [5,6], [5,7], [5,4], [5,5], [5,2], [5,3], [5,1], [4,1], [3,1], [2,1], [1,1]] 哇,这一切似乎让我们无处可寻!但是:

  • 词汇表中最小的元素[1,1]在索引35中找到,
  • 第二个最小的元素[1,2]在索引5
  • 第三个最小的元素[1,3]在索引6
  • ..。
  • 最大的元素[5,7]是索引26

换句话说,“等级”是一个电梯序列,我们完成了。

票数 15
EN

Code Golf用户

发布于 2021-06-29 06:21:07

JavaScript (ES6),39字节

期望(w, h, n)并返回第n项.一切都是0索引。

代码语言:javascript
复制
(w,h,n,y=n/w)=>n%w?-n%w-~y*~-w^1:w*h+~y

在网上试试!

票数 5
EN

Code Golf用户

发布于 2021-06-29 00:38:49

果冻,34字节

代码语言:javascript
复制
R}Uð×RœṖ@’בɗœsL}¹;"U}¥ʋ/s€2Ṛ€FðỊ?

在网上试试!

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

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

复制
相关文章

相似问题

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