{"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":43029,"title":"Area of polygon","description":"Given the vertices in vectors X,Y, return the area of the polygon they define.","description_html":"\u003cp\u003eGiven the vertices in vectors X,Y, return the area of the polygon they define.\u003c/p\u003e","function_template":"function A = polygon_area(x,y)\r\n  A = x+y;\r\nend","test_suite":"%%\r\nL=linspace(0,2.*pi,9);\r\nx = 1.2*cos(L)';\r\ny = 1.2*sin(L)';\r\na_correct = 4.072935;\r\nassert( abs(polygon_area(x,y)-a_correct) \u003c 1e-04 )\r\n%%\r\nx = (1:10)';\r\ny = [0,ones(1,9)]';\r\na_correct = 4;\r\nassert( isequal(polygon_area(x,y),a_correct) )\r\n%%\r\nx=[0,5,3]';\r\ny=[0,0,9]';\r\na_correct = 22.5;\r\nassert( abs(polygon_area(x,y)-a_correct) \u003c 1e-04 )\r\n%%\r\nx=[0,5,3,11]';\r\ny=[0,0,9,126]';\r\na_correct = 162;\r\nassert( isequal(polygon_area(x,y),a_correct) )","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":85738,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":45,"test_suite_updated_at":"2016-10-05T06:02:53.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2016-10-05T05:00:48.000Z","updated_at":"2025-10-28T03:21:32.000Z","published_at":"2016-10-05T06:02:53.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\u003eGiven the vertices in vectors X,Y, return the area of the polygon they define.\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":43023,"title":"Remove collinear points in a set of 2D points defining a polygon","description":"Consider a polygon that is obtained by joining a set of 2D points whose coordinates are stored in matrix P=[x,y]. Write a function that returns Q, reduced P, such that all collinear points are removed but the same polygon is obtained.\r\n\r\n","description_html":"\u003cp\u003eConsider a polygon that is obtained by joining a set of 2D points whose coordinates are stored in matrix P=[x,y]. Write a function that returns Q, reduced P, such that all collinear points are removed but the same polygon is obtained.\u003c/p\u003e","function_template":"function Q = polygon_red(P)\r\na=P(:,1)';\r\nb=P(:,2)';\r\nQ=[a,b];\r\nend","test_suite":"%%\r\nx=[2,3,4,5,6,6,6,5,4,3,2,1,0,0,1];\r\ny=[0,0,0,0,1,2,3,3,4,4,3,3,3,2,1];\r\nP=[x;y]';\r\na = [2,5,6,6,5,4,3,2,0,0];\r\nb = [0,0,1,3,3,4,4,3,3,2];\r\nQ=[a;b]';\r\nassert(isequal(polygon_red(P),Q))\r\n%%\r\nx=[3,6,6,5,4,1,0,0,0,1];\r\ny=[0,2,3,3,4,4,3,1,0,0];\r\nP=[x;y]';\r\na = [3,6,6,5,4,1,0,0];\r\nb = [0,2,3,3,4,4,3,0];\r\nQ=[a;b]';\r\nassert(isequal(polygon_red(P),Q))\r\n\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":85738,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":18,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2016-10-04T17:55:26.000Z","updated_at":"2026-02-09T15:09:14.000Z","published_at":"2016-10-04T17:55:26.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\u003eConsider a polygon that is obtained by joining a set of 2D points whose coordinates are stored in matrix P=[x,y]. Write a function that returns Q, reduced P, such that all collinear points are removed but the same polygon is obtained.\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":820,"title":"Eliminate unnecessary polygon vertices","description":"Suppose you have an n-point polygon represented as an n-by-2 matrix of polygon vertices, P. Assume that the polygon is closed; that is, assume that P(end,:) is the same as P(1,:).\r\n\r\nRemove as many vertices as possible from P to make a second polygon, P2, that has exactly the same shape as P. P2 must also be closed. Your vertices in P2 should be in the same direction as P. That is, if the vertices in P are in clockwise order, then the vertices in P2 should also be in clockwise order.\r\n\r\nIf the first vertex in P is retained in the solution, it should be the first vertex in P2. If the first vertex in P needs to remove, then the first vertex in P2 should be the next retained vertex in P.\r\n\r\nYou can test your solution graphically as follows:\r\n\r\n  plot(P(:,1), P(:,2), 'r', 'LineWidth', 5);\r\n  hold on\r\n  plot(P2(:,1), P2(:,2), 'b');\r\n  hold off\r\n\r\nThe two plotted shapes should overlap exactly.\r\n\r\n*EXAMPLE*\r\n\r\n  P = [1 1\r\n       2 1\r\n       3 1\r\n       4 1\r\n       4 2\r\n       4 3\r\n       3 3\r\n       2 3\r\n       1 3\r\n       1 2\r\n       1 1];\r\n  \r\n  P2 = [1 1\r\n        4 1\r\n        4 3\r\n        1 3\r\n        1 1];\r\n\r\nThis problem is related to my \u003chttp://blogs.mathworks.com/steve/2012/07/09/a-cody-problem-simplify-a-polygon/ ‎09-Jul-2012 blog post\u003e on MATLAB Central.","description_html":"\u003cp\u003eSuppose you have an n-point polygon represented as an n-by-2 matrix of polygon vertices, P. Assume that the polygon is closed; that is, assume that P(end,:) is the same as P(1,:).\u003c/p\u003e\u003cp\u003eRemove as many vertices as possible from P to make a second polygon, P2, that has exactly the same shape as P. P2 must also be closed. Your vertices in P2 should be in the same direction as P. That is, if the vertices in P are in clockwise order, then the vertices in P2 should also be in clockwise order.\u003c/p\u003e\u003cp\u003eIf the first vertex in P is retained in the solution, it should be the first vertex in P2. If the first vertex in P needs to remove, then the first vertex in P2 should be the next retained vertex in P.\u003c/p\u003e\u003cp\u003eYou can test your solution graphically as follows:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eplot(P(:,1), P(:,2), 'r', 'LineWidth', 5);\r\nhold on\r\nplot(P2(:,1), P2(:,2), 'b');\r\nhold off\r\n\u003c/pre\u003e\u003cp\u003eThe two plotted shapes should overlap exactly.\u003c/p\u003e\u003cp\u003e\u003cb\u003eEXAMPLE\u003c/b\u003e\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eP = [1 1\r\n     2 1\r\n     3 1\r\n     4 1\r\n     4 2\r\n     4 3\r\n     3 3\r\n     2 3\r\n     1 3\r\n     1 2\r\n     1 1];\r\n\u003c/pre\u003e\u003cpre class=\"language-matlab\"\u003eP2 = [1 1\r\n      4 1\r\n      4 3\r\n      1 3\r\n      1 1];\r\n\u003c/pre\u003e\u003cp\u003eThis problem is related to my \u003ca href=\"http://blogs.mathworks.com/steve/2012/07/09/a-cody-problem-simplify-a-polygon/\"\u003e‎09-Jul-2012 blog post\u003c/a\u003e on MATLAB Central.\u003c/p\u003e","function_template":"function Ps = simplify_polygon(P)\r\n  Ps = P;\r\nend","test_suite":"%% Edge case: no vertices\r\nP = zeros(0,2);\r\nP2 = zeros(0,2);\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Edge case: one vertex\r\nP = [1 1];\r\nP2 = [1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Edge case: three vertices (a single line segment)\r\nP = [...\r\n    1 1\r\n    1 2\r\n    1 1 ];\r\nP2 = [...\r\n    1 1\r\n    1 2\r\n    1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Single line segment with multiple vertices\r\nP = [ ...\r\n    1 1\r\n    2 1\r\n    3 1\r\n    4 1\r\n    5 1\r\n    4 1\r\n    3 1\r\n    2 1\r\n    1 1];\r\nP2 = [ ...\r\n    1 1\r\n    5 1\r\n    1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Single line segment, different spacing\r\nP = [ ...\r\n    1 1\r\n    2 1\r\n    4 1\r\n    5 1\r\n    1 1];\r\nP2 = [ ...\r\n    1 1\r\n    5 1\r\n    1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Rectangle\r\nP = [ ...\r\n    1 1\r\n    2 1\r\n    3 1\r\n    4 1\r\n    4 2\r\n    4 3\r\n    3 3\r\n    2 3\r\n    1 3\r\n    1 2\r\n    1 1];\r\nP2 = [ ...\r\n    1 1\r\n    4 1\r\n    4 3\r\n    1 3\r\n    1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Two rectangles separated by line segment\r\nP = [ ...\r\n    1 2\r\n    1 1\r\n    2 1\r\n    2 2\r\n    1 2\r\n    1 3\r\n    1 4\r\n    1 5\r\n    2 5\r\n    2 4\r\n    1 4\r\n    1 3\r\n    1 2];\r\nP2 = [ ...\r\n    1 1\r\n    2 1\r\n    2 2\r\n    1 2\r\n    1 5\r\n    2 5\r\n    2 4\r\n    1 4\r\n    1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Nonsimple polygon (figure eight)\r\nP = [ ...\r\n    1 1\r\n    2 2\r\n    3 3\r\n    1 3\r\n    2 2\r\n    3 1\r\n    1 1];\r\nP2 = [ ...\r\n    1 1\r\n    3 3\r\n    1 3\r\n    3 1\r\n    1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%%\r\nP = [ ...\r\n    1 1\r\n    2 2\r\n    3 3\r\n    4 4\r\n    5 5\r\n    5 4\r\n    6 3\r\n    8 1\r\n    7 1\r\n    1 1];\r\nP2 = [ ...\r\n    1 1\r\n    5 5\r\n    5 4\r\n    8 1\r\n    1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n    \r\n%% Circle; no points should be removed\r\ntheta = linspace(0,2*pi,200);\r\ntheta(end) = 0;\r\nx = 20*cos(theta);\r\ny = 20*sin(theta);\r\nP = [x', y'];\r\nP2 = P;\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Starting vertex can be removed\r\nP = [ ...\r\n    2 1\r\n    3 1\r\n    3 2\r\n    3 3\r\n    2 3\r\n    1 3\r\n    1 2\r\n    1 1\r\n    2 1];\r\nP2 = [ ...\r\n    3 1\r\n    3 3\r\n    1 3\r\n    1 1\r\n    3 1];\r\nassert(isequal(simplify_polygon(P), P2));","published":true,"deleted":false,"likes_count":3,"comments_count":10,"created_by":4303371,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":25,"test_suite_updated_at":"2012-07-10T06:51:30.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-07-09T18:55:10.000Z","updated_at":"2026-01-02T13:53:30.000Z","published_at":"2012-07-09T20:02:09.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\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"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\\n\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\u003eSuppose you have an n-point polygon represented as an n-by-2 matrix of polygon vertices, P. Assume that the polygon is closed; that is, assume that P(end,:) is the same as P(1,:).\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eRemove as many vertices as possible from P to make a second polygon, P2, that has exactly the same shape as P. P2 must also be closed. Your vertices in P2 should be in the same direction as P. That is, if the vertices in P are in clockwise order, then the vertices in P2 should also be in clockwise order.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIf the first vertex in P is retained in the solution, it should be the first vertex in P2. If the first vertex in P needs to remove, then the first vertex in P2 should be the next retained vertex in P.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou can test your solution graphically as follows:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[plot(P(:,1), P(:,2), 'r', 'LineWidth', 5);\\nhold on\\nplot(P2(:,1), P2(:,2), 'b');\\nhold off]]\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe two plotted shapes should overlap exactly.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eEXAMPLE\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[P = [1 1\\n     2 1\\n     3 1\\n     4 1\\n     4 2\\n     4 3\\n     3 3\\n     2 3\\n     1 3\\n     1 2\\n     1 1];\\n\\nP2 = [1 1\\n      4 1\\n      4 3\\n      1 3\\n      1 1];]]\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis problem is related to my\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://blogs.mathworks.com/steve/2012/07/09/a-cody-problem-simplify-a-polygon/\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e09-Jul-2012 blog post\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e on MATLAB Central.\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\"}]}"}],"problem_search":{"errors":[],"problems":[{"id":43029,"title":"Area of polygon","description":"Given the vertices in vectors X,Y, return the area of the polygon they define.","description_html":"\u003cp\u003eGiven the vertices in vectors X,Y, return the area of the polygon they define.\u003c/p\u003e","function_template":"function A = polygon_area(x,y)\r\n  A = x+y;\r\nend","test_suite":"%%\r\nL=linspace(0,2.*pi,9);\r\nx = 1.2*cos(L)';\r\ny = 1.2*sin(L)';\r\na_correct = 4.072935;\r\nassert( abs(polygon_area(x,y)-a_correct) \u003c 1e-04 )\r\n%%\r\nx = (1:10)';\r\ny = [0,ones(1,9)]';\r\na_correct = 4;\r\nassert( isequal(polygon_area(x,y),a_correct) )\r\n%%\r\nx=[0,5,3]';\r\ny=[0,0,9]';\r\na_correct = 22.5;\r\nassert( abs(polygon_area(x,y)-a_correct) \u003c 1e-04 )\r\n%%\r\nx=[0,5,3,11]';\r\ny=[0,0,9,126]';\r\na_correct = 162;\r\nassert( isequal(polygon_area(x,y),a_correct) )","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":85738,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":45,"test_suite_updated_at":"2016-10-05T06:02:53.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2016-10-05T05:00:48.000Z","updated_at":"2025-10-28T03:21:32.000Z","published_at":"2016-10-05T06:02:53.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\u003eGiven the vertices in vectors X,Y, return the area of the polygon they define.\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":43023,"title":"Remove collinear points in a set of 2D points defining a polygon","description":"Consider a polygon that is obtained by joining a set of 2D points whose coordinates are stored in matrix P=[x,y]. Write a function that returns Q, reduced P, such that all collinear points are removed but the same polygon is obtained.\r\n\r\n","description_html":"\u003cp\u003eConsider a polygon that is obtained by joining a set of 2D points whose coordinates are stored in matrix P=[x,y]. Write a function that returns Q, reduced P, such that all collinear points are removed but the same polygon is obtained.\u003c/p\u003e","function_template":"function Q = polygon_red(P)\r\na=P(:,1)';\r\nb=P(:,2)';\r\nQ=[a,b];\r\nend","test_suite":"%%\r\nx=[2,3,4,5,6,6,6,5,4,3,2,1,0,0,1];\r\ny=[0,0,0,0,1,2,3,3,4,4,3,3,3,2,1];\r\nP=[x;y]';\r\na = [2,5,6,6,5,4,3,2,0,0];\r\nb = [0,0,1,3,3,4,4,3,3,2];\r\nQ=[a;b]';\r\nassert(isequal(polygon_red(P),Q))\r\n%%\r\nx=[3,6,6,5,4,1,0,0,0,1];\r\ny=[0,2,3,3,4,4,3,1,0,0];\r\nP=[x;y]';\r\na = [3,6,6,5,4,1,0,0];\r\nb = [0,2,3,3,4,4,3,0];\r\nQ=[a;b]';\r\nassert(isequal(polygon_red(P),Q))\r\n\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":85738,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":18,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2016-10-04T17:55:26.000Z","updated_at":"2026-02-09T15:09:14.000Z","published_at":"2016-10-04T17:55:26.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\u003eConsider a polygon that is obtained by joining a set of 2D points whose coordinates are stored in matrix P=[x,y]. Write a function that returns Q, reduced P, such that all collinear points are removed but the same polygon is obtained.\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":820,"title":"Eliminate unnecessary polygon vertices","description":"Suppose you have an n-point polygon represented as an n-by-2 matrix of polygon vertices, P. Assume that the polygon is closed; that is, assume that P(end,:) is the same as P(1,:).\r\n\r\nRemove as many vertices as possible from P to make a second polygon, P2, that has exactly the same shape as P. P2 must also be closed. Your vertices in P2 should be in the same direction as P. That is, if the vertices in P are in clockwise order, then the vertices in P2 should also be in clockwise order.\r\n\r\nIf the first vertex in P is retained in the solution, it should be the first vertex in P2. If the first vertex in P needs to remove, then the first vertex in P2 should be the next retained vertex in P.\r\n\r\nYou can test your solution graphically as follows:\r\n\r\n  plot(P(:,1), P(:,2), 'r', 'LineWidth', 5);\r\n  hold on\r\n  plot(P2(:,1), P2(:,2), 'b');\r\n  hold off\r\n\r\nThe two plotted shapes should overlap exactly.\r\n\r\n*EXAMPLE*\r\n\r\n  P = [1 1\r\n       2 1\r\n       3 1\r\n       4 1\r\n       4 2\r\n       4 3\r\n       3 3\r\n       2 3\r\n       1 3\r\n       1 2\r\n       1 1];\r\n  \r\n  P2 = [1 1\r\n        4 1\r\n        4 3\r\n        1 3\r\n        1 1];\r\n\r\nThis problem is related to my \u003chttp://blogs.mathworks.com/steve/2012/07/09/a-cody-problem-simplify-a-polygon/ ‎09-Jul-2012 blog post\u003e on MATLAB Central.","description_html":"\u003cp\u003eSuppose you have an n-point polygon represented as an n-by-2 matrix of polygon vertices, P. Assume that the polygon is closed; that is, assume that P(end,:) is the same as P(1,:).\u003c/p\u003e\u003cp\u003eRemove as many vertices as possible from P to make a second polygon, P2, that has exactly the same shape as P. P2 must also be closed. Your vertices in P2 should be in the same direction as P. That is, if the vertices in P are in clockwise order, then the vertices in P2 should also be in clockwise order.\u003c/p\u003e\u003cp\u003eIf the first vertex in P is retained in the solution, it should be the first vertex in P2. If the first vertex in P needs to remove, then the first vertex in P2 should be the next retained vertex in P.\u003c/p\u003e\u003cp\u003eYou can test your solution graphically as follows:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eplot(P(:,1), P(:,2), 'r', 'LineWidth', 5);\r\nhold on\r\nplot(P2(:,1), P2(:,2), 'b');\r\nhold off\r\n\u003c/pre\u003e\u003cp\u003eThe two plotted shapes should overlap exactly.\u003c/p\u003e\u003cp\u003e\u003cb\u003eEXAMPLE\u003c/b\u003e\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eP = [1 1\r\n     2 1\r\n     3 1\r\n     4 1\r\n     4 2\r\n     4 3\r\n     3 3\r\n     2 3\r\n     1 3\r\n     1 2\r\n     1 1];\r\n\u003c/pre\u003e\u003cpre class=\"language-matlab\"\u003eP2 = [1 1\r\n      4 1\r\n      4 3\r\n      1 3\r\n      1 1];\r\n\u003c/pre\u003e\u003cp\u003eThis problem is related to my \u003ca href=\"http://blogs.mathworks.com/steve/2012/07/09/a-cody-problem-simplify-a-polygon/\"\u003e‎09-Jul-2012 blog post\u003c/a\u003e on MATLAB Central.\u003c/p\u003e","function_template":"function Ps = simplify_polygon(P)\r\n  Ps = P;\r\nend","test_suite":"%% Edge case: no vertices\r\nP = zeros(0,2);\r\nP2 = zeros(0,2);\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Edge case: one vertex\r\nP = [1 1];\r\nP2 = [1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Edge case: three vertices (a single line segment)\r\nP = [...\r\n    1 1\r\n    1 2\r\n    1 1 ];\r\nP2 = [...\r\n    1 1\r\n    1 2\r\n    1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Single line segment with multiple vertices\r\nP = [ ...\r\n    1 1\r\n    2 1\r\n    3 1\r\n    4 1\r\n    5 1\r\n    4 1\r\n    3 1\r\n    2 1\r\n    1 1];\r\nP2 = [ ...\r\n    1 1\r\n    5 1\r\n    1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Single line segment, different spacing\r\nP = [ ...\r\n    1 1\r\n    2 1\r\n    4 1\r\n    5 1\r\n    1 1];\r\nP2 = [ ...\r\n    1 1\r\n    5 1\r\n    1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Rectangle\r\nP = [ ...\r\n    1 1\r\n    2 1\r\n    3 1\r\n    4 1\r\n    4 2\r\n    4 3\r\n    3 3\r\n    2 3\r\n    1 3\r\n    1 2\r\n    1 1];\r\nP2 = [ ...\r\n    1 1\r\n    4 1\r\n    4 3\r\n    1 3\r\n    1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Two rectangles separated by line segment\r\nP = [ ...\r\n    1 2\r\n    1 1\r\n    2 1\r\n    2 2\r\n    1 2\r\n    1 3\r\n    1 4\r\n    1 5\r\n    2 5\r\n    2 4\r\n    1 4\r\n    1 3\r\n    1 2];\r\nP2 = [ ...\r\n    1 1\r\n    2 1\r\n    2 2\r\n    1 2\r\n    1 5\r\n    2 5\r\n    2 4\r\n    1 4\r\n    1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Nonsimple polygon (figure eight)\r\nP = [ ...\r\n    1 1\r\n    2 2\r\n    3 3\r\n    1 3\r\n    2 2\r\n    3 1\r\n    1 1];\r\nP2 = [ ...\r\n    1 1\r\n    3 3\r\n    1 3\r\n    3 1\r\n    1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%%\r\nP = [ ...\r\n    1 1\r\n    2 2\r\n    3 3\r\n    4 4\r\n    5 5\r\n    5 4\r\n    6 3\r\n    8 1\r\n    7 1\r\n    1 1];\r\nP2 = [ ...\r\n    1 1\r\n    5 5\r\n    5 4\r\n    8 1\r\n    1 1];\r\nassert(isequal(simplify_polygon(P), P2));\r\n    \r\n%% Circle; no points should be removed\r\ntheta = linspace(0,2*pi,200);\r\ntheta(end) = 0;\r\nx = 20*cos(theta);\r\ny = 20*sin(theta);\r\nP = [x', y'];\r\nP2 = P;\r\nassert(isequal(simplify_polygon(P), P2));\r\n\r\n%% Starting vertex can be removed\r\nP = [ ...\r\n    2 1\r\n    3 1\r\n    3 2\r\n    3 3\r\n    2 3\r\n    1 3\r\n    1 2\r\n    1 1\r\n    2 1];\r\nP2 = [ ...\r\n    3 1\r\n    3 3\r\n    1 3\r\n    1 1\r\n    3 1];\r\nassert(isequal(simplify_polygon(P), P2));","published":true,"deleted":false,"likes_count":3,"comments_count":10,"created_by":4303371,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":25,"test_suite_updated_at":"2012-07-10T06:51:30.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-07-09T18:55:10.000Z","updated_at":"2026-01-02T13:53:30.000Z","published_at":"2012-07-09T20:02:09.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\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"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\\n\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\u003eSuppose you have an n-point polygon represented as an n-by-2 matrix of polygon vertices, P. Assume that the polygon is closed; that is, assume that P(end,:) is the same as P(1,:).\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eRemove as many vertices as possible from P to make a second polygon, P2, that has exactly the same shape as P. P2 must also be closed. Your vertices in P2 should be in the same direction as P. That is, if the vertices in P are in clockwise order, then the vertices in P2 should also be in clockwise order.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIf the first vertex in P is retained in the solution, it should be the first vertex in P2. If the first vertex in P needs to remove, then the first vertex in P2 should be the next retained vertex in P.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou can test your solution graphically as follows:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[plot(P(:,1), P(:,2), 'r', 'LineWidth', 5);\\nhold on\\nplot(P2(:,1), P2(:,2), 'b');\\nhold off]]\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe two plotted shapes should overlap exactly.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eEXAMPLE\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[P = [1 1\\n     2 1\\n     3 1\\n     4 1\\n     4 2\\n     4 3\\n     3 3\\n     2 3\\n     1 3\\n     1 2\\n     1 1];\\n\\nP2 = [1 1\\n      4 1\\n      4 3\\n      1 3\\n      1 1];]]\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis problem is related to my\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://blogs.mathworks.com/steve/2012/07/09/a-cody-problem-simplify-a-polygon/\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e09-Jul-2012 blog post\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e on MATLAB Central.\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\"}]}"}],"term":"tag:\"polygons\"","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:\"polygons\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"polygons\"","","\"","polygons","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007fbf2b1c7ef0\u003e":null,"#\u003cMathWorks::Search::Field:0x00007fbf2b1c7e50\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007fbf2b1c7590\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007fbf2b1c8170\u003e":1,"#\u003cMathWorks::Search::Field:0x00007fbf2b1c80d0\u003e":50,"#\u003cMathWorks::Search::Field:0x00007fbf2b1c8030\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007fbf2b1c7f90\u003e":"tag:\"polygons\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007fbf2b1c7f90\u003e":"tag:\"polygons\""},"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:\"polygons\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"polygons\"","","\"","polygons","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007fbf2b1c7ef0\u003e":null,"#\u003cMathWorks::Search::Field:0x00007fbf2b1c7e50\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007fbf2b1c7590\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007fbf2b1c8170\u003e":1,"#\u003cMathWorks::Search::Field:0x00007fbf2b1c80d0\u003e":50,"#\u003cMathWorks::Search::Field:0x00007fbf2b1c8030\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007fbf2b1c7f90\u003e":"tag:\"polygons\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007fbf2b1c7f90\u003e":"tag:\"polygons\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":43029,"difficulty_rating":"easy-medium"},{"id":43023,"difficulty_rating":"easy-medium"},{"id":820,"difficulty_rating":"medium"}]}}