{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2025-12-14T01:33:56.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":"2025-12-14T00: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":44817,"title":"Wrecked Angles?","description":"It's time for some simple geometry fun to start off the new year.\r\n\r\nYou will be given the perimeter P and the area A of a rectangle.  With these two values, calculate the area of the circle that circumscribes this rectangle.  This means we're looking for the area of the circle that touches this rectangle only at the four vertices of the rectangle.\r\n\r\nGood luck, and Happy 2019!","description_html":"\u003cp\u003eIt's time for some simple geometry fun to start off the new year.\u003c/p\u003e\u003cp\u003eYou will be given the perimeter P and the area A of a rectangle.  With these two values, calculate the area of the circle that circumscribes this rectangle.  This means we're looking for the area of the circle that touches this rectangle only at the four vertices of the rectangle.\u003c/p\u003e\u003cp\u003eGood luck, and Happy 2019!\u003c/p\u003e","function_template":"function y = wrecked_angles(P,A)\r\n  y = x;\r\nend","test_suite":"%%\r\nP=14;\r\nA=12;\r\ny=wrecked_angles(P,A);\r\ny_correct = 20.63495408493621;\r\njunk=abs(y-y_correct);\r\nassert(junk-1\u003c1e-10);\r\n%%\r\nP=34;\r\nA=60;\r\ny=wrecked_angles(P,A);\r\ny_correct = 131.7322896141688;\r\njunk=abs(y-y_correct);\r\nassert(junk-1\u003c1e-10);\r\n%%\r\nP=62;\r\nA=168;\r\ny=wrecked_angles(P,A);\r\ny_correct = 590.8738521234052;\r\njunk=abs(y-y_correct);\r\nassert(junk-100\u003c1e-10);\r\n%%\r\ns1=100;\r\ntotalsum=zeros(1,s1);\r\nfor s2=1:s1\r\n    P=2*(s1+s2);\r\n    A=s1*s2;\r\n    totalsum(s2)=wrecked_angles(P,A);\r\nend\r\ns=sum(totalsum);\r\ns_correct=1051137.631982975;\r\ns_junk=abs(s-s_correct);\r\nassert(s_junk\u003c1e-8);\r\n\r\nd=max(totalsum)-min(totalsum);\r\nd_correct=7853.196235811095;\r\nd_junk=abs(d-d_correct);\r\nassert(d_junk\u003c1e-8);\r\n%%\r\ns1=wrecked_angles(32,64);\r\ns2=wrecked_angles(72,288);\r\nP=2*(s1+s2);\r\nA=s1*s2;\r\ny=wrecked_angles(P,A);\r\ny_correct=259088.4479405854;\r\njunk=abs(y-y_correct);\r\nassert(junk\u003c1e-10);","published":true,"deleted":false,"likes_count":0,"comments_count":5,"created_by":1615,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":21,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":72,"created_at":"2019-01-03T14:27:57.000Z","updated_at":"2026-01-21T13:24:31.000Z","published_at":"2019-01-03T14:27:57.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIt's time for some simple geometry fun to start off the new year.\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\u003eYou will be given the perimeter P and the area A of a rectangle. With these two values, calculate the area of the circle that circumscribes this rectangle. This means we're looking for the area of the circle that touches this rectangle only at the four vertices of the rectangle.\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\u003eGood luck, and Happy 2019!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":2671,"title":"Check if vertices form a rectangle","description":"Given a set of 4 vertices defined by vectors X and Y, return true if the vertices form a rectangle and false otherwise.\r\nX and Y are not necessarily in sorted order, but you may assume that X(i) is paired with Y(i).\r\nAlso, if computing distances in your solution (e.g. with pdist), it is recommended that you round to three decimal places.","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: 81px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 40.5px; transform-origin: 407px 40.5px; 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: 362px 8px; transform-origin: 362px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eGiven a set of 4 vertices defined by vectors X and Y, return true if the vertices form a rectangle and false otherwise.\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: 288px 8px; transform-origin: 288px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eX and Y are not necessarily in sorted order, but you may assume that X(i) is paired with Y(i).\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: 374px 8px; transform-origin: 374px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eAlso, if computing distances in your solution (e.g. with pdist), it is recommended that you round to three decimal places.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function tf = isrectangle(X,Y)\r\n  tf = true;\r\nend","test_suite":"%% Random integer vertices\r\nrng default\r\nfor ii=1:100\r\n    X = randi([-1000,1000],4,1);\r\n    Y = randi([-1000,1000],4,1);\r\n    tf = isrectangle(X,Y);\r\n    assert(~tf) %all of these should not be valid rectangles\r\nend\r\n\r\n%% Random real-valued vertices\r\nrng default\r\nfor ii=1:100\r\n    X = -1000+2000*rand(4,1);\r\n    Y = -1000+2000*rand(4,1);\r\n    tf = isrectangle(X,Y);\r\n    assert(~tf) %all of these should not be valid rectangles\r\nend\r\n\r\n%% Axis-aligned rectangles with integer vertices\r\nrng default\r\nfor ii=1:100\r\n    X = randi([-1000,1000],2,1); X = [X;X];\r\n    Y = randi([-1000,1000],2,1); Y = [Y;flipud(Y)];\r\n    randorder = randperm(4);\r\n    X = X(randorder);\r\n    Y = Y(randorder);\r\n    tic; tf = isrectangle(X,Y);\r\n    assert(tf) %all of these should be valid rectangles\r\nend\r\n\r\n%% Axis-aligned rectangles with real-valued vertices\r\nrng default\r\nfor ii=1:100\r\n    X = -1000+2000*rand(2,1); X = [X;X];\r\n    Y = -1000+2000*rand(2,1); Y = [Y;flipud(Y)];\r\n    randorder = randperm(4);\r\n    X = X(randorder);\r\n    Y = Y(randorder);\r\n    tf = isrectangle(X,Y);\r\n    assert(tf) %all of these should be valid rectangles\r\nend\r\n\r\n%% General rectangles\r\nrng default\r\nfor ii=1:100\r\n    X = randi([-1000,1000],2,1); X = [X;X];\r\n    Y = randi([-1000,1000],2,1); Y = [Y;flipud(Y)];\r\n    randorder = randperm(4);\r\n    X = X(randorder);\r\n    Y = Y(randorder);\r\n    \r\n    theta = randi(360);\r\n    T1 = [1 0 -mean(X); 0 1 -mean(Y); 0 0 1];\r\n    R = [cosd(theta) -sind(theta) 0; sind(theta) cosd(theta) 0; 0 0 1];\r\n    T2 = [1 0 mean(X); 0 1 mean(Y); 0 0 1];\r\n    P = [X(:),Y(:),ones(size(X(:)))];\r\n    Q = T2*R*T1*P'; %rotate the points\r\n    X = Q(1,:)';\r\n    Y = Q(2,:)';\r\n    \r\n    tf = isrectangle(X,Y);\r\n    assert(tf) %all of these should be valid rectangles\r\nend\r\n\r\n%% Parallelograms that are not rectangles\r\nrng default\r\nfor ii=1:100\r\n    X = -1000+2000*rand(2,1);\r\n    dx = -100+200*rand;\r\n    dy = -100+200*rand;\r\n    X = [X;X+dx];\r\n    Y = [0;0;dy;dy];\r\n    randorder = randperm(4);\r\n    X = X(randorder);\r\n    Y = Y(randorder);\r\n    tf = isrectangle(X,Y);\r\n    assert(~tf) %all of these should not be valid rectangles\r\nend\r\n\r\n%% Vertices with 3 or fewer distinct distances that are not rectangles\r\nX = [-1 -0.5 0.5 1];\r\nY = [0 sqrt(3)/2 sqrt(3)/2 0];\r\ntf = isrectangle(X,Y);\r\nassert(~tf) %trapezoid\r\n\r\n%%\r\nX = [0 10 0 5];\r\nY = [0 0 0 5];\r\ntf = isrectangle(X,Y);\r\nassert(~tf) %triangle with doubled vertex","published":true,"deleted":false,"likes_count":2,"comments_count":6,"created_by":4793,"edited_by":223089,"edited_at":"2022-07-04T19:04:09.000Z","deleted_by":null,"deleted_at":null,"solvers_count":20,"test_suite_updated_at":"2022-07-04T19:04:09.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2014-11-13T18:34:32.000Z","updated_at":"2026-01-22T14:44:50.000Z","published_at":"2014-11-13T18:53:57.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\u003eGiven a set of 4 vertices defined by vectors X and Y, return true if the vertices form a rectangle and false otherwise.\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\u003eX and Y are not necessarily in sorted order, but you may assume that X(i) is paired with Y(i).\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\u003eAlso, if computing distances in your solution (e.g. with pdist), it is recommended that you round to three decimal places.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"}],"problem_search":{"errors":[],"problems":[{"id":44817,"title":"Wrecked Angles?","description":"It's time for some simple geometry fun to start off the new year.\r\n\r\nYou will be given the perimeter P and the area A of a rectangle.  With these two values, calculate the area of the circle that circumscribes this rectangle.  This means we're looking for the area of the circle that touches this rectangle only at the four vertices of the rectangle.\r\n\r\nGood luck, and Happy 2019!","description_html":"\u003cp\u003eIt's time for some simple geometry fun to start off the new year.\u003c/p\u003e\u003cp\u003eYou will be given the perimeter P and the area A of a rectangle.  With these two values, calculate the area of the circle that circumscribes this rectangle.  This means we're looking for the area of the circle that touches this rectangle only at the four vertices of the rectangle.\u003c/p\u003e\u003cp\u003eGood luck, and Happy 2019!\u003c/p\u003e","function_template":"function y = wrecked_angles(P,A)\r\n  y = x;\r\nend","test_suite":"%%\r\nP=14;\r\nA=12;\r\ny=wrecked_angles(P,A);\r\ny_correct = 20.63495408493621;\r\njunk=abs(y-y_correct);\r\nassert(junk-1\u003c1e-10);\r\n%%\r\nP=34;\r\nA=60;\r\ny=wrecked_angles(P,A);\r\ny_correct = 131.7322896141688;\r\njunk=abs(y-y_correct);\r\nassert(junk-1\u003c1e-10);\r\n%%\r\nP=62;\r\nA=168;\r\ny=wrecked_angles(P,A);\r\ny_correct = 590.8738521234052;\r\njunk=abs(y-y_correct);\r\nassert(junk-100\u003c1e-10);\r\n%%\r\ns1=100;\r\ntotalsum=zeros(1,s1);\r\nfor s2=1:s1\r\n    P=2*(s1+s2);\r\n    A=s1*s2;\r\n    totalsum(s2)=wrecked_angles(P,A);\r\nend\r\ns=sum(totalsum);\r\ns_correct=1051137.631982975;\r\ns_junk=abs(s-s_correct);\r\nassert(s_junk\u003c1e-8);\r\n\r\nd=max(totalsum)-min(totalsum);\r\nd_correct=7853.196235811095;\r\nd_junk=abs(d-d_correct);\r\nassert(d_junk\u003c1e-8);\r\n%%\r\ns1=wrecked_angles(32,64);\r\ns2=wrecked_angles(72,288);\r\nP=2*(s1+s2);\r\nA=s1*s2;\r\ny=wrecked_angles(P,A);\r\ny_correct=259088.4479405854;\r\njunk=abs(y-y_correct);\r\nassert(junk\u003c1e-10);","published":true,"deleted":false,"likes_count":0,"comments_count":5,"created_by":1615,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":21,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":72,"created_at":"2019-01-03T14:27:57.000Z","updated_at":"2026-01-21T13:24:31.000Z","published_at":"2019-01-03T14:27:57.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIt's time for some simple geometry fun to start off the new year.\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\u003eYou will be given the perimeter P and the area A of a rectangle. With these two values, calculate the area of the circle that circumscribes this rectangle. This means we're looking for the area of the circle that touches this rectangle only at the four vertices of the rectangle.\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\u003eGood luck, and Happy 2019!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":2671,"title":"Check if vertices form a rectangle","description":"Given a set of 4 vertices defined by vectors X and Y, return true if the vertices form a rectangle and false otherwise.\r\nX and Y are not necessarily in sorted order, but you may assume that X(i) is paired with Y(i).\r\nAlso, if computing distances in your solution (e.g. with pdist), it is recommended that you round to three decimal places.","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: 81px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 40.5px; transform-origin: 407px 40.5px; 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: 362px 8px; transform-origin: 362px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eGiven a set of 4 vertices defined by vectors X and Y, return true if the vertices form a rectangle and false otherwise.\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: 288px 8px; transform-origin: 288px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eX and Y are not necessarily in sorted order, but you may assume that X(i) is paired with Y(i).\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: 374px 8px; transform-origin: 374px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eAlso, if computing distances in your solution (e.g. with pdist), it is recommended that you round to three decimal places.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function tf = isrectangle(X,Y)\r\n  tf = true;\r\nend","test_suite":"%% Random integer vertices\r\nrng default\r\nfor ii=1:100\r\n    X = randi([-1000,1000],4,1);\r\n    Y = randi([-1000,1000],4,1);\r\n    tf = isrectangle(X,Y);\r\n    assert(~tf) %all of these should not be valid rectangles\r\nend\r\n\r\n%% Random real-valued vertices\r\nrng default\r\nfor ii=1:100\r\n    X = -1000+2000*rand(4,1);\r\n    Y = -1000+2000*rand(4,1);\r\n    tf = isrectangle(X,Y);\r\n    assert(~tf) %all of these should not be valid rectangles\r\nend\r\n\r\n%% Axis-aligned rectangles with integer vertices\r\nrng default\r\nfor ii=1:100\r\n    X = randi([-1000,1000],2,1); X = [X;X];\r\n    Y = randi([-1000,1000],2,1); Y = [Y;flipud(Y)];\r\n    randorder = randperm(4);\r\n    X = X(randorder);\r\n    Y = Y(randorder);\r\n    tic; tf = isrectangle(X,Y);\r\n    assert(tf) %all of these should be valid rectangles\r\nend\r\n\r\n%% Axis-aligned rectangles with real-valued vertices\r\nrng default\r\nfor ii=1:100\r\n    X = -1000+2000*rand(2,1); X = [X;X];\r\n    Y = -1000+2000*rand(2,1); Y = [Y;flipud(Y)];\r\n    randorder = randperm(4);\r\n    X = X(randorder);\r\n    Y = Y(randorder);\r\n    tf = isrectangle(X,Y);\r\n    assert(tf) %all of these should be valid rectangles\r\nend\r\n\r\n%% General rectangles\r\nrng default\r\nfor ii=1:100\r\n    X = randi([-1000,1000],2,1); X = [X;X];\r\n    Y = randi([-1000,1000],2,1); Y = [Y;flipud(Y)];\r\n    randorder = randperm(4);\r\n    X = X(randorder);\r\n    Y = Y(randorder);\r\n    \r\n    theta = randi(360);\r\n    T1 = [1 0 -mean(X); 0 1 -mean(Y); 0 0 1];\r\n    R = [cosd(theta) -sind(theta) 0; sind(theta) cosd(theta) 0; 0 0 1];\r\n    T2 = [1 0 mean(X); 0 1 mean(Y); 0 0 1];\r\n    P = [X(:),Y(:),ones(size(X(:)))];\r\n    Q = T2*R*T1*P'; %rotate the points\r\n    X = Q(1,:)';\r\n    Y = Q(2,:)';\r\n    \r\n    tf = isrectangle(X,Y);\r\n    assert(tf) %all of these should be valid rectangles\r\nend\r\n\r\n%% Parallelograms that are not rectangles\r\nrng default\r\nfor ii=1:100\r\n    X = -1000+2000*rand(2,1);\r\n    dx = -100+200*rand;\r\n    dy = -100+200*rand;\r\n    X = [X;X+dx];\r\n    Y = [0;0;dy;dy];\r\n    randorder = randperm(4);\r\n    X = X(randorder);\r\n    Y = Y(randorder);\r\n    tf = isrectangle(X,Y);\r\n    assert(~tf) %all of these should not be valid rectangles\r\nend\r\n\r\n%% Vertices with 3 or fewer distinct distances that are not rectangles\r\nX = [-1 -0.5 0.5 1];\r\nY = [0 sqrt(3)/2 sqrt(3)/2 0];\r\ntf = isrectangle(X,Y);\r\nassert(~tf) %trapezoid\r\n\r\n%%\r\nX = [0 10 0 5];\r\nY = [0 0 0 5];\r\ntf = isrectangle(X,Y);\r\nassert(~tf) %triangle with doubled vertex","published":true,"deleted":false,"likes_count":2,"comments_count":6,"created_by":4793,"edited_by":223089,"edited_at":"2022-07-04T19:04:09.000Z","deleted_by":null,"deleted_at":null,"solvers_count":20,"test_suite_updated_at":"2022-07-04T19:04:09.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2014-11-13T18:34:32.000Z","updated_at":"2026-01-22T14:44:50.000Z","published_at":"2014-11-13T18:53:57.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\u003eGiven a set of 4 vertices defined by vectors X and Y, return true if the vertices form a rectangle and false otherwise.\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\u003eX and Y are not necessarily in sorted order, but you may assume that X(i) is paired with Y(i).\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\u003eAlso, if computing distances in your solution (e.g. with pdist), it is recommended that you round to three decimal places.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"}],"term":"tag:\"rectangles\"","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:\"rectangles\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"rectangles\"","","\"","rectangles","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f4f44556a50\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f4f445569b0\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f4f445560f0\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f4f44556cd0\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f4f44556c30\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f4f44556b90\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f4f44556af0\u003e":"tag:\"rectangles\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f4f44556af0\u003e":"tag:\"rectangles\""},"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":"search","password":"J3bGPZzQ7asjJcCk","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:\"rectangles\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"rectangles\"","","\"","rectangles","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f4f44556a50\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f4f445569b0\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f4f445560f0\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f4f44556cd0\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f4f44556c30\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f4f44556b90\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f4f44556af0\u003e":"tag:\"rectangles\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f4f44556af0\u003e":"tag:\"rectangles\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":44817,"difficulty_rating":"easy-medium"},{"id":2671,"difficulty_rating":"easy-medium"}]}}