Ссылка на оригинальное решение
Задача:
Даны две целочисленные квадратные матрицы порядка $ 6 $. Найти последовательность из нулей и единиц $ b_1, \dots , b_6 $ такую, что $ b_i = 1 $, когда количество отрицательных и неотрицательных элементов $ i $-й строки первой матрицы совпадает соответственно с количеством отрицательных и неотрицательных элементов $ i $-й строки второй матрицы.
Тесты:
№ | Матрица $ A $ | Матрица $ B $ | Выходные данные |
1 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 |
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 |
1 1 1 1 1 1 |
2 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 |
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 |
0 0 0 0 0 0 |
3 | 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 |
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 |
0 1 0 0 1 0 |
4 | 0 2 2 3 4 4 1 3 3 4 5 5 2 4 4 5 6 6 3 5 5 6 7 7 4 6 6 7 8 8 5 7 7 8 9 9 |
0 2 2 3 4 4 -1 3 1 4 3 5 -2 4 0 5 2 6 -3 5 -1 6 1 7 -4 6 -2 7 0 8 -5 7 -3 8 -1 9 |
1 0 0 0 0 0 |
Код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
class Test { static function main() { var A = [ [0, 2, 2, 3, 4, 4], [1, 3, 3, 4, 5, 5], [2, 4, 4, 5, 6, 6], [3, 5, 5, 6, 7, 7], [4, 6, 6, 7, 8, 8], [5, 7, 7, 8, 9, 9] ]; var B = [ [0, 2, 2, 3, 4, 4], [-1, 3, 1, 4, 3, 5], [-2, 4, 0, 5, 2, 6], [-3, 5, -1, 6, 1, 7], [-4, 6, -2, 7, 0, 8], [-5, 7, -3, 8, -1, 9] ]; var ans = []; for(i in 0 ... 6) { var a_positive = 0, b_positive = 0; for(j in 0 ... 6) { if(A[i][j] >= 0) { a_positive += 1; } if(B[i][j] >= 0) { b_positive += 1; } } if(a_positive == b_positive) { ans.push(1); } else { ans.push(0); } } trace(ans); } } |
Решение:
Заведем массив ans , в который будем дописывать $ 1 $, если количество неотрицательных элементов матрицы $ A $ в текущей строке совпадает с количеством неотрицательных элементов матрицы $ B $ в текущей строке, и $ 0 $ в противном случае. Проверять совпадение количества отрицательных элементов отдельно не нужно, потому как строки в матрицах одинаковой длины, т. е. количество отрицательных элементов всегда равно $ 6 — $ (количество_неотрицательных).
В цикле по переменной i проходимся по каждой из шести строк матриц, каждый раз заводя счетчики на количество неотрицательных элементов. Цикл по j идет по столбцам матриц, проверяя каждый элемент. Если встретили неотрицательный элемент в матрице $ A $, увеличиваем счетик a_positive . Если неотрицательный элемент попался в $ B $, увеличиваем b_positive .
По истечении прохода по текущей строке проверяем, совпадает ли количество неотрицательных элементов в строке $ i $ для обеих матриц. Если да, дописываем в ответ единицу, иначе — ноль.