test.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. function findBlackNumber(arr, N) {
  2. let blackPoint = [];
  3. let blackTotal = getBlackNumber(arr);
  4. let blackMap = getBlackMap(arr);
  5. let matchY = getMatchY(arr, blackMap);
  6. console.log(matchY);
  7. for (let i = 0; i < arr.length; i++) {
  8. for (let j = 0; j < arr[i].length; j++) {
  9. if (blackTotal.x[i] === blackTotal.y[j]
  10. && blackTotal.x[i] === N
  11. && arr[i][j] === 'B'
  12. && matchY[j] === 1
  13. ) {
  14. blackPoint.push([i, j]);
  15. }
  16. }
  17. }
  18. return blackPoint;
  19. }
  20. function getBlackMap(arr) {
  21. let result = {};
  22. for (let i = 0; i < arr.length; i++) {
  23. let value = arr[i].join('');
  24. result[i] = value;
  25. }
  26. return result;
  27. }
  28. function getMatchY(arr, blackMap) {
  29. let result = new Array(arr[1].length).fill(0);
  30. for (let i = 0; i < result.length; i++) {
  31. let _tempValue = '';
  32. let metch = true
  33. for (let j = 0; j < arr.length; j++) {
  34. let _result = true
  35. for (let k = 0; k < arr[j].length; k++) {
  36. if (i === k && blackMap[j][k] === 'B') {
  37. if (!_tempValue) {
  38. _tempValue = blackMap[j];
  39. } else if (_tempValue !== blackMap[j]) {
  40. _tempValue = '';
  41. _result = false;
  42. break;
  43. }
  44. }
  45. }
  46. if (!_result) {
  47. metch = false;
  48. break;
  49. }
  50. }
  51. if (metch) {
  52. result[i] = 1;
  53. }
  54. }
  55. return result;
  56. }
  57. function getBlackNumber(arr) {
  58. let result = {x: new Array(arr.length).fill(0), y: new Array(arr[1].length).fill(0)};
  59. let arrY = new Array(arr[1].length).fill(0);
  60. for (let i = 0; i < arr.length; i++) {
  61. let _numberX = arr[i].filter(item => item === 'B').length;
  62. result.x[i] = _numberX;
  63. }
  64. for (let i = 0; i < arrY.length; i++) {
  65. for (let j = 0; j < arr.length; j++) {
  66. for (let k = 0; k < arr[j].length; k++) {
  67. if (i === k && arr[j][k] === 'B') {
  68. result.y[i] += 1
  69. }
  70. }
  71. }
  72. }
  73. return result;
  74. }
  75. const a = [
  76. ['w', 'B', 'w', 'B', 'B','w'],
  77. ['w', 'B', 'w', 'B', 'B','w'],
  78. ['w', 'B', 'w', 'B', 'B','w'],
  79. ['w', 'w', 'B', 'w', 'B','w'],
  80. ]
  81. const b = [
  82. ['w', 'B', 'w', 'B', 'B','w'],
  83. ['w', 'B', 'w', 'B', 'B','w'],
  84. ['w', 'B', 'w', 'B', 'B','w'],
  85. ['B', 'w', 'B', 'w', 'W','B'],
  86. ['B', 'w', 'B', 'w', 'W','B'],
  87. ['B', 'w', 'B', 'w', 'W','B'],
  88. ]
  89. console.log(findBlackNumber(b, 3));