¿Es legal la carga del autobús?


15

Hoy estaba en el autobús y noté esta señal:

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

El número de pasajeros sentados, personas de pie y sillas de ruedas no debe ser mayor que una fila en la mesa. (Ver chat para más detalles).

Para los propósitos de este desafío, generalizaremos esta idea: dada una lista entera no negativa de una longitud estrictamente positiva N (número de tipos de pasajeros) y una matriz entera no negativa de dimensiones estrictamente positivas (N columnas y una fila por configuración , o la transposición de esto), devuelve una lista de índices / verdades-falsas / dos valores únicos que indican qué límites de configuración se cumplen.

Por ejemplo, con la matriz anterior:
30,25,1→ [1](0 indexado) [2](1 indexado) o [false,true,false](booleano) o ["Abe","Bob","Abe"](dos valores únicos), etc.

Los siguientes casos de prueba usan la matriz anterior y el 0/1 para falso / verdadero:
[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]

Los siguientes casos de prueba usan la siguiente matriz:
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]


¿Estoy malinterpretando este desafío o puede [30,31,0]ser [1, 1, 1]porque está cubierto por max3?
— Okx

¿Se permite el intercambio de valores de verdad? (p. ej., ¿algún valor de verdad en lugar de 0y otro falso en lugar de 1?)
— Sr. Xcoder

@Okx Estás malentendido algo. [x,31,z]descarta max1y max2porque no permiten 31 standees.
— Adám

@ Mr.Xcoder ¿Eso generalmente está permitido en desafíos como este?
— Adám

Yo solía pensar (ver (2) ) (véase también el comentario de Martin ) esto es permitido por defecto, pero no he encontrado un consenso meta. He procedido publicando esta meta pregunta , cuya conclusión es que primero se debe hacer el OP. Normalmente lo permito, no veo la razón por la que no deberían intercambiarse.
— Sr. Xcoder

Respuestas:



6

Haskell, 22 20 bytes

map.(or.).zipWith(>)

Devoluciones Falsesi es legal y Truesi no.

Pruébalo en línea!

Voltear verdadero / falso como valores de retorno ahorra 2 bytes (¡gracias @ user202729!). Con Truepara legal es map.(and.).zipWith(<=)(22 bytes). Pruébalo en línea!


Voltear verdadero y falso en la salida da como resultado una solución más corta.
— user202729



3

R , 32 30 26 bytes

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

Pruébalo en línea!

Acepta la matriz en forma transpuesta como x, prueba config como y. Devuelve un vector de booleanos.

-2 bytes iniciales gracias a mnel, y luego -4 por JayCe.


2
Ahorre 2 bytes con un cuerpo de función aplicar (x> = y, 2, todos)
— mnel


2

Jalea , 3 bytes

<Ẹ€

Pruébalo en línea!

0= Cierto, 1= Falso.


Si los valores no necesitan ser distintos, <§funcionaría
— Sr. Xcoder

@ Mr.Xcoder No creo que esa opción se dé aquí. Supongo que esperaré y veré.
— Erik the Outgolfer


1
@ Mr.Xcoder Hm, parece que <§no es exactamente "verdadero-falso" sino más bien "falso-verdadero", que, desafortunadamente, no es lo que el desafío pide.
— Erik the Outgolfer

@ Mr.Xcoder Jelly necesita ≥.
— Adám


2

JavaScript (ES6), 38 bytes

Toma entrada como (matrix)(vector). Devuelve una matriz booleana.

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

Pruébalo en línea!



2

Retina 0.8.2 , 57 bytes

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

Pruébalo en línea! El enlace incluye casos de prueba, pero la salida se ejecuta en conjunto. Explicación:

\d+
$*

Convierte a unario.

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

Dé a cada fila de la matriz su propia copia de la lista.

%(

Opere por separado en cada fila de la matriz.

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

Elimine repetidamente el último número de la fila y la lista, mientras que el último número de la fila es al menos tan grande como el de la lista.

(1*);\1$

Entonces debería quedar un número en la lista y el número en la fila debería ser al menos tan grande como ese.




1

05AB1E , 5 bytes

εs<›P

Pruébelo en línea o verifique todos los casos de prueba .

Explicación:

Desafortunadamente, 05AB1E v1 no tiene un 1-char incorporado para ≤o ≥, por lo que disminuyo cada valor antes de usarlo ›. 05AB1E v2 que está actualmente en desarrollo tendrá estos componentes incorporados.

ε        # 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 bytes

â ╤┘µrφî

Ejecutar y depurarlo

Explicación:

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


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.