1+ // you can write to stdout for debugging purposes, e.g.
2+ // console.log('this is a debug message');
3+
4+ function solution ( X , Y , colors ) {
5+ // write your code in JavaScript (Node.js 8.9.4)
6+ if ( X . length === 0 || Y . length === 0 || colors . length === 0 ) return 0 ;
7+ if ( X . length !== Y . length || X . length !== colors . length ) return 0 ;
8+
9+ const numberOfPoints = X . length ;
10+
11+ // calculate distance from O to given points
12+ const distances = new Array ( numberOfPoints ) . map ( x => 0 ) ;
13+ for ( let i = 0 ; i < numberOfPoints ; i ++ ) {
14+ distances [ i ] = {
15+ color : colors [ i ] ,
16+ value : Math . pow ( X [ i ] , 2 ) + Math . pow ( Y [ i ] , 2 ) ,
17+ } ;
18+ }
19+
20+ // Sort distances
21+ distances . sort ( ( a , b ) => a . value - b . value ) ;
22+
23+ // Calculate frequency
24+ let freqDistance = { } ;
25+ for ( let i = 0 ; i < distances . length ; i ++ ) {
26+ freqDistance [ distances [ i ] . value ] = {
27+ freq : freqDistance [ distances [ i ] . value ] ? freqDistance [ distances [ i ] . value ] . freq + 1 : 1 ,
28+ weight : freqDistance [ distances [ i ] . value ]
29+ ? distances [ i ] . color === 'G'
30+ ? freqDistance [ distances [ i ] . value ] . weight + 1
31+ : freqDistance [ distances [ i ] . value ] . weight - 1
32+ : distances [ i ] . color === 'G'
33+ ? 1
34+ : - 1
35+ } ;
36+ }
37+
38+ let result = 0 ;
39+ let count = 0 ;
40+ let currFreq = 0 ;
41+ for ( const distance in freqDistance ) {
42+ count += freqDistance [ distance ] . weight ;
43+ currFreq += freqDistance [ distance ] . freq ;
44+ if ( count === 0 ) result = currFreq ;
45+ }
46+
47+ return result ;
48+ }
49+
50+ console . log ( solution ( [ 4 , 0 , 2 , - 2 ] , [ 4 , 1 , 2 , - 3 ] , 'RGRR' ) ) ;
0 commit comments