¿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]

Adán
fuente
¿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!

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

Octava , 15 bytes

@(a,b)all(a>=b)

Pruébalo en línea!

Según el comentario de sundar, omitir la transposición ahorra 2 bytes.

tsh
fuente
OP permite tomar la matriz como la transposición de lo que se muestra en la pregunta, y puede tomar bcomo un vector de columna en lugar de un vector de fila (ya que solo se especifica como una lista), ahorrando 2 bytes: ¡ Pruébelo en línea!
sundar - Restablece a Mónica el
3

MATL , 3 bytes

<~A

Pruébalo en línea!

Toma la matriz de entrada como una transposición del formato en la pregunta (según lo permitido por OP), con una columna por configuración. Salidas booleanas 0 y 1 para falso y verdadero.

sundar - Restablecer a Monica
fuente
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.

Kirill L.
fuente
2
Ahorre 2 bytes con un cuerpo de función aplicar (x> = y, 2, todos)
mnel
1
guardar 4 bytes
JayCe
2

Jalea , 3 bytes

<Ẹ€

Pruébalo en línea!

0= Cierto, 1= Falso.

Erik el Outgolfer
fuente
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
Está permitido .
Sr. Xcoder
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!

Arnauld
fuente
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.

Neil
fuente
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
Kevin Cruijssen
fuente
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
wastl
fuente