Lấy cảm hứng (với lời giải thích bị đánh cắp từ) này
Lý lịch
Giả sử bạn có hai danh sách A = [a_1, a_2, ..., a_n]
và B = [b_1, b_2, ..., b_n]
số nguyên. Chúng ta nói A
là có khả năng-chia bởi B
nếu có một hoán vị của B
mà làm cho a_i
chia hết b_i
cho tất cả i
. Vấn đề là sau đó: có thể sắp xếp lại (nghĩa là hoán vị) B
sao a_i
cho chia hết b_i
cho tất cả i
? Ví dụ, nếu bạn có
A = [6, 12, 8]
B = [3, 4, 6]
Thì câu trả lời sẽ là True
, như B
có thể được sắp xếp lại được B = [3, 6, 4]
và sau đó chúng ta sẽ có đó a_1 / b_1 = 2
, a_2 / b_2 = 2
và a_3 / b_3 = 2
, tất cả đều là các số nguyên, vì vậy A
có khả năng gây-chia B
.
Như một ví dụ nên xuất ra False
, chúng ta có thể có:
A = [10, 12, 6, 5, 21, 25]
B = [2, 7, 5, 3, 12, 3]
Lý do False
là vì chúng tôi không thể sắp xếp lại thứ tự B
25 và 5 A
, nhưng ước số duy nhất trong B
5 sẽ là 5, vì vậy một cái sẽ bị loại bỏ.
Nhiệm vụ của bạn
Rõ ràng, nhiệm vụ của bạn là xác định xem hai danh sách (được đưa ra làm đầu vào) có khả năng chia hết hay không. Bạn có thể nhận đầu vào theo bất kỳ cách nào được chấp nhận, như với đầu ra.
Các bản sao trong danh sách là một khả năng và các hạn chế kích thước duy nhất trên các số nguyên là ngôn ngữ của bạn. Tất cả các số nguyên trong cả hai danh sách sẽ lớn hơn 0 và cả hai danh sách sẽ có kích thước bằng nhau.
Như với tất cả các vấn đề quyết định , các giá trị đầu ra phải là 2 giá trị riêng biệt đại diện cho đúng và sai.
Đây là một mã golf để mã ngắn nhất chiến thắng!
Các trường hợp thử nghiệm
Input, input => output
[6, 12, 8], [3, 4, 6] => True
[10, 5, 7], [1, 5, 100] => False
[14, 10053, 6, 9] [1,1,1,1] => True
[12] [7] => False
[0, 6, 19, 1, 3] [2, 3, 4, 5, 6] => undefined