A carga do ônibus é legal?


15

Eu estava no ônibus hoje e notei este sinal:

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

O número de passageiros sentados, cadeiras de rodas e cadeiras de rodas não precisa ser maior que uma fila na tabela. (Consulte o bate-papo para obter detalhes.)

Para os propósitos deste desafio, generalizaremos esta ideia: Dada uma lista inteira não negativa de comprimento estritamente positivo N (número de tipos de passageiros) e uma matriz inteira não negativa de dimensões estritamente positivas (N colunas e uma linha por configuração , ou a transposição disso), retorne uma lista de índices / verdadeiras falsidades / dois valores exclusivos, indicando quais limites de configuração foram atendidos.

Por exemplo, com a matriz acima:
30,25,1[1](indexado 0) [2](indexado 1) ou [false,true,false](booleano) ou ["Abe","Bob","Abe"](dois valores únicos) etc.

Os seguintes casos de teste usam a matriz acima e 0/1 para falso / verdadeiro:
[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]

Os seguintes casos de teste usam a seguinte 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]


Estou entendendo mal esse desafio ou pode [30,31,0]ser [1, 1, 1]porque está coberto por ele max3?
Okx 5/08/19

É permitido trocar valores de verdade? (por exemplo, qualquer truthy valor no lugar do 0e qualquer um Falsas no lugar de 1?)
Mr. Xcoder

@ Ok Você está entendendo algo errado. [x,31,z]exclui max1e max2porque eles não permitem 31 standees.
Adám 5/08/19

@ Mr.Xcoder Isso geralmente é permitido em desafios como este?
Adám 5/08/19

Eu costumava pensar (ver (2) ) (também ver o comentário de Martin ) que isso é permitido por padrão, mas não encontrei um meta consenso. Eu procedi postando esta meta questão , cuja conclusão de que o OP deveria ser solicitado primeiro. Eu geralmente permito, não vejo a razão pela qual eles não devem ser trocados.
Mr. Xcoder

Respostas:



6

Haskell, 22 20 bytes

map.(or.).zipWith(>)

Retorna Falsese for legal e Truese não for.

Experimente online!

Virar Verdadeiro / Falso como valores de retorno economiza 2 bytes (obrigado @ user202729!). Com Truepara legal é map.(and.).zipWith(<=)(22 bytes). Experimente online!


Inverter verdadeiro e falso na saída resulta em uma solução mais curta.
user202729

4

Oitava , 15 bytes

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

Experimente online!

Conforme o comentário do sundar, omitir a transposição economiza 2 bytes.


O OP permite considerar a matriz como a transposição do que é mostrado na pergunta, e você pode usar como bvetor de coluna em vez de vetor de linha (já que é apenas especificado como uma lista), economizando 2 bytes: experimente online!
Sundar - Restabelece Monica


3

R , 32 30 26 bytes

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

Experimente online!

Aceita a matriz na forma transposta como x, teste de configuração comoy . Retorna um vetor de booleanos.

-2 bytes iniciais graças ao mnel, e mais -4 por JayCe.


2
Guardar 2 bytes com um corpo de função aplicar (x> = y, 2, todos)
mnel


2

Geléia , 3 bytes

<Ẹ€

Experimente online!

0= Verdadeiro, 1= Falso.


Se os valores não precisam ser distintos, iria trabalhar
Mr. Xcoder

@ Mr.Xcoder Eu não acho que essa opção seja dada aqui. Acho que vou esperar e ver.
Erik the Outgolfer


1
@ Mr.Xcoder Hm, parece que não é exatamente "verdade-falsidade", mas sim "falsidade-verdade", que, infelizmente, não é o que o desafio pede.
Erik the Outgolfer

@ Mr.Xcoder Jelly precisa .
Adám 05/08/19


2

JavaScript (ES6), 38 bytes

Toma entrada como (matrix)(vector). Retorna uma matriz booleana.

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

Experimente online!



2

Retina 0.8.2 , 57 bytes

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

Experimente online! O link inclui casos de teste, mas a saída é executada em conjunto. Explicação:

\d+
$*

Converta para unário.

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

Dê a cada linha da matriz sua própria cópia da lista.

%(

Opere separadamente em cada linha da matriz.

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

Remova repetidamente o último número da linha e a lista enquanto o último número da linha for pelo menos tão grande quanto o da lista.

(1*);\1$

Deve haver um número na lista e o número na linha deve ser pelo menos tão grande quanto esse.




1

05AB1E , 5 bytes

εs<›P

Experimente online ou verifique todos os casos de teste .

Explicação:

Infelizmente, 05AB1E v1 não possui um caractere de 1 caractere para ou , portanto, diminuo cada valor antes de usá-lo . O 05AB1E v2, atualmente em desenvolvimento, terá esses componentes internos.

ε        # 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φî

Execute e depure

Explicação:

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


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.