Чи законний навантаження на автобус?


15

Я був сьогодні в автобусі і помітив цей знак:

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

Кількість пасажирів, що сидять, стоячи та інвалідних візків, повинна бути не більшою, ніж якийсь ряд у таблиці. (Детальніше див. У чаті.)

Для цілей цього виклику ми узагальнимо цю ідею: Враховуючи невід'ємний цілий список строго позитивної довжини N (кількість типів пасажирів) та невід'ємну цілочисельну матрицю строго позитивних розмірів (N стовпців та один рядок у конфігурації або перекласти це), поверніть перелік індексів / truthy-falsies / два унікальних значення, що вказують, які межі конфігурацій виконуються.

Напр. З вищевказаною матрицею:
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

Чи дозволяється міняти значення істини? (напр., будь-яка ціна на користь замість 0і якась 1
фальшива

@Okx Ви щось нерозумієте. [x,31,z]виключає max1і max2тому, що вони не дозволяють 31 особу.
Адам

@ Mr.Xcoder Чи зазвичай це дозволено в таких проблемах?
Adám

Я думав (див. (2) ) (також див. Коментар Мартіна ) це дозволено за замовчуванням, але я не знайшов мета консенсусу. Я продовжив, розміщуючи це мета-питання , чий висновок про те, що ОП слід задати спочатку. Я зазвичай це дозволяю, не бачу причини, чому їх не слід міняти.
Містер Xcoder

Відповіді:



6

Haskell, 22 20 байт

map.(or.).zipWith(>)

Повертається, Falseякщо законний, а Trueякщо ні.

Спробуйте в Інтернеті!

Перегортаючи True / False, оскільки значення повернення економить 2 байти (спасибі @ user202729!). З Trueдля правового це map.(and.).zipWith(<=)(22 байт). Спробуйте в Інтернеті!


Перегортання істинного та хибного у висновку призводить до коротшого рішення.
користувач202729

4

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

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

Спробуйте в Інтернеті!

Відповідно до коментаря Sundar, якщо пропустити транспонінг, економиться 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= Правда, 1= Неправдиво.


Якщо значення не повинні бути чіткими, спрацювало б
Містер Xcoder

@ Mr.Xcoder Я не думаю, що тут надано такий варіант. Я думаю, я зачекаю і побачу.
Erik the Outgolfer


1
@ Mr.Xcoder Гм, схоже, це не зовсім "фальшиво-фальшивий", а скоріше "фальшиво-простір", що, на жаль, не те, що вимагає виклик.
Ерік Аутгольфер

@ Mr.Xcoder Jelly потребує .
Adám




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.