巴士装载合法吗?


15

我今天在公共汽车上,注意到这个标志:

      seated    standing    wheelchairs
max1    37         30            00
max2    36         26            01
max3    34         32            00

坐下的乘客,站立者和轮椅的数量必须不超过桌子上的某些行。(有关详细信息,请参见聊天。)

为了解决这一挑战,我们将概括这一思想:给定一个非负整数列表,其严格为正长度N(乘客类型的数量)和一个非负整数矩阵,其为严格正维(每个配置N列和一行) ,或它的转置),返回指示满足配置限制的索引/真实错误/两个唯一值的列表。

例如,使用上面的矩阵:
30,25,1[1](0索引)[2](1索引)或[false,true,false](布尔值)或["Abe","Bob","Abe"](两个唯一值)等。

以下测试例使用上面的矩阵和0/1为假/真:
[30,30,0]→交通[1,0,1]
[30,31,0]→交通[0,0,1]
[35,30,0]→交通[1,0,0]
[0,0,1]→交通[0,1,0]
[0,0,0]→交通[1,1,1]
[1,2,3]→交通[0,0,0]

以下测试案例使用以下矩阵:
1 2 0 4
2 3 0 2

[1,2,1,2]→交通[0,0]
[1,3,0,1]→交通[0,1]
[1,2,0,3]→交通[1,0]
[1,2,0,1]→交通[1,1]


我误解这个挑战,也可以[30,31,0][1, 1, 1]因为它是由覆盖max3
Okx

是否允许交换真值?(例如,任何truthy到位的价值0和任何一个falsy到位1?)
Xcoder先生

@Okx您误会了一些东西。[x,31,z]排除max1max2因为他们不允许31个参与者。
亚当

@ Mr.Xcoder在这样的挑战中通常允许这样做吗?
亚当

曾经认为(请参阅(2)(也请参阅Martin的评论)在默认情况下是允许的,但是我还没有找到元共识。我首先发布了这个meta问题,其结论是应该首先询问OP。我通常会允许,但我看不出不应该交换它们的原因。
Xcoder先生18年

Answers:



6

Haskell,22个 20字节

map.(or.).zipWith(>)

False如果合法True则返回。

在线尝试!

将True / False翻转为返回值可节省2个字节(感谢@ user202729!)。随着True法律它的map.(and.).zipWith(<=)(22个字节)。在线尝试!


在输出中翻转true和false会导致更短的解决方案。
user202729



3

R32 30 26字节

function(x,y)!colSums(x<y)

在线尝试!

接受转置形式的矩阵为x,测试配置为y。返回布尔向量。

最初的-2字节归因于mnel,JayCe则进一步归负-4个字节。


2
使用函数体apply(x> = y,2,all)保存2个字节
mnel


2

果冻,3个字节

<Ẹ€

在线尝试!

0=真,1=假。


如果值不需要不同,则可以使用
Xcoder先生,18年

@ Mr.Xcoder我认为这里没有给出该选项。我想我会拭目以待。
暴民埃里克(Erik the Outgolfer)'18年


1
@ Mr.Xcoder先生,看来不是完全“虚假”,而是“虚假”,不幸的是,这并不是挑战所要求的。
暴民埃里克(Erik the Outgolfer)

@ Mr.Xcoder果冻需要
亚当


2

JavaScript(ES6),38个字节

将输入作为(matrix)(vector)。返回一个布尔数组。

m=>v=>m.map(r=>!r.some((t,x)=>v[x]>t))

在线尝试!



2

视网膜0.8.2,57字节

\d+
$*
;(?=.*;(.*))
;$1¶
%(+`,1*(1*)(;.*),\1$
$2
(1*);\1$

在线尝试!链接包括测试用例,但输出全部一起运行。说明:

\d+
$*

转换为一元。

;(?=.*;(.*))
;$1¶

给矩阵的每一行自己的列表副本。

%(

在矩阵的每一行上分别进行操作。

+`,1*(1*)(;.*),\1$
$2

重复删除行和列表的最后一个数字,同时该行的最后一个数字至少与列表相同。

(1*);\1$

这样,列表中应该只剩下一个数字,并且该行中的数字至少应与该数字一样大。




1

05AB1E,5 个字节

εs<›P

在线尝试验证所有测试用例

说明:

不幸的是05AB1E v1没有为或内置1个字符,因此在使用之前我会减小每个值。当前正在开发的05AB1E v2将具有这些内置函数

ε        # For-each row of the (implicitly input) matrix:
 s       #  Swap, so the (implicitly input) list is at the top of the stack
  <      #  Decrease every value in the input-list by 1
         #   i.e. [30,25,1] → [29,24,0]
        #  Check for each value in the matrix-row if they're larger
         #  than the input-list value at the same index
         #   i.e. [37,30,0] and [29,24,0] → [1,1,0]
    P    #  Then take the product of these checks
         #   i.e. [1,1,0] → 0

1

Stax,8 个字节

â ╤┘µrφî

运行并调试

说明:

mx\{:vm|A Full program, unpacked, implicit input
m         Map over rows of the matrix:
 x\         Zip with input array
   {  m     Map over result:
    :v        Check if non-increasing, i.e. matrix element greater than or equal to array element
       |A   All.
            Implicit output


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.