首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >把建筑物藏起来

把建筑物藏起来
EN

Code Golf用户
提问于 2018-11-15 06:34:49
回答 3查看 1.4K关注 0票数 15

较短版本的摩天大楼挑战

任务

给定一个建筑物高度数组和一个正整数k,找出高度的所有排列(没有重复),这样就可以精确地看到k建筑物。

任何建筑物都会隐藏其背后所有较短或等高的建筑物。

任何输入和输出格式都是有效的。

输入数组永远不会是空的。

如果不可能看到同样多的建筑物,输出任何不能回答但没有错误的内容。

示例:

(输出长度显示为很长的输出,但输出应该是所有可能的排列)

代码语言:javascript
复制
input:[1,2,3,4,5],2
output: 50
    
input:[5,5,5,5,5,5,5,5],2
output: []

input:[1,2,2],2
output:[(1,2,2)]
Seeing from the left, exactly 2 buildings are visible.

input:[1,7,4],2
output:[(4, 7, 1), (1, 7, 4), (4, 1, 7)]

input:[1,2,3,4,5,6,7,8,9],4
output:67284

input:[34,55,11,22],1
output:[(55, 34, 11, 22), (55, 22, 34, 11), (55, 34, 22, 11), (55, 11, 34, 22), (55, 22, 11, 34), (55, 11, 22, 34)]

input:[3,4,1,2,3],2
output:31

这是代码高尔夫所以最短的代码赢得了

可选:如果可能,可以添加类似于if length is greater than 20: print length else print answer__的内容吗?在页脚,而不是在代码中。

EN

回答 3

Code Golf用户

发布于 2018-11-15 07:35:25

Haskell,73字节

代码语言:javascript
复制
import Data.List
f n=filter((n==).length.nub.scanl1 max).nub.permutations

在网上试试!

票数 5
EN

Code Golf用户

发布于 2018-11-15 15:27:40

杰夫特,11字节

代码语言:javascript
复制
á f_åÔâ Ê¥V

在网上试试!

对于较长的输出,将} l添加到末尾将输出长度。无论输出长度或列表,在线解释器都会超时处理[1,2,3,4,5,6,7,8,9],4测试用例。

解释:

代码语言:javascript
复制
á              :Get all permutations
  f_           :Keep only ones where:
    åÔ         : Get the cumulative maximums (i.e. the visible buildings)
      â Ê      : Count the number of unique items
         ¥V    : True if it's the requested number
票数 2
EN

Code Golf用户

发布于 2020-10-31 23:43:45

外壳,9字节

代码语言:javascript
复制
fȯ=⁰Lü≤uP

在网上试试!

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

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

复制
相关文章

相似问题

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