{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2026-04-16T00:12:35.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-16T00: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":43478,"title":"Calculate the dynamic time warping similarity","description":"Dynamic time warping (DTW) is an algorithm for measuring the similarity between two time series that may have been acquired at different speeds. DTW aims to find an optimal match between two time series, such that the sum of the Euclidean distances between matching points is minimal.\r\n\r\n\u003c\u003chttps://upload.wikimedia.org/wikipedia/commons/a/ab/Dynamic_time_warping.png\u003e\u003e\r\n\r\nImage courtesy of \u003chttps://en.wikipedia.org/wiki/Dynamic_time_warping Wikipedia\u003e.\r\n\r\nThe image illustrates the DTW solution for two time series (which have been shifted vertically for better visualization). The dotted lines indicate matches between points of each series, and in order to represent a valid time warp they should never cross.\r\n\r\nPseudocode for the DTW algorithm can be found at its \u003chttps://en.wikipedia.org/wiki/Dynamic_time_warping Wikipedia entry\u003e.\r\n\r\nGiven two time series, calculate the dynamic time warping similarity between them.\r\n","description_html":"\u003cp\u003eDynamic time warping (DTW) is an algorithm for measuring the similarity between two time series that may have been acquired at different speeds. DTW aims to find an optimal match between two time series, such that the sum of the Euclidean distances between matching points is minimal.\u003c/p\u003e\u003cimg src = \"https://upload.wikimedia.org/wikipedia/commons/a/ab/Dynamic_time_warping.png\"\u003e\u003cp\u003eImage courtesy of \u003ca href = \"https://en.wikipedia.org/wiki/Dynamic_time_warping\"\u003eWikipedia\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eThe image illustrates the DTW solution for two time series (which have been shifted vertically for better visualization). The dotted lines indicate matches between points of each series, and in order to represent a valid time warp they should never cross.\u003c/p\u003e\u003cp\u003ePseudocode for the DTW algorithm can be found at its \u003ca href = \"https://en.wikipedia.org/wiki/Dynamic_time_warping\"\u003eWikipedia entry\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eGiven two time series, calculate the dynamic time warping similarity between them.\u003c/p\u003e","function_template":"function cost = dtw_similarity(x1,x2)\r\n    cost = 0;\r\nend","test_suite":"%%\r\nx1 = [0 0 1 2 3 4 3 2 1 0 0 1 0];\r\nx2 = [0 1 2 3 6 3 3 2 1 0 0 0 1 0];\r\ny = 2;\r\nassert(isequal(dtw_similarity(x1,x2),y));\r\n%%\r\nx1 = [0 0 1 2 3 4 3 2 1 0 0 1 0];\r\nx2 = [0 1 2 3 4 5 4 4 2 1 0 0 1 2 1 0];\r\ny = 3;\r\nassert(isequal(dtw_similarity(x1,x2),y));\r\n%%\r\nx1 = [0.47,0.84,0.99,0.90,0.59,0.14,-0.35,-0.75,-0.97,-0.95,-0.70,-0.27,...\r\n    0.21,0.65,0.93,0.98,0.79,0.41,-0.07,-0.54];\r\nx2 = [0.14,0.48,1.06,0.95,0.78,0.79,0.16,-0.29,-0.38,-1.10,-0.86,-0.71,...\r\n    -0.64,-0.15,0.01,0.39,0.92,1.14,1.44,0.53,0.33,-0.16,-0.93,-0.93,-1.35];\r\ny = 4.88;\r\nassert(abs(dtw_similarity(x1,x2)-y)\u003c1E-10);\r\n%%\r\ns = zeros(1,100);\r\nfor i=1:100,\r\n    x1 = linspace(1,10,10+i);\r\n    x2 = linspace(1,10,12+i)+0.1;\r\n    s(i) = dtw_similarity(x1,x2);\r\nend\r\ny = [2.8000,2.7692,2.6857,2.6923,2.6714,2.6471,2.6500,2.6192,2.6000,...\r\n    2.5910,2.5909,2.5665,2.5545,2.5478,2.5500,2.5333,2.5231,2.5172,...\r\n    2.5143,2.5028,2.5000,2.4962,2.4838,2.4857,2.4824,2.4795,2.4789,...\r\n    2.4703,2.4684,2.4653,2.4643,2.4606,2.4571,2.4558,2.4522,2.4511,...\r\n    2.4522,2.4549,2.4575,2.4600,2.4662,2.4713,2.4808,2.4889,2.4976,...\r\n    2.5081,2.5187,2.5293,2.5276,2.5257,2.5258,2.5239,2.5226,2.5220,...\r\n    2.5222,2.5195,2.5182,2.5174,2.5176,2.5156,2.5143,2.5137,2.5135,...\r\n    2.5115,2.5108,2.5099,2.5081,2.5087,2.5077,2.5068,2.5073,2.5056,...\r\n    2.5049,2.5044,2.5030,2.5028,2.5023,2.5015,2.5000,2.5003,2.5000,...\r\n    2.4992,2.4981,2.4983,2.4979,2.4975,2.4969,2.4964,2.4959,2.4953,...\r\n    2.4953,2.4947,2.4941,2.4936,2.4933,2.4928,2.4925,2.4922,2.4909,...\r\n    2.4914];\r\nassert(norm(s-y)\u003c3E-4);","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":28354,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":5,"test_suite_updated_at":"2016-10-11T21:00:09.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2016-10-11T20:57:43.000Z","updated_at":"2016-10-11T21:00:09.000Z","published_at":"2016-10-11T20:57:43.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\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/media/image1.png\"}],\"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\u003eDynamic time warping (DTW) is an algorithm for measuring the similarity between two time series that may have been acquired at different speeds. DTW aims to find an optimal match between two time series, such that the sum of the Euclidean distances between matching points is minimal.\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:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eImage courtesy of\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=\\\"https://en.wikipedia.org/wiki/Dynamic_time_warping\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWikipedia\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe image illustrates the DTW solution for two time series (which have been shifted vertically for better visualization). The dotted lines indicate matches between points of each series, and in order to represent a valid time warp they should never cross.\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\u003ePseudocode for the DTW algorithm can be found at its\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=\\\"https://en.wikipedia.org/wiki/Dynamic_time_warping\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWikipedia entry\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGiven two time series, calculate the dynamic time warping similarity between them.\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\"},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnAAAAE+CAYAAAANqS0iAABQHUlEQVR42u2dC9gN5d7GFVKklERKIvkqUX0im4rk2IlIJSHaJHRA2jrakVQSihKSTpJDEqLaRaTydaIzElGolFJ2pfZ+vus337fs1+tda83M86y1Zq11/67rvcr7rpk1a2bWzD3/w/0vZoQQQgghRFZRTLtACCGEEEICTgghhBBCSMAJIYQQQggJOCGEEEIICTghhBBCCCEBJ4QQQgghJOCEEEIIISTghBBCCCGEBJwQQgghhJCAE0IIIYSQgBNCCCGEEBJwQgghhBBCAk4IIYQQQgJOCCGEEEJIwAkhhBBCCAk4IYQQQggJOCGEEEIIIQEnhBBCCCEk4IQQQgghJOCEEEIIIYQEnBBCCCGEkIATQgghhJCAE0IIIYQQEnBCCCGEEEICTgghhBBCAk4IIYQQQkjACSGEEEIICTghhBBCCAk4IYQQQgghASeEEEIIISTghBBCCCGEBJwQQogc5o033tBOEBJwQgghRDZRsWJFs2jRIu0IIQEnhBBCZAMLFiwwxYoVMx06dNDOEBJwQgghRDbQpEkTU7JkSVOpUiXz73//WztESMAJIYQQUWb58uWmbNmy3k/58uXNkiVLtFOEBJwQQggRZdq3b2/69+/vReC6dOlievXqpZ0iJOCEEEKIqLJ69Wqz7777ev+lBm7evHleFO6PP/7QzhEScEIIIUQU6dmzp+nWrZv59ttvPQH3448/mqpVq5r58+dr5wgJOCGEECJqbN682ey3337mk08+MRs2bDDFixc3O3fuNIMGDTKdOnXSDhIScEIIIUTUQKi1adPG+/9Vq1aZ/fff3/v/lStXev+/Y8cO7SQhASeEEEJEhe3bt5sDDzzQLFu2zPv3pk2bzE033bTr77Vq1TLTpk3TjhIScEIIIURUGDFihDnttNPi/n3YsGHm/PPP144SEnBCCCFEFPj999/N4YcfbubOnRv3NV988YUpVaqU+eGHH7TDhAScEEIIkWkmT57spUiTTVxo0KCBmThxonaYkIATQgghMgmi7bjjjjNTpkxJ+toxY8aYpk2baqcJCTghhBAik8yZM8ccccQRnl1IMrZs2eJNZ6DBQQgJOCGEECJDNGzY0IwcOdL365s3b27uu+8+7TghASeEEEJkgqVLl5qDDjrI/Pzzz76XoV6uXr162nlCAk4IIYTIBOedd95uXm9+YLQWs1LXrFmjHSgk4IQQQoh08vHHH3tjs7755psi/46lyBNPPFHk3y644AIzZMgQ7UQhASeEEEKkk65du5pevXrF/fstt9xirrrqqiL/NmPGDHPsscdqJwoJOCGEECJdbNy4MWkadMCAAaZfv35F/u3XX381ZcuWNe+99552ppCAE0IIIdJB//79TYcOHRK+pk+fPgnr47p06WIGDhyonSkk4IQQQohUs23bNi969vbbbyd8Xffu3c3QoUPj/n3hwoWmSpUqSac3CCEBJ4QQQljCUHo/0xQuvfRSb8B9PP744w9ToUIFs2TJEu1UIQEnhBBCpApq1ypWrGhefPHFpK+l03Ts2LEJX0OaNVEjhBAScEIIIYQl48ePNyeddJKv17Zu3dpMmjQp4WuWLVtmypcv70XjhJCAE0IIIRzzr3/9y9SoUcNMnTrV1+ubNGlinnrqqYSvof6tatWqZv78+drBQgJOCCGEcM306dNNtWrVzJ9//unr9e+//35ck9+CDBo0yHTq1Ek7WEjACSGEEK455ZRTzAMPPOB8vStXrjT777+/2bFjh3aykIATQgghXPHKK6+YQw45JGUiq1atWmbatGna0UICTgghhHBFixYtzO23356y9WNN0qZNG+1oIQEnhBBCuIBatjJlypitW7em7D3Wrl1rSpUqZX744QftcCEBJ4QQQtjSsWNHc80116T8fRo0aGAmTpyoHS4k4IQQQggb1q1b5w2tX79+fcrfa8yYMb4mPAghASeEEEIkoG/fvmmz+NiyZYspWbKk2bRpk3a8kIATQgghwvDJJ594dWnYfKSL5s2bm1GjRmnnCwk4IYQQIgydO3f2/NnCsHHjRnPEEUcEHpE1efJkU69ePe18IQEnhBBCBAW/t7Jly5qaNWuGWn7VqlWhxN+PP/7oRf1SYRgshAScEEKInIaGAuaeNmrUKNTyK1as8Ix/w0AE7qijjtJBEBJwQgghhF9IezJg/uqrrzbNmjULtY633nrLVKlSJdSyvXv39nznhJCAE0IIIXzy5JNPmmOOOcaMHz/enHvuuaHWsWjRIm8dYSD6V6JECc9AWAgJOCGEEMIHderUMRMmTDCjR482HTp0CLWOBQsWmNq1a4daduTIkV4KdeDAgToYQgJOCCGE8CO8KlWqZH777Tdz1113eZ2oYZg9e7apX79+qGWZi4qdCCnYf//73zooQgJOCCGESESTJk3M8OHDvf8fPHiw6dmzZ6j1TJ061TRu3DjUsrfccou58sorTYUKFcySJUt0UIQEnBBCCBGP5cuXmwMOOMCz8oBXXnnFzJs3L9S6nnnmGXPRRReFWvb66683/fr1M3369DG9evXSgREScEIIIUQ82rdv74mnTINwu/HGG82yZctM+fLlA5sBCyEBJ4QQIi9YvXq1N7T+66+/zvi2LF682LMhof4NO5P58+frAAkJOCGEEKIw1Lp17949cts1aNAg06lTJx0gIQEnhBBCFGTz5s1mv/3284bXR42VK1d6I7kY7SWEBJwQQgjx/xDlatOmTWS3r1atWmbatGk6UEICTgghhIDt27ebAw880GsYiCr4wkVZYAoJOCGEECKtjBgxwpx22mmR3sa1a9eaUqVKmR9++EEHTEjACSGEyG9+//13c/jhh5u5c+dGflsbNGhgJk6cqIMmJOCEEELkN5MnT/bqy+KNq+rfv7/56KOPQq37gw8+8JojXMGA+6ZNm+qgCQk4IYQQ+Qui7bjjjjNTpkyJ+5rq1aubpUuXhlp/q1atzCOPPOJse7ds2WJKlixpNm3apIMnJOCEEELkJ88995w54ogjzM6dO+O+pnLlyuadd94JtX5mqj711FOhlm3Xrp1X91YYBtyPGjVKB09IwAkhhMhPGjZsaEaOHJnwNQcddFDoFOqpp55qZs2aFWpZ5rF++umne/yelG+9evV08IQEnBBCiPyDtCji7Oeff074OkZrFRUJ88OJJ55oXnjhhcDL/fnnn2afffYx69at2+NvP/74o7dNa9as0UEUEnBCCCHyi/POO8/cfPPNCV/zz3/+0xQrViz0bNSaNWuaV199NfByiErel5q3orjgggvMkCFDdBCFBJwQQoj84eOPP/bGZn3zzTcJX4fnGkIqrPfakUcead54443Ay3333Xfe+/70009F/n3GjBnm2GOP1YEUEnBCCCHyh65du5pevXolfR2RN4QUkbgwHHrooeb9998PvNyGDRtM8eLFPY+6ovj1119N2bJlQ61bCAk4IYQQWcfGjRu9GrLPP/886Wt5DZG6sCCyPvvss8DLrV692pQpUybha7p06WIGDhyoAyok4IQQQuQ+GPN26NDB12t/++03s3LlylDv869//cv07t3bbN26NfCyvGf58uUTvmbhwoWmSpUqcQ2IhZCAE0IIkRNs27bNi4qF9XVLF8uXL/f86RLxxx9/mAoVKpglS5bowAoJOCGEELnLsGHDsmIUFcbCfqYt9OnTx1ctnxAScEIIIbISCv8rVqxoXnzxxZz5TMuWLfNSrUTjhJCAE0IIkXM89NBD5qSTTsqpz0T9W9WqVc38+fN1gIUEnBBCiNyChoIaNWqYqVOn5txnGzRokOnUqZMOspCAE0IIkVtMnz7dVKtWzRtRlWvQsbr//vubHTt26EALCTghhBC5wymnnGLGjh2bs5+vVq1aZtq0aTrQQgJOCCFEbvDKK6+YQw45xPNNCzpRgdRrNkB3bZs2bXSwhQScEEKI3KBFixZm8ODBpkSJEmb9+vWBlr377rtNjx49Qr3vihUrzOjRo9PyGdeuXWtKlSoVemarEBJwQgghIgOzQhlJ9eWXX3ozTZMNry8Mwq9nz56h3puGicaNG4dadvv27YFr2ho0aGAmTpyogy4k4IQQQmQ3HTt2NNdcc4359ttvPQH3008/BVr+b3/7m7d8GB555BHTsmXLUMtef/31pl+/foGWGTNmTFaYFAsJOCGEECIu69at84bWkzbdsGGDKV68uDfhIAiIN0RcGMaNG2fatm0batm+ffuaG2+8MdAyW7ZsMSVLlvQ1wUEICTghhBCRBBEU80dbtWqVZ7URFNKnpFHDcO+995pLLrkk1LJXXHGFGTJkSODlmjdvbkaNGqWDLyTghBBCZB/fffedKV26tOeRBvyXwe9B6dy5s7nrrrtCbcMdd9xhunXrFmpZhOeIESMCLzd58mRTr149nQBCAk4IIUT2cdttt5nWrVvv+vdbb71lqlSpEng9HTp0CN1JevPNN5vevXuHWrZdu3bmgQceCLzcjz/+6KWN16xZo5NASMAJIYTIHujeZMD7okWLdv2O/z/mmGMCr+vcc881Dz/8cKjtGDBggOnfv3+oZRGfkyZNCrXsBRdcECr9KoQEnBBCiIxBN2b9+vV3+92nn37qpTSDQi3as88+G2o7iL7ddNNNoZY988wzzZNPPhl4OYbbz5gxwxx77LE6EYQEnBBCiOzgjz/+MFWrVjWzZs3K+LZ8/PHHXvNEGPB0mzlzZuDlhg4davr06WPKli3reeAJIQEnhBAi8hC1qlmzZtaMwIpH9+7dzeuvvx54uZhvXZcuXczAgQN1QggJOCGEENGnTp06ZsKECXn7+WO+dcx9pWmDlKoQEnBCCCEiy4IFC0ylSpXMb7/9lrf7IOZbRyoZ25QlS5boxBAScEIIIaJLkyZNzPDhw/N6HxT0raMWrlevXjoxhAScEEKIaLJ8+XJzwAEHeD5o+UxB37ply5aZQw45xIvGCSEBJ4QQInK0b9/eGwCf7+BbN378eO//qX+jI3f+/Pk6QYQEnBBCiGixevVqb/rA119/nff7olmzZuaxxx7b9e9BgwbtmgcrhAScEEKIyNCjRw/PdiMRTz/9dOBI1O+//26ee+45s3PnzqzZFx07djRz587d9W9mwO6///7edAohJOCEEEJEgs2bN5v99tvPm7SQCAQeJrdBIKJXrFgx8+uvv4batrp16ybdrnRQq1YtM23aNJ0sQgJOCCFENCBF2KZNm6Svu/TSS82IESMCrfvzzz/3xGFYmIbw2WefBV6ORowpU6Y420fDhg3ztY+EkIATQgiRcrZv324OPPBA88YbbyR9LQPex44dG2j9H330kTnooINCbRudnyVKlDBffvll4GU/+OADU758eWf7ae3ataZUqVLmhx9+0EkjJOCEEEJkjo0bN5ohQ4aY0047zdfrW7dubSZNmhToPd5++21z2GGHhRaXpF+/+eabwMtiiXLEEUc43V/MVp04caJOHCEBJ4QQInNgG0L0rWDBfiIw+X3qqacCvcfSpUtN9erVQ23ft99+6wk4hFxQXnvtNVOjRg2n+2vMmDGmadOmOnGEBJwQQojMceKJJ5rKlSv7nvVJBGrWrFmB3uOll14yxx9/fKjtI3VKCjVMBytzTGvXru10f23ZssWULFnSbNq0SSePkIAToij++c9/5r0bvBCpBNFWpkwZzz4kiOB74YUXAr3P888/73WShmHVqlWefUcYZs+eberXr+98vzVv3tyMGjVKJ5CQgBOiKNq1a2caN27sOzIghAgG3mwU5U+dOtX3MjVr1jSvvvpqoPeZPn26adSoUahtXLFihTfGKgx41p1xxhnO99vkyZNNvXr1dAIJCTghCsPTLdYB5cqVM7feeqv5888/tVOEcEzDhg29In8iZH55/fXXA3dhvv/+++bhhx8OtY3vvvuuOe6440ILrRYtWgReDr86agLjXXfIDDCxYs2aNTqJhAScEDF4uidl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\"}]}"}],"problem_search":{"errors":[],"problems":[{"id":43478,"title":"Calculate the dynamic time warping similarity","description":"Dynamic time warping (DTW) is an algorithm for measuring the similarity between two time series that may have been acquired at different speeds. DTW aims to find an optimal match between two time series, such that the sum of the Euclidean distances between matching points is minimal.\r\n\r\n\u003c\u003chttps://upload.wikimedia.org/wikipedia/commons/a/ab/Dynamic_time_warping.png\u003e\u003e\r\n\r\nImage courtesy of \u003chttps://en.wikipedia.org/wiki/Dynamic_time_warping Wikipedia\u003e.\r\n\r\nThe image illustrates the DTW solution for two time series (which have been shifted vertically for better visualization). The dotted lines indicate matches between points of each series, and in order to represent a valid time warp they should never cross.\r\n\r\nPseudocode for the DTW algorithm can be found at its \u003chttps://en.wikipedia.org/wiki/Dynamic_time_warping Wikipedia entry\u003e.\r\n\r\nGiven two time series, calculate the dynamic time warping similarity between them.\r\n","description_html":"\u003cp\u003eDynamic time warping (DTW) is an algorithm for measuring the similarity between two time series that may have been acquired at different speeds. DTW aims to find an optimal match between two time series, such that the sum of the Euclidean distances between matching points is minimal.\u003c/p\u003e\u003cimg src = \"https://upload.wikimedia.org/wikipedia/commons/a/ab/Dynamic_time_warping.png\"\u003e\u003cp\u003eImage courtesy of \u003ca href = \"https://en.wikipedia.org/wiki/Dynamic_time_warping\"\u003eWikipedia\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eThe image illustrates the DTW solution for two time series (which have been shifted vertically for better visualization). The dotted lines indicate matches between points of each series, and in order to represent a valid time warp they should never cross.\u003c/p\u003e\u003cp\u003ePseudocode for the DTW algorithm can be found at its \u003ca href = \"https://en.wikipedia.org/wiki/Dynamic_time_warping\"\u003eWikipedia entry\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eGiven two time series, calculate the dynamic time warping similarity between them.\u003c/p\u003e","function_template":"function cost = dtw_similarity(x1,x2)\r\n    cost = 0;\r\nend","test_suite":"%%\r\nx1 = [0 0 1 2 3 4 3 2 1 0 0 1 0];\r\nx2 = [0 1 2 3 6 3 3 2 1 0 0 0 1 0];\r\ny = 2;\r\nassert(isequal(dtw_similarity(x1,x2),y));\r\n%%\r\nx1 = [0 0 1 2 3 4 3 2 1 0 0 1 0];\r\nx2 = [0 1 2 3 4 5 4 4 2 1 0 0 1 2 1 0];\r\ny = 3;\r\nassert(isequal(dtw_similarity(x1,x2),y));\r\n%%\r\nx1 = [0.47,0.84,0.99,0.90,0.59,0.14,-0.35,-0.75,-0.97,-0.95,-0.70,-0.27,...\r\n    0.21,0.65,0.93,0.98,0.79,0.41,-0.07,-0.54];\r\nx2 = [0.14,0.48,1.06,0.95,0.78,0.79,0.16,-0.29,-0.38,-1.10,-0.86,-0.71,...\r\n    -0.64,-0.15,0.01,0.39,0.92,1.14,1.44,0.53,0.33,-0.16,-0.93,-0.93,-1.35];\r\ny = 4.88;\r\nassert(abs(dtw_similarity(x1,x2)-y)\u003c1E-10);\r\n%%\r\ns = zeros(1,100);\r\nfor i=1:100,\r\n    x1 = linspace(1,10,10+i);\r\n    x2 = linspace(1,10,12+i)+0.1;\r\n    s(i) = dtw_similarity(x1,x2);\r\nend\r\ny = [2.8000,2.7692,2.6857,2.6923,2.6714,2.6471,2.6500,2.6192,2.6000,...\r\n    2.5910,2.5909,2.5665,2.5545,2.5478,2.5500,2.5333,2.5231,2.5172,...\r\n    2.5143,2.5028,2.5000,2.4962,2.4838,2.4857,2.4824,2.4795,2.4789,...\r\n    2.4703,2.4684,2.4653,2.4643,2.4606,2.4571,2.4558,2.4522,2.4511,...\r\n    2.4522,2.4549,2.4575,2.4600,2.4662,2.4713,2.4808,2.4889,2.4976,...\r\n    2.5081,2.5187,2.5293,2.5276,2.5257,2.5258,2.5239,2.5226,2.5220,...\r\n    2.5222,2.5195,2.5182,2.5174,2.5176,2.5156,2.5143,2.5137,2.5135,...\r\n    2.5115,2.5108,2.5099,2.5081,2.5087,2.5077,2.5068,2.5073,2.5056,...\r\n    2.5049,2.5044,2.5030,2.5028,2.5023,2.5015,2.5000,2.5003,2.5000,...\r\n    2.4992,2.4981,2.4983,2.4979,2.4975,2.4969,2.4964,2.4959,2.4953,...\r\n    2.4953,2.4947,2.4941,2.4936,2.4933,2.4928,2.4925,2.4922,2.4909,...\r\n    2.4914];\r\nassert(norm(s-y)\u003c3E-4);","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":28354,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":5,"test_suite_updated_at":"2016-10-11T21:00:09.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2016-10-11T20:57:43.000Z","updated_at":"2016-10-11T21:00:09.000Z","published_at":"2016-10-11T20:57:43.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\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/media/image1.png\"}],\"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\u003eDynamic time warping (DTW) is an algorithm for measuring the similarity between two time series that may have been acquired at different speeds. DTW aims to find an optimal match between two time series, such that the sum of the Euclidean distances between matching points is minimal.\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:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eImage courtesy of\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=\\\"https://en.wikipedia.org/wiki/Dynamic_time_warping\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWikipedia\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe image illustrates the DTW solution for two time series (which have been shifted vertically for better visualization). The dotted lines indicate matches between points of each series, and in order to represent a valid time warp they should never cross.\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\u003ePseudocode for the DTW algorithm can be found at its\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=\\\"https://en.wikipedia.org/wiki/Dynamic_time_warping\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWikipedia entry\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGiven two time series, calculate the dynamic time warping similarity between them.\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\"},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnAAAAE+CAYAAAANqS0iAABQHUlEQVR42u2dC9gN5d7GFVKklERKIvkqUX0im4rk2IlIJSHaJHRA2jrakVQSihKSTpJDEqLaRaTydaIzElGolFJ2pfZ+vus337fs1+tda83M86y1Zq11/67rvcr7rpk1a2bWzD3/w/0vZoQQQgghRFZRTLtACCGEEEICTgghhBBCSMAJIYQQQggJOCGEEEIICTghhBBCCCEBJ4QQQgghJOCEEEIIISTghBBCCCGEBJwQQgghhJCAE0IIIYSQgBNCCCGEEBJwQgghhBBCAk4IIYQQQgJOCCGEEEJIwAkhhBBCCAk4IYQQQggJOCGEEEIIIQEnhBBCCCEk4IQQQgghJOCEEEIIIYQEnBBCCCGEkIATQgghhJCAE0IIIYQQEnBCCCGEEEICTgghhBBCAk4IIYQQQkjACSGEEEIICTghhBBCCAk4IYQQQgghASeEEEIIISTghBBCCCGEBJwQQogc5o033tBOEBJwQgghRDZRsWJFs2jRIu0IIQEnhBBCZAMLFiwwxYoVMx06dNDOEBJwQgghRDbQpEkTU7JkSVOpUiXz73//WztESMAJIYQQUWb58uWmbNmy3k/58uXNkiVLtFOEBJwQQggRZdq3b2/69+/vReC6dOlievXqpZ0iJOCEEEKIqLJ69Wqz7777ev+lBm7evHleFO6PP/7QzhEScEIIIUQU6dmzp+nWrZv59ttvPQH3448/mqpVq5r58+dr5wgJOCGEECJqbN682ey3337mk08+MRs2bDDFixc3O3fuNIMGDTKdOnXSDhIScEIIIUTUQKi1adPG+/9Vq1aZ/fff3/v/lStXev+/Y8cO7SQhASeEEEJEhe3bt5sDDzzQLFu2zPv3pk2bzE033bTr77Vq1TLTpk3TjhIScEIIIURUGDFihDnttNPi/n3YsGHm/PPP144SEnBCCCFEFPj999/N4YcfbubOnRv3NV988YUpVaqU+eGHH7TDhAScEEIIkWkmT57spUiTTVxo0KCBmThxonaYkIATQgghMgmi7bjjjjNTpkxJ+toxY8aYpk2baqcJCTghhBAik8yZM8ccccQRnl1IMrZs2eJNZ6DBQQgJOCGEECJDNGzY0IwcOdL365s3b27uu+8+7TghASeEEEJkgqVLl5qDDjrI/Pzzz76XoV6uXr162nlCAk4IIYTIBOedd95uXm9+YLQWs1LXrFmjHSgk4IQQQoh08vHHH3tjs7755psi/46lyBNPPFHk3y644AIzZMgQ7UQhASeEEEKkk65du5pevXrF/fstt9xirrrqqiL/NmPGDHPsscdqJwoJOCGEECJdbNy4MWkadMCAAaZfv35F/u3XX381ZcuWNe+99552ppCAE0IIIdJB//79TYcOHRK+pk+fPgnr47p06WIGDhyonSkk4IQQQohUs23bNi969vbbbyd8Xffu3c3QoUPj/n3hwoWmSpUqSac3CCEBJ4QQQljCUHo/0xQuvfRSb8B9PP744w9ToUIFs2TJEu1UIQEnhBBCpApq1ypWrGhefPHFpK+l03Ts2LEJX0OaNVEjhBAScEIIIYQl48ePNyeddJKv17Zu3dpMmjQp4WuWLVtmypcv70XjhJCAE0IIIRzzr3/9y9SoUcNMnTrV1+ubNGlinnrqqYSvof6tatWqZv78+drBQgJOCCGEcM306dNNtWrVzJ9//unr9e+//35ck9+CDBo0yHTq1Ek7WEjACSGEEK455ZRTzAMPPOB8vStXrjT777+/2bFjh3aykIATQgghXPHKK6+YQw45JGUiq1atWmbatGna0UICTgghhHBFixYtzO23356y9WNN0qZNG+1oIQEnhBBCuIBatjJlypitW7em7D3Wrl1rSpUqZX744QftcCEBJ4QQQtjSsWNHc80116T8fRo0aGAmTpyoHS4k4IQQQggb1q1b5w2tX79+fcrfa8yYMb4mPAghASeEEEIkoG/fvmmz+NiyZYspWbKk2bRpk3a8kIATQgghwvDJJ594dWnYfKSL5s2bm1GjRmnnCwk4IYQQIgydO3f2/NnCsHHjRnPEEUcEHpE1efJkU69ePe18IQEnhBBCBAW/t7Jly5qaNWuGWn7VqlWhxN+PP/7oRf1SYRgshAScEEKInIaGAuaeNmrUKNTyK1as8Ix/w0AE7qijjtJBEBJwQgghhF9IezJg/uqrrzbNmjULtY633nrLVKlSJdSyvXv39nznhJCAE0IIIXzy5JNPmmOOOcaMHz/enHvuuaHWsWjRIm8dYSD6V6JECc9AWAgJOCGEEMIHderUMRMmTDCjR482HTp0CLWOBQsWmNq1a4daduTIkV4KdeDAgToYQgJOCCGE8CO8KlWqZH777Tdz1113eZ2oYZg9e7apX79+qGWZi4qdCCnYf//73zooQgJOCCGESESTJk3M8OHDvf8fPHiw6dmzZ6j1TJ061TRu3DjUsrfccou58sorTYUKFcySJUt0UIQEnBBCCBGP5cuXmwMOOMCz8oBXXnnFzJs3L9S6nnnmGXPRRReFWvb66683/fr1M3369DG9evXSgREScEIIIUQ82rdv74mnTINwu/HGG82yZctM+fLlA5sBCyEBJ4QQIi9YvXq1N7T+66+/zvi2LF682LMhof4NO5P58+frAAkJOCGEEKIw1Lp17949cts1aNAg06lTJx0gIQEnhBBCFGTz5s1mv/3284bXR42VK1d6I7kY7SWEBJwQQgjx/xDlatOmTWS3r1atWmbatGk6UEICTgghhIDt27ebAw880GsYiCr4wkVZYAoJOCGEECKtjBgxwpx22mmR3sa1a9eaUqVKmR9++EEHTEjACSGEyG9+//13c/jhh5u5c+dGflsbNGhgJk6cqIMmJOCEEELkN5MnT/bqy+KNq+rfv7/56KOPQq37gw8+8JojXMGA+6ZNm+qgCQk4IYQQ+Qui7bjjjjNTpkyJ+5rq1aubpUuXhlp/q1atzCOPPOJse7ds2WJKlixpNm3apIMnJOCEEELkJ88995w54ogjzM6dO+O+pnLlyuadd94JtX5mqj711FOhlm3Xrp1X91YYBtyPGjVKB09IwAkhhMhPGjZsaEaOHJnwNQcddFDoFOqpp55qZs2aFWpZ5rF++umne/yelG+9evV08IQEnBBCiPyDtCji7Oeff074OkZrFRUJ88OJJ55oXnjhhcDL/fnnn2afffYx69at2+NvP/74o7dNa9as0UEUEnBCCCHyi/POO8/cfPPNCV/zz3/+0xQrViz0bNSaNWuaV199NfByiErel5q3orjgggvMkCFDdBCFBJwQQoj84eOPP/bGZn3zzTcJX4fnGkIqrPfakUcead54443Ay3333Xfe+/70009F/n3GjBnm2GOP1YEUEnBCCCHyh65du5pevXolfR2RN4QUkbgwHHrooeb9998PvNyGDRtM8eLFPY+6ovj1119N2bJlQ61bCAk4IYQQWcfGjRu9GrLPP/886Wt5DZG6sCCyPvvss8DLrV692pQpUybha7p06WIGDhyoAyok4IQQQuQ+GPN26NDB12t/++03s3LlylDv869//cv07t3bbN26NfCyvGf58uUTvmbhwoWmSpUqcQ2IhZCAE0IIkRNs27bNi4qF9XVLF8uXL/f86RLxxx9/mAoVKpglS5bowAoJOCGEELnLsGHDsmIUFcbCfqYt9OnTx1ctnxAScEIIIbISCv8rVqxoXnzxxZz5TMuWLfNSrUTjhJCAE0IIkXM89NBD5qSTTsqpz0T9W9WqVc38+fN1gIUEnBBCiNyChoIaNWqYqVOn5txnGzRokOnUqZMOspCAE0IIkVtMnz7dVKtWzRtRlWvQsbr//vubHTt26EALCTghhBC5wymnnGLGjh2bs5+vVq1aZtq0aTrQQgJOCCFEbvDKK6+YQw45xPNNCzpRgdRrNkB3bZs2bXSwhQScEEKI3KBFixZm8ODBpkSJEmb9+vWBlr377rtNjx49Qr3vihUrzOjRo9PyGdeuXWtKlSoVemarEBJwQgghIgOzQhlJ9eWXX3ozTZMNry8Mwq9nz56h3puGicaNG4dadvv27YFr2ho0aGAmTpyogy4k4IQQQmQ3HTt2NNdcc4359ttvPQH3008/BVr+b3/7m7d8GB555BHTsmXLUMtef/31pl+/foGWGTNmTFaYFAsJOCGEECIu69at84bWkzbdsGGDKV68uDfhIAiIN0RcGMaNG2fatm0batm+ffuaG2+8MdAyW7ZsMSVLlvQ1wUEICTghhBCRBBEU80dbtWqVZ7URFNKnpFHDcO+995pLLrkk1LJXXHGFGTJkSODlmjdvbkaNGqWDLyTghBBCZB/fffedKV26tOeRBvyXwe9B6dy5s7nrrrtCbcMdd9xhunXrFmpZhOeIESMCLzd58mRTr149nQBCAk4IIUT2cdttt5nWrVvv+vdbb71lqlSpEng9HTp0CN1JevPNN5vevXuHWrZdu3bmgQceCLzcjz/+6KWN16xZo5NASMAJIYTIHujeZMD7okWLdv2O/z/mmGMCr+vcc881Dz/8cKjtGDBggOnfv3+oZRGfkyZNCrXsBRdcECr9KoQEnBBCiIxBN2b9+vV3+92nn37qpTSDQi3as88+G2o7iL7ddNNNoZY988wzzZNPPhl4OYbbz5gxwxx77LE6EYQEnBBCiOzgjz/+MFWrVjWzZs3K+LZ8/PHHXvNEGPB0mzlzZuDlhg4davr06WPKli3reeAJIQEnhBAi8hC1qlmzZtaMwIpH9+7dzeuvvx54uZhvXZcuXczAgQN1QggJOCGEENGnTp06ZsKECXn7+WO+dcx9pWmDlKoQEnBCCCEiy4IFC0ylSpXMb7/9lrf7IOZbRyoZ25QlS5boxBAScEIIIaJLkyZNzPDhw/N6HxT0raMWrlevXjoxhAScEEKIaLJ8+XJzwAEHeD5o+UxB37ply5aZQw45xIvGCSEBJ4QQInK0b9/eGwCf7+BbN378eO//qX+jI3f+/Pk6QYQEnBBCiGixevVqb/rA119/nff7olmzZuaxxx7b9e9BgwbtmgcrhAScEEKIyNCjRw/PdiMRTz/9dOBI1O+//26ee+45s3PnzqzZFx07djRz587d9W9mwO6///7edAohJOCEEEJEgs2bN5v99tvPm7SQCAQeJrdBIKJXrFgx8+uvv4batrp16ybdrnRQq1YtM23aNJ0sQgJOCCFENCBF2KZNm6Svu/TSS82IESMCrfvzzz/3xGFYmIbw2WefBV6ORowpU6Y420fDhg3ztY+EkIATQgiRcrZv324OPPBA88YbbyR9LQPex44dG2j9H330kTnooINCbRudnyVKlDBffvll4GU/+OADU758eWf7ae3ataZUqVLmhx9+0EkjJOCEEEJkjo0bN5ohQ4aY0047zdfrW7dubSZNmhToPd5++21z2GGHhRaXpF+/+eabwMtiiXLEEUc43V/MVp04caJOHCEBJ4QQInNgG0L0rWDBfiIw+X3qqacCvcfSpUtN9erVQ23ft99+6wk4hFxQXnvtNVOjRg2n+2vMmDGmadOmOnGEBJwQQojMceKJJ5rKlSv7nvVJBGrWrFmB3uOll14yxx9/fKjtI3VKCjVMBytzTGvXru10f23ZssWULFnSbNq0SSePkIAToij++c9/5r0bvBCpBNFWpkwZzz4kiOB74YUXAr3P888/73WShmHVqlWefUcYZs+eberXr+98vzVv3tyMGjVKJ5CQgBOiKNq1a2caN27sOzIghAgG3mwU5U+dOtX3MjVr1jSvvvpqoPeZPn26adSoUahtXLFihTfGKgx41p1xxhnO99vkyZNNvXr1dAIJCTghCsPTLdYB5cqVM7feeqv5888/tVOEcEzDhg29In8iZH55/fXXA3dhvv/+++bhhx8OtY3vvvuuOe6440ILrRYtWgReDr86agLjXXfIDDCxYs2aNTqJhAScEDF4uidl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\"}]}"}],"term":"tag:\"dynamic time warping\"","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:\"dynamic time warping\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"dynamic time warping\"","","\"","dynamic time warping","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f234ba95dd8\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f234ba95d38\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f234ba95478\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f234ba96058\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f234ba95fb8\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f234ba95f18\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f234ba95e78\u003e":"tag:\"dynamic time warping\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f234ba95e78\u003e":"tag:\"dynamic time warping\""},"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:\"dynamic time warping\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"dynamic time warping\"","","\"","dynamic time warping","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f234ba95dd8\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f234ba95d38\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f234ba95478\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f234ba96058\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f234ba95fb8\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f234ba95f18\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f234ba95e78\u003e":"tag:\"dynamic time warping\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f234ba95e78\u003e":"tag:\"dynamic time warping\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":43478,"difficulty_rating":"medium"}]}}