Законна ли загрузка автобуса?


15

Я был в автобусе сегодня, и заметил этот знак:

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

Количество сидячих пассажиров, пассажиров и инвалидных колясок должно быть не больше ряда строк в таблице. (Подробности см. В чате)

Для целей этой задачи мы обобщим эту идею: учитывая неотрицательный целочисленный список строго положительной длины N (количество типов пассажиров) и неотрицательную целочисленную матрицу строго положительных измерений (N столбцов и по одной строке на конфигурацию). или транспонировать это), вернуть список индексов / truey-falsies / two-unique-values, указывающий, какие ограничения конфигурации выполнены.

Например, с помощью приведенной выше матрицы:
30,25,1[1](0-индексированный) [2](1-индексированный) или [false,true,false](логический) или ["Abe","Bob","Abe"](два уникальных значения) и т. Д.

В следующих тестовых примерах используется вышеуказанная матрица и 0/1 для false / true:
[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

Разрешается ли менять истинные значения? (например, любое истинное значение вместо 0и любое ложное вместо 1?)
г-н Xcoder

@Okx Ты что-то неправильно понимаешь. [x,31,z]исключает max1и max2потому, что они не позволяют 31 товарищам.
адам

@ Mr.Xcoder Это обычно разрешается в таких ситуациях?
адам

Раньше я думал (см. (2) ) (также см . Комментарий Мартина ), что это разрешено по умолчанию, но я не нашел мета-консенсуса. Я приступил к публикации этого мета-вопроса , заключение которого о том, что ФП следует задать первым. Я обычно допускаю это, я не вижу причины, по которой их нельзя менять местами.
г-н Xcoder

Ответы:



6

Haskell, 22 20 байтов

map.(or.).zipWith(>)

Возвращает, Falseесли законно, а Trueесли нет.

Попробуйте онлайн!

Переключение True / False в качестве возвращаемых значений экономит 2 байта (спасибо @ user202729!). С Trueлегальными map.(and.).zipWith(<=)(22 байта). Попробуйте онлайн!


Переключение true и false в выводе приводит к более короткому решению.
user202729

4

Октава , 15 байт

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

Попробуйте онлайн!

Согласно комментарию Сундара, пропуск транспонирования экономит 2 байта.


OP позволяет использовать матрицу в качестве транспонирования того, что показано в вопросе, и вы можете использовать bвектор-столбец вместо вектора строки (поскольку он просто указан в виде списка), сохраняя 2 байта: попробуйте онлайн!
sundar - Восстановить Монику


3

R , 32 30 26 байт

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

Попробуйте онлайн!

Принимает матрицу в транспонированном виде как x, тест конфигурации как y. Возвращает вектор логических значений.

Начальные -2 байта благодаря mnel, а далее -4 от JayCe.


2
Сохраните 2 байта с применением тела функции (x> = y, 2, all)
mnel


2

Желе , 3 байта

<Ẹ€

Попробуйте онлайн!

0= True, 1= False.


Если значения не должны быть четкими, будет работать
г-н Xcoder

@ Mr.Xcoder Не думаю, что этот вариант указан здесь. Я думаю, я подожду и посмотрю.
Эрик Outgolfer


1
@ Mr.Xcoder Хм, похоже, это не совсем "правда-ложь", а скорее "ложь-правда", а это, к сожалению, не то, что требует задача.
Эрик Outgolfer

@ Mr.Xcoder Jelly нужно .
адам




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



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.