{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2026-04-06T14:01:22.000Z","description":"Problems submitted by members of the MATLAB Central community.","is_default":true,"created_by":161519,"badge_id":null,"featured":false,"trending":false,"solution_count_in_trending_period":0,"trending_last_calculated":"2026-04-06T00:00:00.000Z","image_id":null,"published":true,"community_created":false,"status_id":2,"is_default_group_for_player":false,"deleted_by":null,"deleted_at":null,"restored_by":null,"restored_at":null,"description_opc":null,"description_html":null,"published_at":null},"problems":[{"id":58773,"title":"ICFP 2023 Orchestra:  Score Optimization of 2-Musicians and 1-Attendee","description":"The Template solves all cases.   Please submit the template and view the graphs.\r\nThe ICFP 2023 Competition in July was to place musicians on a stage to maximize the attendees net Joy.  The ICFP 2023 Orchestra Spec shows details of the contest. The musicians played various instruments with attendees having preference values for each instrument type. Musicians could block attendees from seeing musicians behind them. Blocking occurs if a_i to m_j vector touched within 5 of m_k. No musicians allowed within 10 of one another. \r\nThis Challenge is to place Two musicians onto the stage,mxy, to maximize Joy for one attendee,axy. Score an Attendee Joy higher than a min_score. The Joy table am is Joy co-factor for each musician type. Joy is scaled by 1/distance-squared between Musician and Attendee. Joy(j,i)=1000000*am(i,mu(j))/d2(i,j).\r\nThe Joy here is to see the figures of optimal placement and the data per case.\r\n\r\nThe Challenge is to minimize the time, best known time of 0.28s, and/or to clean the code for size.\r\nThe scoring and blocking functions are provided in the template.\r\n\r\nThis figure is a case where the Attendee is Grumpy and dislikes both Musicians to different amounts.\r\n\r\n","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 830.5px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 415.25px; transform-origin: 407px 415.25px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 255px 8px; transform-origin: 255px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Template solves all cases.   Please submit the template and view the graphs.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 84px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 42px; text-align: left; transform-origin: 384px 42px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 346.5px 8px; transform-origin: 346.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe ICFP 2023 Competition in July was to place musicians on a stage to maximize the attendees net Joy.  The \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://drive.google.com/file/d/16GFrZMudBrNwjMi3tOaP_iiSHh5pUtXL/view?usp=sharing\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eICFP 2023 Orchestra Spec\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 334px 8px; transform-origin: 334px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e shows details of the contest. The musicians played various instruments with attendees having preference values for each instrument type. Musicians could block attendees from seeing musicians behind them. Blocking occurs if a_i to m_j vector touched within 5 of m_k. No musicians allowed within 10 of one another. \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 63px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.5px; text-align: left; transform-origin: 384px 31.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 374px 8px; transform-origin: 374px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to place Two musicians onto the stage,mxy, to maximize Joy for one attendee,axy. Score an Attendee Joy higher than a min_score. The Joy table am is Joy co-factor for each musician type. Joy is scaled by 1/distance-squared between Musician and Attendee. Joy(j,i)=1000000*am(i,mu(j))/d2(i,j).\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 246px 8px; transform-origin: 246px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Joy here is to see the figures of optimal placement and the data per case.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 8px; transform-origin: 0px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 306.5px 8px; transform-origin: 306.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Challenge is to minimize the time, best known time of 0.28s, and/or to clean the code for size.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 202.5px 8px; transform-origin: 202.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe scoring and blocking functions are provided in the template.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 425.5px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 212.75px; text-align: left; transform-origin: 384px 212.75px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline;width: 560px;height: 420px\" src=\"data:image/png;base64,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LhssbebMmTNmzCgqKlJKpaenL1y48MCBA8LXZbcgPQq/CNw2azxy5Mi6deuqqqqMpwdtsLTz58/v27fP2ExMTLxy5YoN1pWQkHD79u36+vr6+vpLly61t7d7PB4brEsp1dvb29TUZGwODQ05HA4bLO3xxx8fvel0Op1Op/R1mfhAxcOg6/pzzz136NChcDjc09Mze/bsa9eumT3UBDh06JDxlJ091tjX15eVldXW1jb0XyMjIzZYWk9PT2Zm5r///e9wOHzt2rX58+f/4x//sMG6RvvFL34RecrOHus6d+5cZmZm5MGzq1evzp8/v6OjwwZLGxoaeuaZZ9ra2sLh8I0bNxYsWHD06FHh67JbkMLh8NGjR+fPn//SSy9lZ2cfOHDA7HEmxugghW2xxs2bN6f9X7/97W/Dtlja+++/P2fOnDVr1syZM+ett96K7LTBugxGkMJ2Wde+ffuysrJeeumlrKysP/3pT5GdNljap59++sILLxQVFWVnZ//hD3+I7JS8Ltv+tu/PP//8G9/4xtgnAuzExmu0+tJCoZDf73/88cfvukBv9XXdjw3WFQqFBgcHx67CBkv74osvoqOjLfGtaNsgAQCsRVYeAQCPLIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARPgfBeVjYdEW0loAAAAASUVORK5CYII=\" data-image-state=\"image-loaded\" width=\"560\" height=\"420\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 316px 8px; transform-origin: 316px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis figure is a case where the Attendee is Grumpy and dislikes both Musicians to different amounts.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 8px; transform-origin: 0px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 8px; transform-origin: 0px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function mxy=Orc_2M1A(axy,mu,am,xmin,xmax,ymin,ymax,score,sxy)\r\n %Given 1 Attendee and 2 Musicians Optimize Score\r\n %Place Musicicans,mxy, within the bounds of the stage [xmin xmax ymin ymax] to\r\n % achieve maximum score sum for i=1:2 1000000*am(1,mu(i))/dist_squared(axy,mxy(i,:)\r\n % where mu(i) is musician type 1 or 2 and am is an Affinity matrix [1,2]\r\n %sxy(600,2) contains all the integer stage points; note:mxy is not limited to integers\r\n % Musicians must be spaced by 10 or more\r\n % A musician gets no score if the other musician is 5 or less from the musician's \r\n % line-of-sight to the attendee (a function distP2Seg is provided)\r\n \r\n %Performance approx 0.62s  Best known Time:0.28s\r\n for x1=xmin:xmax\r\n  for y1=ymin:ymax\r\n   for x2=xmin:xmax\r\n    for y2=ymin:ymax\r\n      if (y2-y1)^2+(x2-x1)^2\u003c100,continue;end\r\n      mxy=[x1 y1;x2 y2];\r\n      [Totscr,muscr]=Calc_score(mxy,mu,am,axy);\r\n      if Totscr\u003e=score\r\n       return;\r\n      end\r\n    end %y2\r\n   end %x2\r\n  end %y1\r\n end %x1\r\n \r\nend %Orc_2M1A\r\n\r\nfunction [Totscr,muscr]=Calc_score(mxy,mu,am,axy)\r\n%No error checking,volume,pillars\r\n Lmu=length(mu);\r\n na=size(axy,1);\r\n  \r\n%Calc each mu score\r\n d2am=zeros(na,Lmu);\r\n for j=1:Lmu\r\n  d2am(:,j)=sum((axy-mxy(j,:)).^2,2);\r\n end\r\n \r\n muscr=zeros(Lmu,1);\r\n dmax=25;\r\n for j=1:Lmu\r\n  for i=1:na\r\n   bflag=0;\r\n   for k=1:Lmu %search for any blockng musician \r\n    if k==j,continue;end\r\n    dv2=distP2S2Z(mxy(k,1),mxy(k,2),mxy(j,1),mxy(j,2),axy(i,1),axy(i,2)); %Intra Seg dist\r\n    if min(dv2)\u003c=dmax\r\n     bflag=1;\r\n     break;\r\n    end\r\n   end\r\n   \r\n   if bflag\r\n     continue;\r\n   end\r\n   \r\n   muscr(j)=muscr(j)+1000000*am(i,mu(j))/d2am(i,j);\r\n  end\r\n end\r\n Totscr=sum(muscr);\r\nend %Calc_score\r\n\r\nfunction d2=distP2S2Z(px,py,vx,vy,wx,wy)\r\n% Distance from segment only if intra-segment\r\n% reduce to 0\u003c=t\u003c=1\r\n%The point is (px,py) and the segment is [(vx,vy) to (wx,wy)].\r\n% [px py vx vy wx wy]\r\n\r\n d2=Inf;\r\n sL2=(vx-wx)^2+(vy-wy)^2;\r\n %if sL2==0 % Segment is a point  %Error check removed\r\n % d2=(px-vx)^2+(py-vy)^2;\r\n %else % non-point segment\r\n  t=( (px-vx)*(wx-vx)+(py-vy)*(wy-vy) )/sL2;\r\n  if t\u003c0 % Pt beyond normal of segment\r\n   return\r\n   %d2=(px-vx)^2+(py-vy)^2;\r\n  elseif t\u003e1 % Pt beyond normal of segment\r\n    return\r\n   %d2=(px-wx)^2+(py-wy)^2;\r\n  else\r\n   sx=vx+t*(wx-vx);\r\n   sy=vy+t*(wy-vy);\r\n   d2=(px-sx)^2+(py-sy)^2;\r\n  end\r\n %end\r\n %d=sqrt(d2);\r\nend %distP2S2Z\r\n","test_suite":"%%\r\nvalid=1;\r\n\r\norcm=[40 60 5 24 10 39 35 16 1 2 10 20 214053; % mid right 214054\r\n      40 60 5 24 10 39 12 1 1 2 10 20 305630;  %Bot mid 305631\r\n      50 80 25 40 10 60 5 35 1 1 20 20 93947;  %Left Mid 93948\r\n      50 80 25 40 10 60 5 35 1 2 10 -20 24999; %Left with Neg Affinity 25000\r\n      50 80 25 40 10 60 15 70 1 1 10 10 65897; %TL Diag 15 65898\r\n      500 500 1 30 1 30 450 450 1 1 10 10 55;  %56\r\n      30 40 10 18 5 25 15 35 1 2 10 10  127329; %Top Mid; narrow stage\r\n      60 40 10 50 10 30 35 35 1 2 -10 -20 -14105];  %pair Negatve -14104\r\n\r\nOrctime=0;\r\nfigptr=0;\r\n\r\nfor i=1:size(orcm,1)\r\npxyr=[];\r\n[rwx, rhy, xmin, xmax, ymin, ymax, axy, mu, am, score]= ...\r\n  deal(orcm(i,1),orcm(i,2),orcm(i,3),orcm(i,4),orcm(i,5),orcm(i,6),orcm(i,7:8),orcm(i,9:10),orcm(i,11:12),orcm(i,13));\r\n\r\n%stage=ones(xmax-xmin+1,ymax-ymin+1);\r\nstage=ones(ymax-ymin+1,xmax-xmin+1);\r\n[sy,sx]=find(stage);\r\nsxy_base=[sx sy]-1; % Make LL [0,0] Stage(x,y) points\r\n\r\nsxy=sxy_base+[xmin ymin]; % 5 10;5 11  \r\nsxy=sortrows(sxy,[1 2],{'ascend' 'descend'}); %Matlab Find TL by col to BR\r\n\r\nsxy=flipud(sortrows(sxy,1,'ascend')); %Matlab find sequence TL by col to BR\r\n\r\nif mu(1)==mu(2)\r\n am(2)=[]; %if Only one musician type then am reduced\r\nend\r\n\r\n  ztic=tic;\r\n  mxy=Orc_2M1A(axy,mu,am,xmin,xmax,ymin,ymax,score,sxy);\r\n  Orctime=Orctime+toc(ztic);\r\n  dt=toc(ztic);\r\n  \r\n%Validity Checks\r\n if sum((mxy(1,:)-mxy(2,:)).^2)\u003c100\r\n  valid=0;\r\n  fprintf('Pid:%i  Invalid Spacing of Musicians\\n\\n',i);\r\n end\r\n \r\n if min(mxy(:,1))\u003cxmin || max(mxy(:,1))\u003exmax || min(mxy(:,2))\u003cymin || max(mxy(:,2))\u003eymax\r\n  valid=0;\r\n  fprintf('Pid:%i  Invalid Positioning of Musicians off Stage\\n\\n',i);\r\n end\r\n \r\n%[Totscr,muscr]=Calc_score(mxy,mu,am,axy);\r\n Lmu=length(mu);\r\n na=size(axy,1);\r\n %Calc each mu score\r\n d2am=zeros(na,Lmu);\r\n for j=1:Lmu\r\n  d2am(:,j)=sum((axy-mxy(j,:)).^2,2);\r\n end\r\n muscr=zeros(Lmu,1);\r\n dmax=25;\r\n for j=1:Lmu\r\n  for ii=1:na\r\n   bflag=0;\r\n   \r\n   for k=1:Lmu %search for any blockng musician \r\n    if k==j,continue;end\r\n%    dv2=distP2S2Z(mxy(k,1),mxy(k,2),mxy(j,1),mxy(j,2),axy(ii,1),axy(ii,2)); %Intra Seg dist\r\n%    d2=distP2S2Z(px,py,vx,vy,wx,wy)\r\n     px=mxy(k,1); py=mxy(k,2);\r\n     vx=mxy(j,1); vy=mxy(j,2);\r\n     wx=axy(ii,1); wy=axy(ii,2);\r\n     \r\n     dv2=Inf;\r\n     sL2=(vx-wx)^2+(vy-wy)^2;\r\n     t=( (px-vx)*(wx-vx)+(py-vy)*(wy-vy) )/sL2;\r\n     if t\u003e=0 \u0026\u0026 t\u003c=1\r\n      sx=vx+t*(wx-vx);\r\n      sy=vy+t*(wy-vy);\r\n      dv2=(px-sx)^2+(py-sy)^2;\r\n     end\r\n     \r\n    if min(dv2)\u003c=dmax\r\n     bflag=1;\r\n     break;\r\n    end\r\n   end %k\r\n   \r\n   if bflag\r\n     continue;\r\n   end\r\n   \r\n   muscr(j)=muscr(j)+1000000*am(ii,mu(j))/d2am(ii,j);\r\n  end %ii\r\n end % j  mxy(j,:)\r\n Totscr=sum(muscr);\r\n\r\n\r\n if Totscr\u003cscore\r\n  valid=0;\r\n  fprintf('Pid:%i  Score:%.0f less than required %.0f\\n\\n',i,Totscr,score);\r\n end\r\n\r\n\r\nfprintf('\\nPid:%i  Score: %.0f   Time:%0.3f\\n',i,Totscr,dt);\r\nfprintf('axy x:%3i  y:%3i\\n',axy);\r\nfprintf('mxy(1,:) x:%2i  y:%2i scr:%8.0f  Type:%1i  Affinity:%2i\\n',mxy(1,:),muscr(1),mu(1),am(1,1));\r\nfprintf('mxy(2,:) x:%2i  y:%2i scr:%8.0f  Type:%1i  Affinity:%2i\\n',mxy(2,:),muscr(2),mu(2),am(1,mu(2)));\r\n\r\n\r\n%draw_orcs(axy,mxy,swx,shy,xmin,xmax,ymin,ymax,pxyr);\r\n figptr=figptr+1;\r\n figure(figptr);\r\n plot(axy(:,1),axy(:,2),'or');hold on  % Attendees\r\n axis tight; axis equal\r\n \r\n room= [0 0;rwx 0;rwx rhy;0 rhy;0 0]; %rwx, rhy\r\n plot(room(:,1),room(:,2),'k');\r\n stage=[xmin ymin;xmax ymin;xmax ymax;xmin ymax;xmin ymin];\r\n plot(stage(:,1),stage(:,2),'color',[.8 0 .8]);\r\n %plot(mxy(:,1),mxy(:,2),'.r'); % Musicians\r\n plot(mxy(1,1),mxy(1,2),'*b');\r\n plot(mxy(2,1),mxy(2,2),'xk');\r\n hold off\r\n \r\nend % orcm\r\n\r\nfprintf('Total Time: %.3f\\n',Orctime);\r\n\r\n\r\n\r\nassert(valid)\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3097,"edited_by":3097,"edited_at":"2023-07-20T18:08:52.000Z","deleted_by":null,"deleted_at":null,"solvers_count":6,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2023-07-20T16:09:25.000Z","updated_at":"2023-07-20T18:08:54.000Z","published_at":"2023-07-20T18:08:54.000Z","restored_at":null,"restored_by":null,"spam":null,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe Template solves all cases.   Please submit the template and view the graphs.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe ICFP 2023 Competition in July was to place musicians on a stage to maximize the attendees net Joy.  The \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://drive.google.com/file/d/16GFrZMudBrNwjMi3tOaP_iiSHh5pUtXL/view?usp=sharing\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eICFP 2023 Orchestra Spec\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e shows details of the contest. The musicians played various instruments with attendees having preference values for each instrument type. Musicians could block attendees from seeing musicians behind them. Blocking occurs if a_i to m_j vector touched within 5 of m_k. No musicians allowed within 10 of one another. \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis Challenge is to place Two musicians onto the stage,mxy, to maximize Joy for one attendee,axy. Score an Attendee Joy higher than a min_score. The Joy table am is Joy co-factor for each musician type. Joy is scaled by 1/distance-squared between Musician and Attendee. Joy(j,i)=1000000*am(i,mu(j))/d2(i,j).\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe Joy here is to see the figures of optimal placement and the data per case.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe Challenge is to minimize the time, best known time of 0.28s, and/or to clean the code for size.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe scoring and blocking functions are provided in the template.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"420\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"560\\\"/\u003e\u003cw:attr w:name=\\\"verticalAlign\\\" w:val=\\\"baseline\\\"/\u003e\u003cw:attr w:name=\\\"altText\\\" w:val=\\\"\\\"/\u003e\u003cw:attr w:name=\\\"relationshipId\\\" w:val=\\\"rId1\\\"/\u003e\u003c/w:customXmlPr\u003e\u003c/w:customXml\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis figure is a case where the Attendee is Grumpy and dislikes both Musicians to different amounts.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"target\":\"/media/image1.png\",\"relationshipId\":\"rId1\"}]},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,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LhssbebMmTNmzCgqKlJKpaenL1y48MCBA8LXZbcgPQq/CNw2azxy5Mi6deuqqqqMpwdtsLTz58/v27fP2ExMTLxy5YoN1pWQkHD79u36+vr6+vpLly61t7d7PB4brEsp1dvb29TUZGwODQ05HA4bLO3xxx8fvel0Op1Op/R1mfhAxcOg6/pzzz136NChcDjc09Mze/bsa9eumT3UBDh06JDxlJ091tjX15eVldXW1jb0XyMjIzZYWk9PT2Zm5r///e9wOHzt2rX58+f/4x//sMG6RvvFL34RecrOHus6d+5cZmZm5MGzq1evzp8/v6OjwwZLGxoaeuaZZ9ra2sLh8I0bNxYsWHD06FHh67JbkMLh8NGjR+fPn//SSy9lZ2cfOHDA7HEmxugghW2xxs2bN6f9X7/97W/Dtlja+++/P2fOnDVr1syZM+ett96K7LTBugxGkMJ2Wde+ffuysrJeeumlrKysP/3pT5GdNljap59++sILLxQVFWVnZ//hD3+I7JS8Ltv+tu/PP//8G9/4xtgnAuzExmu0+tJCoZDf73/88cfvukBv9XXdjw3WFQqFBgcHx67CBkv74osvoqOjLfGtaNsgAQCsRVYeAQCPLIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARPgfBeVjYdEW0loAAAAASUVORK5CYII=\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"}],"problem_search":{"errors":[],"problems":[{"id":58773,"title":"ICFP 2023 Orchestra:  Score Optimization of 2-Musicians and 1-Attendee","description":"The Template solves all cases.   Please submit the template and view the graphs.\r\nThe ICFP 2023 Competition in July was to place musicians on a stage to maximize the attendees net Joy.  The ICFP 2023 Orchestra Spec shows details of the contest. The musicians played various instruments with attendees having preference values for each instrument type. Musicians could block attendees from seeing musicians behind them. Blocking occurs if a_i to m_j vector touched within 5 of m_k. No musicians allowed within 10 of one another. \r\nThis Challenge is to place Two musicians onto the stage,mxy, to maximize Joy for one attendee,axy. Score an Attendee Joy higher than a min_score. The Joy table am is Joy co-factor for each musician type. Joy is scaled by 1/distance-squared between Musician and Attendee. Joy(j,i)=1000000*am(i,mu(j))/d2(i,j).\r\nThe Joy here is to see the figures of optimal placement and the data per case.\r\n\r\nThe Challenge is to minimize the time, best known time of 0.28s, and/or to clean the code for size.\r\nThe scoring and blocking functions are provided in the template.\r\n\r\nThis figure is a case where the Attendee is Grumpy and dislikes both Musicians to different amounts.\r\n\r\n","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 830.5px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 415.25px; transform-origin: 407px 415.25px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 255px 8px; transform-origin: 255px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Template solves all cases.   Please submit the template and view the graphs.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 84px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 42px; text-align: left; transform-origin: 384px 42px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 346.5px 8px; transform-origin: 346.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe ICFP 2023 Competition in July was to place musicians on a stage to maximize the attendees net Joy.  The \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://drive.google.com/file/d/16GFrZMudBrNwjMi3tOaP_iiSHh5pUtXL/view?usp=sharing\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eICFP 2023 Orchestra Spec\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 334px 8px; transform-origin: 334px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e shows details of the contest. The musicians played various instruments with attendees having preference values for each instrument type. Musicians could block attendees from seeing musicians behind them. Blocking occurs if a_i to m_j vector touched within 5 of m_k. No musicians allowed within 10 of one another. \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 63px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.5px; text-align: left; transform-origin: 384px 31.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 374px 8px; transform-origin: 374px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to place Two musicians onto the stage,mxy, to maximize Joy for one attendee,axy. Score an Attendee Joy higher than a min_score. The Joy table am is Joy co-factor for each musician type. Joy is scaled by 1/distance-squared between Musician and Attendee. Joy(j,i)=1000000*am(i,mu(j))/d2(i,j).\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 246px 8px; transform-origin: 246px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Joy here is to see the figures of optimal placement and the data per case.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 8px; transform-origin: 0px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 306.5px 8px; transform-origin: 306.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Challenge is to minimize the time, best known time of 0.28s, and/or to clean the code for size.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 202.5px 8px; transform-origin: 202.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe scoring and blocking functions are provided in the template.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 425.5px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 212.75px; text-align: left; transform-origin: 384px 212.75px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline;width: 560px;height: 420px\" src=\"data:image/png;base64,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LhssbebMmTNmzCgqKlJKpaenL1y48MCBA8LXZbcgPQq/CNw2azxy5Mi6deuqqqqMpwdtsLTz58/v27fP2ExMTLxy5YoN1pWQkHD79u36+vr6+vpLly61t7d7PB4brEsp1dvb29TUZGwODQ05HA4bLO3xxx8fvel0Op1Op/R1mfhAxcOg6/pzzz136NChcDjc09Mze/bsa9eumT3UBDh06JDxlJ091tjX15eVldXW1jb0XyMjIzZYWk9PT2Zm5r///e9wOHzt2rX58+f/4x//sMG6RvvFL34RecrOHus6d+5cZmZm5MGzq1evzp8/v6OjwwZLGxoaeuaZZ9ra2sLh8I0bNxYsWHD06FHh67JbkMLh8NGjR+fPn//SSy9lZ2cfOHDA7HEmxugghW2xxs2bN6f9X7/97W/Dtlja+++/P2fOnDVr1syZM+ett96K7LTBugxGkMJ2Wde+ffuysrJeeumlrKysP/3pT5GdNljap59++sILLxQVFWVnZ//hD3+I7JS8Ltv+tu/PP//8G9/4xtgnAuzExmu0+tJCoZDf73/88cfvukBv9XXdjw3WFQqFBgcHx67CBkv74osvoqOjLfGtaNsgAQCsRVYeAQCPLIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARPgfBeVjYdEW0loAAAAASUVORK5CYII=\" data-image-state=\"image-loaded\" width=\"560\" height=\"420\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 316px 8px; transform-origin: 316px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis figure is a case where the Attendee is Grumpy and dislikes both Musicians to different amounts.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 8px; transform-origin: 0px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 8px; transform-origin: 0px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function mxy=Orc_2M1A(axy,mu,am,xmin,xmax,ymin,ymax,score,sxy)\r\n %Given 1 Attendee and 2 Musicians Optimize Score\r\n %Place Musicicans,mxy, within the bounds of the stage [xmin xmax ymin ymax] to\r\n % achieve maximum score sum for i=1:2 1000000*am(1,mu(i))/dist_squared(axy,mxy(i,:)\r\n % where mu(i) is musician type 1 or 2 and am is an Affinity matrix [1,2]\r\n %sxy(600,2) contains all the integer stage points; note:mxy is not limited to integers\r\n % Musicians must be spaced by 10 or more\r\n % A musician gets no score if the other musician is 5 or less from the musician's \r\n % line-of-sight to the attendee (a function distP2Seg is provided)\r\n \r\n %Performance approx 0.62s  Best known Time:0.28s\r\n for x1=xmin:xmax\r\n  for y1=ymin:ymax\r\n   for x2=xmin:xmax\r\n    for y2=ymin:ymax\r\n      if (y2-y1)^2+(x2-x1)^2\u003c100,continue;end\r\n      mxy=[x1 y1;x2 y2];\r\n      [Totscr,muscr]=Calc_score(mxy,mu,am,axy);\r\n      if Totscr\u003e=score\r\n       return;\r\n      end\r\n    end %y2\r\n   end %x2\r\n  end %y1\r\n end %x1\r\n \r\nend %Orc_2M1A\r\n\r\nfunction [Totscr,muscr]=Calc_score(mxy,mu,am,axy)\r\n%No error checking,volume,pillars\r\n Lmu=length(mu);\r\n na=size(axy,1);\r\n  \r\n%Calc each mu score\r\n d2am=zeros(na,Lmu);\r\n for j=1:Lmu\r\n  d2am(:,j)=sum((axy-mxy(j,:)).^2,2);\r\n end\r\n \r\n muscr=zeros(Lmu,1);\r\n dmax=25;\r\n for j=1:Lmu\r\n  for i=1:na\r\n   bflag=0;\r\n   for k=1:Lmu %search for any blockng musician \r\n    if k==j,continue;end\r\n    dv2=distP2S2Z(mxy(k,1),mxy(k,2),mxy(j,1),mxy(j,2),axy(i,1),axy(i,2)); %Intra Seg dist\r\n    if min(dv2)\u003c=dmax\r\n     bflag=1;\r\n     break;\r\n    end\r\n   end\r\n   \r\n   if bflag\r\n     continue;\r\n   end\r\n   \r\n   muscr(j)=muscr(j)+1000000*am(i,mu(j))/d2am(i,j);\r\n  end\r\n end\r\n Totscr=sum(muscr);\r\nend %Calc_score\r\n\r\nfunction d2=distP2S2Z(px,py,vx,vy,wx,wy)\r\n% Distance from segment only if intra-segment\r\n% reduce to 0\u003c=t\u003c=1\r\n%The point is (px,py) and the segment is [(vx,vy) to (wx,wy)].\r\n% [px py vx vy wx wy]\r\n\r\n d2=Inf;\r\n sL2=(vx-wx)^2+(vy-wy)^2;\r\n %if sL2==0 % Segment is a point  %Error check removed\r\n % d2=(px-vx)^2+(py-vy)^2;\r\n %else % non-point segment\r\n  t=( (px-vx)*(wx-vx)+(py-vy)*(wy-vy) )/sL2;\r\n  if t\u003c0 % Pt beyond normal of segment\r\n   return\r\n   %d2=(px-vx)^2+(py-vy)^2;\r\n  elseif t\u003e1 % Pt beyond normal of segment\r\n    return\r\n   %d2=(px-wx)^2+(py-wy)^2;\r\n  else\r\n   sx=vx+t*(wx-vx);\r\n   sy=vy+t*(wy-vy);\r\n   d2=(px-sx)^2+(py-sy)^2;\r\n  end\r\n %end\r\n %d=sqrt(d2);\r\nend %distP2S2Z\r\n","test_suite":"%%\r\nvalid=1;\r\n\r\norcm=[40 60 5 24 10 39 35 16 1 2 10 20 214053; % mid right 214054\r\n      40 60 5 24 10 39 12 1 1 2 10 20 305630;  %Bot mid 305631\r\n      50 80 25 40 10 60 5 35 1 1 20 20 93947;  %Left Mid 93948\r\n      50 80 25 40 10 60 5 35 1 2 10 -20 24999; %Left with Neg Affinity 25000\r\n      50 80 25 40 10 60 15 70 1 1 10 10 65897; %TL Diag 15 65898\r\n      500 500 1 30 1 30 450 450 1 1 10 10 55;  %56\r\n      30 40 10 18 5 25 15 35 1 2 10 10  127329; %Top Mid; narrow stage\r\n      60 40 10 50 10 30 35 35 1 2 -10 -20 -14105];  %pair Negatve -14104\r\n\r\nOrctime=0;\r\nfigptr=0;\r\n\r\nfor i=1:size(orcm,1)\r\npxyr=[];\r\n[rwx, rhy, xmin, xmax, ymin, ymax, axy, mu, am, score]= ...\r\n  deal(orcm(i,1),orcm(i,2),orcm(i,3),orcm(i,4),orcm(i,5),orcm(i,6),orcm(i,7:8),orcm(i,9:10),orcm(i,11:12),orcm(i,13));\r\n\r\n%stage=ones(xmax-xmin+1,ymax-ymin+1);\r\nstage=ones(ymax-ymin+1,xmax-xmin+1);\r\n[sy,sx]=find(stage);\r\nsxy_base=[sx sy]-1; % Make LL [0,0] Stage(x,y) points\r\n\r\nsxy=sxy_base+[xmin ymin]; % 5 10;5 11  \r\nsxy=sortrows(sxy,[1 2],{'ascend' 'descend'}); %Matlab Find TL by col to BR\r\n\r\nsxy=flipud(sortrows(sxy,1,'ascend')); %Matlab find sequence TL by col to BR\r\n\r\nif mu(1)==mu(2)\r\n am(2)=[]; %if Only one musician type then am reduced\r\nend\r\n\r\n  ztic=tic;\r\n  mxy=Orc_2M1A(axy,mu,am,xmin,xmax,ymin,ymax,score,sxy);\r\n  Orctime=Orctime+toc(ztic);\r\n  dt=toc(ztic);\r\n  \r\n%Validity Checks\r\n if sum((mxy(1,:)-mxy(2,:)).^2)\u003c100\r\n  valid=0;\r\n  fprintf('Pid:%i  Invalid Spacing of Musicians\\n\\n',i);\r\n end\r\n \r\n if min(mxy(:,1))\u003cxmin || max(mxy(:,1))\u003exmax || min(mxy(:,2))\u003cymin || max(mxy(:,2))\u003eymax\r\n  valid=0;\r\n  fprintf('Pid:%i  Invalid Positioning of Musicians off Stage\\n\\n',i);\r\n end\r\n \r\n%[Totscr,muscr]=Calc_score(mxy,mu,am,axy);\r\n Lmu=length(mu);\r\n na=size(axy,1);\r\n %Calc each mu score\r\n d2am=zeros(na,Lmu);\r\n for j=1:Lmu\r\n  d2am(:,j)=sum((axy-mxy(j,:)).^2,2);\r\n end\r\n muscr=zeros(Lmu,1);\r\n dmax=25;\r\n for j=1:Lmu\r\n  for ii=1:na\r\n   bflag=0;\r\n   \r\n   for k=1:Lmu %search for any blockng musician \r\n    if k==j,continue;end\r\n%    dv2=distP2S2Z(mxy(k,1),mxy(k,2),mxy(j,1),mxy(j,2),axy(ii,1),axy(ii,2)); %Intra Seg dist\r\n%    d2=distP2S2Z(px,py,vx,vy,wx,wy)\r\n     px=mxy(k,1); py=mxy(k,2);\r\n     vx=mxy(j,1); vy=mxy(j,2);\r\n     wx=axy(ii,1); wy=axy(ii,2);\r\n     \r\n     dv2=Inf;\r\n     sL2=(vx-wx)^2+(vy-wy)^2;\r\n     t=( (px-vx)*(wx-vx)+(py-vy)*(wy-vy) )/sL2;\r\n     if t\u003e=0 \u0026\u0026 t\u003c=1\r\n      sx=vx+t*(wx-vx);\r\n      sy=vy+t*(wy-vy);\r\n      dv2=(px-sx)^2+(py-sy)^2;\r\n     end\r\n     \r\n    if min(dv2)\u003c=dmax\r\n     bflag=1;\r\n     break;\r\n    end\r\n   end %k\r\n   \r\n   if bflag\r\n     continue;\r\n   end\r\n   \r\n   muscr(j)=muscr(j)+1000000*am(ii,mu(j))/d2am(ii,j);\r\n  end %ii\r\n end % j  mxy(j,:)\r\n Totscr=sum(muscr);\r\n\r\n\r\n if Totscr\u003cscore\r\n  valid=0;\r\n  fprintf('Pid:%i  Score:%.0f less than required %.0f\\n\\n',i,Totscr,score);\r\n end\r\n\r\n\r\nfprintf('\\nPid:%i  Score: %.0f   Time:%0.3f\\n',i,Totscr,dt);\r\nfprintf('axy x:%3i  y:%3i\\n',axy);\r\nfprintf('mxy(1,:) x:%2i  y:%2i scr:%8.0f  Type:%1i  Affinity:%2i\\n',mxy(1,:),muscr(1),mu(1),am(1,1));\r\nfprintf('mxy(2,:) x:%2i  y:%2i scr:%8.0f  Type:%1i  Affinity:%2i\\n',mxy(2,:),muscr(2),mu(2),am(1,mu(2)));\r\n\r\n\r\n%draw_orcs(axy,mxy,swx,shy,xmin,xmax,ymin,ymax,pxyr);\r\n figptr=figptr+1;\r\n figure(figptr);\r\n plot(axy(:,1),axy(:,2),'or');hold on  % Attendees\r\n axis tight; axis equal\r\n \r\n room= [0 0;rwx 0;rwx rhy;0 rhy;0 0]; %rwx, rhy\r\n plot(room(:,1),room(:,2),'k');\r\n stage=[xmin ymin;xmax ymin;xmax ymax;xmin ymax;xmin ymin];\r\n plot(stage(:,1),stage(:,2),'color',[.8 0 .8]);\r\n %plot(mxy(:,1),mxy(:,2),'.r'); % Musicians\r\n plot(mxy(1,1),mxy(1,2),'*b');\r\n plot(mxy(2,1),mxy(2,2),'xk');\r\n hold off\r\n \r\nend % orcm\r\n\r\nfprintf('Total Time: %.3f\\n',Orctime);\r\n\r\n\r\n\r\nassert(valid)\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3097,"edited_by":3097,"edited_at":"2023-07-20T18:08:52.000Z","deleted_by":null,"deleted_at":null,"solvers_count":6,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2023-07-20T16:09:25.000Z","updated_at":"2023-07-20T18:08:54.000Z","published_at":"2023-07-20T18:08:54.000Z","restored_at":null,"restored_by":null,"spam":null,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe Template solves all cases.   Please submit the template and view the graphs.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe ICFP 2023 Competition in July was to place musicians on a stage to maximize the attendees net Joy.  The \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://drive.google.com/file/d/16GFrZMudBrNwjMi3tOaP_iiSHh5pUtXL/view?usp=sharing\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eICFP 2023 Orchestra Spec\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e shows details of the contest. The musicians played various instruments with attendees having preference values for each instrument type. Musicians could block attendees from seeing musicians behind them. Blocking occurs if a_i to m_j vector touched within 5 of m_k. No musicians allowed within 10 of one another. \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis Challenge is to place Two musicians onto the stage,mxy, to maximize Joy for one attendee,axy. Score an Attendee Joy higher than a min_score. The Joy table am is Joy co-factor for each musician type. Joy is scaled by 1/distance-squared between Musician and Attendee. Joy(j,i)=1000000*am(i,mu(j))/d2(i,j).\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe Joy here is to see the figures of optimal placement and the data per case.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe Challenge is to minimize the time, best known time of 0.28s, and/or to clean the code for size.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe scoring and blocking functions are provided in the template.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"420\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"560\\\"/\u003e\u003cw:attr w:name=\\\"verticalAlign\\\" w:val=\\\"baseline\\\"/\u003e\u003cw:attr w:name=\\\"altText\\\" w:val=\\\"\\\"/\u003e\u003cw:attr w:name=\\\"relationshipId\\\" w:val=\\\"rId1\\\"/\u003e\u003c/w:customXmlPr\u003e\u003c/w:customXml\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis figure is a case where the Attendee is Grumpy and dislikes both Musicians to different amounts.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"target\":\"/media/image1.png\",\"relationshipId\":\"rId1\"}]},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,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LhssbebMmTNmzCgqKlJKpaenL1y48MCBA8LXZbcgPQq/CNw2azxy5Mi6deuqqqqMpwdtsLTz58/v27fP2ExMTLxy5YoN1pWQkHD79u36+vr6+vpLly61t7d7PB4brEsp1dvb29TUZGwODQ05HA4bLO3xxx8fvel0Op1Op/R1mfhAxcOg6/pzzz136NChcDjc09Mze/bsa9eumT3UBDh06JDxlJ091tjX15eVldXW1jb0XyMjIzZYWk9PT2Zm5r///e9wOHzt2rX58+f/4x//sMG6RvvFL34RecrOHus6d+5cZmZm5MGzq1evzp8/v6OjwwZLGxoaeuaZZ9ra2sLh8I0bNxYsWHD06FHh67JbkMLh8NGjR+fPn//SSy9lZ2cfOHDA7HEmxugghW2xxs2bN6f9X7/97W/Dtlja+++/P2fOnDVr1syZM+ett96K7LTBugxGkMJ2Wde+ffuysrJeeumlrKysP/3pT5GdNljap59++sILLxQVFWVnZ//hD3+I7JS8Ltv+tu/PP//8G9/4xtgnAuzExmu0+tJCoZDf73/88cfvukBv9XXdjw3WFQqFBgcHx67CBkv74osvoqOjLfGtaNsgAQCsRVYeAQCPLIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARCBIAAARCBIAQASCBAAQgSABAEQgSAAAEQgSAEAEggQAEIEgAQBEIEgAABEIEgBABIIEABCBIAEARPgfBeVjYdEW0loAAAAASUVORK5CYII=\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"}],"term":"tag:\"figures\"","current_player_id":null,"fields":[{"name":"page","type":"integer","callback":null,"default":1,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"per_page","type":"integer","callback":null,"default":50,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"sort","type":"string","callback":null,"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"body","type":"text","callback":null,"default":"*:*","directive":null,"facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":false},{"name":"group","type":"string","callback":null,"default":null,"directive":"group","facet":true,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"difficulty_rating_bin","type":"string","callback":null,"default":null,"directive":"difficulty_rating_bin","facet":true,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"id","type":"integer","callback":null,"default":null,"directive":"id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"tag","type":"string","callback":null,"default":null,"directive":"tag","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"product","type":"string","callback":null,"default":null,"directive":"product","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"created_at","type":"timeframe","callback":{},"default":null,"directive":"created_at","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"profile_id","type":"integer","callback":null,"default":null,"directive":"author_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"created_by","type":"string","callback":null,"default":null,"directive":"author","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"player_id","type":"integer","callback":null,"default":null,"directive":"solver_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"player","type":"string","callback":null,"default":null,"directive":"solver","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"solvers_count","type":"integer","callback":null,"default":null,"directive":"solvers_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"comments_count","type":"integer","callback":null,"default":null,"directive":"comments_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"likes_count","type":"integer","callback":null,"default":null,"directive":"likes_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"leader_id","type":"integer","callback":null,"default":null,"directive":"leader_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"leading_solution","type":"integer","callback":null,"default":null,"directive":"leading_solution","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true}],"filters":[{"name":"asset_type","type":"string","callback":null,"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":"\"cody:problem\"","prepend":true},{"name":"profile_id","type":"integer","callback":{},"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":"author_id","static":null,"prepend":true}],"query":{"params":{"per_page":50,"term":"tag:\"figures\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"figures\"","","\"","figures","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007fdb970edb78\u003e":null,"#\u003cMathWorks::Search::Field:0x00007fdb970ed998\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007fdb970ed0d8\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007fdb970eddf8\u003e":1,"#\u003cMathWorks::Search::Field:0x00007fdb970edd58\u003e":50,"#\u003cMathWorks::Search::Field:0x00007fdb970edcb8\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007fdb970edc18\u003e":"tag:\"figures\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007fdb970edc18\u003e":"tag:\"figures\""},"queried_facets":{}},"query_backend":{"connection":{"configuration":{"index_url":"http://index-op-v2/solr/","query_url":"http://search-op-v2/solr/","direct_access_index_urls":["http://index-op-v2/solr/"],"direct_access_query_urls":["http://search-op-v2/solr/"],"timeout":10,"vhost":"search","exchange":"search.topic","heartbeat":30,"pre_index_mode":false,"host":"rabbitmq-eks","port":5672,"username":"cody-search","password":"78X075ddcV44","virtual_host":"search","indexer":"amqp","http_logging":"true","core":"cody"},"query_connection":{"uri":"http://search-op-v2/solr/cody/","proxy":null,"connection":{"parallel_manager":null,"headers":{"User-Agent":"Faraday v1.0.1"},"params":{},"options":{"params_encoder":"Faraday::FlatParamsEncoder","proxy":null,"bind":null,"timeout":null,"open_timeout":null,"read_timeout":null,"write_timeout":null,"boundary":null,"oauth":null,"context":null,"on_data":null},"ssl":{"verify":true,"ca_file":null,"ca_path":null,"verify_mode":null,"cert_store":null,"client_cert":null,"client_key":null,"certificate":null,"private_key":null,"verify_depth":null,"version":null,"min_version":null,"max_version":null},"default_parallel_manager":null,"builder":{"adapter":{"name":"Faraday::Adapter::NetHttp","args":[],"block":null},"handlers":[{"name":"Faraday::Response::RaiseError","args":[],"block":null}],"app":{"app":{"ssl_cert_store":{"verify_callback":null,"error":null,"error_string":null,"chain":null,"time":null},"app":{},"connection_options":{},"config_block":null}}},"url_prefix":"http://search-op-v2/solr/cody/","manual_proxy":false,"proxy":null},"update_format":"RSolr::JSON::Generator","update_path":"update","options":{"url":"http://search-op-v2/solr/cody"}}},"query":{"params":{"per_page":50,"term":"tag:\"figures\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"figures\"","","\"","figures","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007fdb970edb78\u003e":null,"#\u003cMathWorks::Search::Field:0x00007fdb970ed998\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007fdb970ed0d8\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007fdb970eddf8\u003e":1,"#\u003cMathWorks::Search::Field:0x00007fdb970edd58\u003e":50,"#\u003cMathWorks::Search::Field:0x00007fdb970edcb8\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007fdb970edc18\u003e":"tag:\"figures\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007fdb970edc18\u003e":"tag:\"figures\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":58773,"difficulty_rating":"easy-medium"}]}}