Longest parallel lines
+5
−0
Note:
This challenge was underspecified and bad, and as such I would not encourage answering it in the future.
Challenge
You will be given a single 2D boolean array $M$. You may take its dimensions as a separate argument if needed.
Find the longest parallel lines in the matrix. Parallel lines can be vertical, horizontal, or diagonal, and there can't be a 1 anywhere between the two lines. (Imagine 0s are air, and the 1s are solid, the two lines have to be able to 'see' each other) For example, in the matrix
0 1 1 1 0 0
0 0 0 0 0 0
0 1 1 1 1 0
0 0 1 1 0 0
0 0 0 0 0 0
the longest parallel line is length 3. If there are no parallel lines, output 0.
Test Cases
I:
0 0 0 1
0 0 0 0
0 0 0 0
0 1 0 0
O: 0
I:
0 0 1 0 1
0 1 0 1 0
1 0 1 0 0
O: 3
I:
0 0 1 0 1
0 0 1 0 1
0 0 1 1 1
0 0 1 0 1
0 0 1 0 1
O: 2
(The 1 in the middle is obstructing the line of sight)
1 answer
+5
−0
JavaScript (Node.js), 541 540 bytes
for(_='=>)==!(+==0h,.map(M,R(=1,,e,b &&Nl=[-1,))s(n,=(a a=u,v(i=g(z,u,f=(a,w,cs=Math.max,r?[...r(--a ) (a)]:[],R>&b>&a<w&b<g=(f ,c,d(v(i(fc d++f )?a[b][f]:e)),v=fr(w+s).some(f),na(c,uc(f,z!f||(M1])olNO(oO)|(o--O(Po,l(Qx=z,yxN,yOx,y)a[y][x]&g(x,y,o,l)PQ++,n=s(n,Q,m1,0||(d0,1),n0,k=1]p[dp),1]q(jt=ze++,tpt)a[e][t]&g(t,q,!q)(q?m:d)++j,k=s(k,jkcf(r(w,gr(fa[f][g],w,0';G=/[-]/.exec(_);)with(_.split(G))_=join(shift());eval(_)
1 comment thread