{"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":1852,"title":"Repeat middle rows and columns of an array","description":"Given an MxN numeric array (A), return an array (B) in which the middle rows and columns have each been repeated once. It may be easier to think of this problem as two operations: (1) repeat the middle rows, and then (2) repeat the middle columns.\r\n\r\nThe motivation for this problem is to create an array that, when used in _blockproc(B,[2 2],fun)_, effectively incorporates a sliding window with 50% overlap. (NOTE: yes, _nlfilter_ will work on array A, but it requires that the processing output be a scalar, whereas _blockproc_ does not)\r\n\r\nYou may assume that M\u003e1, N\u003e1 (i.e. no scalars or vectors).\r\n\r\n*Example*\r\n\r\nIf\r\n\r\n  A = [1  2  3  4\r\n       5  6  7  8\r\n       9  10 11 12\r\n       13 14 15 16]\r\n\r\nThen\r\n\r\n\r\n  B = [1  2  2  3  3  4\r\n       5  6  6  7  7  8\r\n       5  6  6  7  7  8\r\n       9  10 10 11 11 12\r\n       9  10 10 11 11 12\r\n       13 14 14 15 15 16]","description_html":"\u003cp\u003eGiven an MxN numeric array (A), return an array (B) in which the middle rows and columns have each been repeated once. It may be easier to think of this problem as two operations: (1) repeat the middle rows, and then (2) repeat the middle columns.\u003c/p\u003e\u003cp\u003eThe motivation for this problem is to create an array that, when used in \u003ci\u003eblockproc(B,[2 2],fun)\u003c/i\u003e, effectively incorporates a sliding window with 50% overlap. (NOTE: yes, \u003ci\u003enlfilter\u003c/i\u003e will work on array A, but it requires that the processing output be a scalar, whereas \u003ci\u003eblockproc\u003c/i\u003e does not)\u003c/p\u003e\u003cp\u003eYou may assume that M\u003e1, N\u003e1 (i.e. no scalars or vectors).\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample\u003c/b\u003e\u003c/p\u003e\u003cp\u003eIf\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eA = [1  2  3  4\r\n     5  6  7  8\r\n     9  10 11 12\r\n     13 14 15 16]\r\n\u003c/pre\u003e\u003cp\u003eThen\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eB = [1  2  2  3  3  4\r\n     5  6  6  7  7  8\r\n     5  6  6  7  7  8\r\n     9  10 10 11 11 12\r\n     9  10 10 11 11 12\r\n     13 14 14 15 15 16]\r\n\u003c/pre\u003e","function_template":"function B = repmatmid(A)\r\n  B = A;\r\nend","test_suite":"%%\r\nA = randi(100,2);\r\nassert(isequal(repmatmid(A),A))\r\n\r\n%%\r\nA = magic(3);\r\nB_correct = [8 1 1 6;\r\n             3 5 5 7;\r\n             3 5 5 7;\r\n             4 9 9 2];\r\nassert(isequal(repmatmid(A),B_correct))\r\n\r\n%%\r\nA = reshape(1:16,4,4);\r\nB_correct = [1 5 5 9  9  13;\r\n             2 6 6 10 10 14;\r\n             2 6 6 10 10 14;\r\n             3 7 7 11 11 15;\r\n             3 7 7 11 11 15;\r\n             4 8 8 12 12 16];\r\nassert(isequal(repmatmid(A),B_correct))\r\n\r\n%%\r\nA = eye(5);\r\nB_correct = [1 0 0 0 0 0 0 0;\r\n             0 1 1 0 0 0 0 0;\r\n             0 1 1 0 0 0 0 0;\r\n             0 0 0 1 1 0 0 0;\r\n             0 0 0 1 1 0 0 0;\r\n             0 0 0 0 0 1 1 0;\r\n             0 0 0 0 0 1 1 0;\r\n             0 0 0 0 0 0 0 1];\r\nassert(isequal(repmatmid(A),B_correct))\r\n\r\n%%\r\nA = randi(100,42);\r\nB = repmatmid(A);\r\nC = diff(B,1,1);\r\nD = diff(B,1,2);\r\nassert(all(all(C(2:2:end,:)==0)))\r\nassert(all(all(D(:,2:2:end)==0)))","published":true,"deleted":false,"likes_count":3,"comments_count":0,"created_by":4793,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":37,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2013-08-29T15:52:15.000Z","updated_at":"2025-09-17T16:57:42.000Z","published_at":"2013-08-29T15:52:15.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\u003eGiven an MxN numeric array (A), return an array (B) in which the middle rows and columns have each been repeated once. It may be easier to think of this problem as two operations: (1) repeat the middle rows, and then (2) repeat the middle columns.\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 motivation for this problem is to create an array that, when used in\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eblockproc(B,[2 2],fun)\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, effectively incorporates a sliding window with 50% overlap. (NOTE: yes,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003enlfilter\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e will work on array A, but it requires that the processing output be a scalar, whereas\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eblockproc\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e does not)\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 may assume that M\u0026gt;1, N\u0026gt;1 (i.e. no scalars or vectors).\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=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIf\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[A = [1  2  3  4\\n     5  6  7  8\\n     9  10 11 12\\n     13 14 15 16]]]\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\u003eThen\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[B = [1  2  2  3  3  4\\n     5  6  6  7  7  8\\n     5  6  6  7  7  8\\n     9  10 10 11 11 12\\n     9  10 10 11 11 12\\n     13 14 14 15 15 16]]]\u003e\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":929,"title":"Rearrange coefficients after block based DCT transform.","description":"Two dimensional block-based discrete cosine transform \u003chttp://en.wikipedia.org/wiki/Discrete_cosine_transform#DCT-II (DCT-II)\u003e is a widely used spatio-frequency image representation for image and video compression.\r\n\r\nIf we use same-size blocks we can group coefficients into frequency bands.\r\n\r\nFor example, consider a following 8x8 image:\r\n\r\n    1 1 1 1 0 0 0 0\r\n    1 1 1 1 0 0 0 0\r\n    1 1 1 1 0 0 0 0\r\n    1 1 1 1 0 0 0 0\r\n    0 0 0 0 1 1 1 1\r\n    0 0 0 0 1 1 1 1\r\n    0 0 0 0 1 1 1 1\r\n    0 0 0 0 1 1 1 1\r\n\r\nIf we split it into four 4x4 blocks we have DCTs of zero-blocks equal to zero-blocks and:\r\n\r\n dct2([ 1 1 1 1\r\n        1 1 1 1\r\n        1 1 1 1 \r\n        1 1 1 1]) =\r\n  4 0 0 0\r\n  0 0 0 0\r\n  0 0 0 0\r\n  0 0 0 0\r\n\r\nwith the only non-zero element representing DC component and zeros representing AC components. \r\nWe want to rearrange coefficients so corresponding components from different blocks are grouped together.\r\n\r\nThe result will be:\r\n\r\n    4 0 0 0 0 0 0 0\r\n    0 4 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n\r\nFor a grayscale image (matrix) of size NxM and block size nxm (it is guaranteed that an image can be divided into blocks of this size) return NxM matrix grouped by frequencies (with DC components inside N/n x M/m block in the most top-left corner).","description_html":"\u003cp\u003eTwo dimensional block-based discrete cosine transform \u003ca href=\"http://en.wikipedia.org/wiki/Discrete_cosine_transform#DCT-II\"\u003e(DCT-II)\u003c/a\u003e is a widely used spatio-frequency image representation for image and video compression.\u003c/p\u003e\u003cp\u003eIf we use same-size blocks we can group coefficients into frequency bands.\u003c/p\u003e\u003cp\u003eFor example, consider a following 8x8 image:\u003c/p\u003e\u003cpre\u003e    1 1 1 1 0 0 0 0\r\n    1 1 1 1 0 0 0 0\r\n    1 1 1 1 0 0 0 0\r\n    1 1 1 1 0 0 0 0\r\n    0 0 0 0 1 1 1 1\r\n    0 0 0 0 1 1 1 1\r\n    0 0 0 0 1 1 1 1\r\n    0 0 0 0 1 1 1 1\u003c/pre\u003e\u003cp\u003eIf we split it into four 4x4 blocks we have DCTs of zero-blocks equal to zero-blocks and:\u003c/p\u003e\u003cpre\u003e dct2([ 1 1 1 1\r\n        1 1 1 1\r\n        1 1 1 1 \r\n        1 1 1 1]) =\r\n  4 0 0 0\r\n  0 0 0 0\r\n  0 0 0 0\r\n  0 0 0 0\u003c/pre\u003e\u003cp\u003ewith the only non-zero element representing DC component and zeros representing AC components. \r\nWe want to rearrange coefficients so corresponding components from different blocks are grouped together.\u003c/p\u003e\u003cp\u003eThe result will be:\u003c/p\u003e\u003cpre\u003e    4 0 0 0 0 0 0 0\r\n    0 4 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\u003c/pre\u003e\u003cp\u003eFor a grayscale image (matrix) of size NxM and block size nxm (it is guaranteed that an image can be divided into blocks of this size) return NxM matrix grouped by frequencies (with DC components inside N/n x M/m block in the most top-left corner).\u003c/p\u003e","function_template":"function out = block_dct2( img, n, m )\r\nNoBands = (size(img,1)/n) * (size(img,2)/m);\r\nout = img;\r\nend","test_suite":"%% test 1\r\nx = ones(16);\r\nfor N=2.^(1:4)\r\n    for M=2.^(1:4)        \r\n        y = block_dct2(x, N, M);\r\n        y_corr = [sqrt(N*M)*ones(16/N, 16/M), zeros(16/N,16-16/M); zeros(16-16/N,16)];\r\n        assert( norm( y_corr(:) - y(:)) \u003c 1e-10 );\r\n    end\r\nend\r\n%% test 2\r\nx = eye(16);\r\ny_corr = eye(16);\r\nfor N=2.^(1:4)\r\n    y = block_dct2(x, N, N);    \r\n    assert( norm( y_corr(:) - y(:)) \u003c 1e-10 );    \r\nend\r\n%% test 3\r\nx = double(invhilb(8)\u003e0);\r\ny = block_dct2(x, 2, 2);\r\ny_corr = [ones(4),zeros(4);zeros(4),ones(4)];\r\nassert( norm( y_corr(:) - y(:)) \u003c 1e-10 );\r\n%% test 4\r\nx = double(invhilb(4)\u003e0);\r\ny = block_dct2(x, 1, 2);\r\ny_corr = (sqrt(2)/2)*[1 1 1 1; 1 1 -1 -1; 1 1 1 1; 1 1 -1 -1];\r\nassert( norm( y_corr(:) - y(:)) \u003c 1e-10 );\r\n%% test 5 1x1 matrix\r\nx = 5;\r\ny = block_dct2(x, 1, 1);\r\nassert( abs(y - 5) \u003c 1e-10 );","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":6084,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":3,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2012-09-02T11:19:28.000Z","updated_at":"2012-09-02T15:46:33.000Z","published_at":"2012-09-02T15:27:38.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\u003eTwo dimensional block-based discrete cosine transform\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://en.wikipedia.org/wiki/Discrete_cosine_transform#DCT-II\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e(DCT-II)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a widely used spatio-frequency image representation for image and video compression.\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 we use same-size blocks we can group coefficients into frequency bands.\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\u003eFor example, consider a following 8x8 image:\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[    1 1 1 1 0 0 0 0\\n    1 1 1 1 0 0 0 0\\n    1 1 1 1 0 0 0 0\\n    1 1 1 1 0 0 0 0\\n    0 0 0 0 1 1 1 1\\n    0 0 0 0 1 1 1 1\\n    0 0 0 0 1 1 1 1\\n    0 0 0 0 1 1 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\u003eIf we split it into four 4x4 blocks we have DCTs of zero-blocks equal to zero-blocks and:\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[ dct2([ 1 1 1 1\\n        1 1 1 1\\n        1 1 1 1 \\n        1 1 1 1]) =\\n  4 0 0 0\\n  0 0 0 0\\n  0 0 0 0\\n  0 0 0 0]]\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\u003ewith the only non-zero element representing DC component and zeros representing AC components. We want to rearrange coefficients so corresponding components from different blocks are grouped together.\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 result will be:\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[    4 0 0 0 0 0 0 0\\n    0 4 0 0 0 0 0 0\\n    0 0 0 0 0 0 0 0\\n    0 0 0 0 0 0 0 0\\n    0 0 0 0 0 0 0 0\\n    0 0 0 0 0 0 0 0\\n    0 0 0 0 0 0 0 0\\n    0 0 0 0 0 0 0 0]]\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\u003eFor a grayscale image (matrix) of size NxM and block size nxm (it is guaranteed that an image can be divided into blocks of this size) return NxM matrix grouped by frequencies (with DC components inside N/n x M/m block in the most top-left corner).\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":1852,"title":"Repeat middle rows and columns of an array","description":"Given an MxN numeric array (A), return an array (B) in which the middle rows and columns have each been repeated once. It may be easier to think of this problem as two operations: (1) repeat the middle rows, and then (2) repeat the middle columns.\r\n\r\nThe motivation for this problem is to create an array that, when used in _blockproc(B,[2 2],fun)_, effectively incorporates a sliding window with 50% overlap. (NOTE: yes, _nlfilter_ will work on array A, but it requires that the processing output be a scalar, whereas _blockproc_ does not)\r\n\r\nYou may assume that M\u003e1, N\u003e1 (i.e. no scalars or vectors).\r\n\r\n*Example*\r\n\r\nIf\r\n\r\n  A = [1  2  3  4\r\n       5  6  7  8\r\n       9  10 11 12\r\n       13 14 15 16]\r\n\r\nThen\r\n\r\n\r\n  B = [1  2  2  3  3  4\r\n       5  6  6  7  7  8\r\n       5  6  6  7  7  8\r\n       9  10 10 11 11 12\r\n       9  10 10 11 11 12\r\n       13 14 14 15 15 16]","description_html":"\u003cp\u003eGiven an MxN numeric array (A), return an array (B) in which the middle rows and columns have each been repeated once. It may be easier to think of this problem as two operations: (1) repeat the middle rows, and then (2) repeat the middle columns.\u003c/p\u003e\u003cp\u003eThe motivation for this problem is to create an array that, when used in \u003ci\u003eblockproc(B,[2 2],fun)\u003c/i\u003e, effectively incorporates a sliding window with 50% overlap. (NOTE: yes, \u003ci\u003enlfilter\u003c/i\u003e will work on array A, but it requires that the processing output be a scalar, whereas \u003ci\u003eblockproc\u003c/i\u003e does not)\u003c/p\u003e\u003cp\u003eYou may assume that M\u003e1, N\u003e1 (i.e. no scalars or vectors).\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample\u003c/b\u003e\u003c/p\u003e\u003cp\u003eIf\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eA = [1  2  3  4\r\n     5  6  7  8\r\n     9  10 11 12\r\n     13 14 15 16]\r\n\u003c/pre\u003e\u003cp\u003eThen\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eB = [1  2  2  3  3  4\r\n     5  6  6  7  7  8\r\n     5  6  6  7  7  8\r\n     9  10 10 11 11 12\r\n     9  10 10 11 11 12\r\n     13 14 14 15 15 16]\r\n\u003c/pre\u003e","function_template":"function B = repmatmid(A)\r\n  B = A;\r\nend","test_suite":"%%\r\nA = randi(100,2);\r\nassert(isequal(repmatmid(A),A))\r\n\r\n%%\r\nA = magic(3);\r\nB_correct = [8 1 1 6;\r\n             3 5 5 7;\r\n             3 5 5 7;\r\n             4 9 9 2];\r\nassert(isequal(repmatmid(A),B_correct))\r\n\r\n%%\r\nA = reshape(1:16,4,4);\r\nB_correct = [1 5 5 9  9  13;\r\n             2 6 6 10 10 14;\r\n             2 6 6 10 10 14;\r\n             3 7 7 11 11 15;\r\n             3 7 7 11 11 15;\r\n             4 8 8 12 12 16];\r\nassert(isequal(repmatmid(A),B_correct))\r\n\r\n%%\r\nA = eye(5);\r\nB_correct = [1 0 0 0 0 0 0 0;\r\n             0 1 1 0 0 0 0 0;\r\n             0 1 1 0 0 0 0 0;\r\n             0 0 0 1 1 0 0 0;\r\n             0 0 0 1 1 0 0 0;\r\n             0 0 0 0 0 1 1 0;\r\n             0 0 0 0 0 1 1 0;\r\n             0 0 0 0 0 0 0 1];\r\nassert(isequal(repmatmid(A),B_correct))\r\n\r\n%%\r\nA = randi(100,42);\r\nB = repmatmid(A);\r\nC = diff(B,1,1);\r\nD = diff(B,1,2);\r\nassert(all(all(C(2:2:end,:)==0)))\r\nassert(all(all(D(:,2:2:end)==0)))","published":true,"deleted":false,"likes_count":3,"comments_count":0,"created_by":4793,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":37,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2013-08-29T15:52:15.000Z","updated_at":"2025-09-17T16:57:42.000Z","published_at":"2013-08-29T15:52:15.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\u003eGiven an MxN numeric array (A), return an array (B) in which the middle rows and columns have each been repeated once. It may be easier to think of this problem as two operations: (1) repeat the middle rows, and then (2) repeat the middle columns.\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 motivation for this problem is to create an array that, when used in\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eblockproc(B,[2 2],fun)\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, effectively incorporates a sliding window with 50% overlap. (NOTE: yes,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003enlfilter\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e will work on array A, but it requires that the processing output be a scalar, whereas\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eblockproc\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e does not)\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 may assume that M\u0026gt;1, N\u0026gt;1 (i.e. no scalars or vectors).\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=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIf\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[A = [1  2  3  4\\n     5  6  7  8\\n     9  10 11 12\\n     13 14 15 16]]]\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\u003eThen\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[B = [1  2  2  3  3  4\\n     5  6  6  7  7  8\\n     5  6  6  7  7  8\\n     9  10 10 11 11 12\\n     9  10 10 11 11 12\\n     13 14 14 15 15 16]]]\u003e\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":929,"title":"Rearrange coefficients after block based DCT transform.","description":"Two dimensional block-based discrete cosine transform \u003chttp://en.wikipedia.org/wiki/Discrete_cosine_transform#DCT-II (DCT-II)\u003e is a widely used spatio-frequency image representation for image and video compression.\r\n\r\nIf we use same-size blocks we can group coefficients into frequency bands.\r\n\r\nFor example, consider a following 8x8 image:\r\n\r\n    1 1 1 1 0 0 0 0\r\n    1 1 1 1 0 0 0 0\r\n    1 1 1 1 0 0 0 0\r\n    1 1 1 1 0 0 0 0\r\n    0 0 0 0 1 1 1 1\r\n    0 0 0 0 1 1 1 1\r\n    0 0 0 0 1 1 1 1\r\n    0 0 0 0 1 1 1 1\r\n\r\nIf we split it into four 4x4 blocks we have DCTs of zero-blocks equal to zero-blocks and:\r\n\r\n dct2([ 1 1 1 1\r\n        1 1 1 1\r\n        1 1 1 1 \r\n        1 1 1 1]) =\r\n  4 0 0 0\r\n  0 0 0 0\r\n  0 0 0 0\r\n  0 0 0 0\r\n\r\nwith the only non-zero element representing DC component and zeros representing AC components. \r\nWe want to rearrange coefficients so corresponding components from different blocks are grouped together.\r\n\r\nThe result will be:\r\n\r\n    4 0 0 0 0 0 0 0\r\n    0 4 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n\r\nFor a grayscale image (matrix) of size NxM and block size nxm (it is guaranteed that an image can be divided into blocks of this size) return NxM matrix grouped by frequencies (with DC components inside N/n x M/m block in the most top-left corner).","description_html":"\u003cp\u003eTwo dimensional block-based discrete cosine transform \u003ca href=\"http://en.wikipedia.org/wiki/Discrete_cosine_transform#DCT-II\"\u003e(DCT-II)\u003c/a\u003e is a widely used spatio-frequency image representation for image and video compression.\u003c/p\u003e\u003cp\u003eIf we use same-size blocks we can group coefficients into frequency bands.\u003c/p\u003e\u003cp\u003eFor example, consider a following 8x8 image:\u003c/p\u003e\u003cpre\u003e    1 1 1 1 0 0 0 0\r\n    1 1 1 1 0 0 0 0\r\n    1 1 1 1 0 0 0 0\r\n    1 1 1 1 0 0 0 0\r\n    0 0 0 0 1 1 1 1\r\n    0 0 0 0 1 1 1 1\r\n    0 0 0 0 1 1 1 1\r\n    0 0 0 0 1 1 1 1\u003c/pre\u003e\u003cp\u003eIf we split it into four 4x4 blocks we have DCTs of zero-blocks equal to zero-blocks and:\u003c/p\u003e\u003cpre\u003e dct2([ 1 1 1 1\r\n        1 1 1 1\r\n        1 1 1 1 \r\n        1 1 1 1]) =\r\n  4 0 0 0\r\n  0 0 0 0\r\n  0 0 0 0\r\n  0 0 0 0\u003c/pre\u003e\u003cp\u003ewith the only non-zero element representing DC component and zeros representing AC components. \r\nWe want to rearrange coefficients so corresponding components from different blocks are grouped together.\u003c/p\u003e\u003cp\u003eThe result will be:\u003c/p\u003e\u003cpre\u003e    4 0 0 0 0 0 0 0\r\n    0 4 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\r\n    0 0 0 0 0 0 0 0\u003c/pre\u003e\u003cp\u003eFor a grayscale image (matrix) of size NxM and block size nxm (it is guaranteed that an image can be divided into blocks of this size) return NxM matrix grouped by frequencies (with DC components inside N/n x M/m block in the most top-left corner).\u003c/p\u003e","function_template":"function out = block_dct2( img, n, m )\r\nNoBands = (size(img,1)/n) * (size(img,2)/m);\r\nout = img;\r\nend","test_suite":"%% test 1\r\nx = ones(16);\r\nfor N=2.^(1:4)\r\n    for M=2.^(1:4)        \r\n        y = block_dct2(x, N, M);\r\n        y_corr = [sqrt(N*M)*ones(16/N, 16/M), zeros(16/N,16-16/M); zeros(16-16/N,16)];\r\n        assert( norm( y_corr(:) - y(:)) \u003c 1e-10 );\r\n    end\r\nend\r\n%% test 2\r\nx = eye(16);\r\ny_corr = eye(16);\r\nfor N=2.^(1:4)\r\n    y = block_dct2(x, N, N);    \r\n    assert( norm( y_corr(:) - y(:)) \u003c 1e-10 );    \r\nend\r\n%% test 3\r\nx = double(invhilb(8)\u003e0);\r\ny = block_dct2(x, 2, 2);\r\ny_corr = [ones(4),zeros(4);zeros(4),ones(4)];\r\nassert( norm( y_corr(:) - y(:)) \u003c 1e-10 );\r\n%% test 4\r\nx = double(invhilb(4)\u003e0);\r\ny = block_dct2(x, 1, 2);\r\ny_corr = (sqrt(2)/2)*[1 1 1 1; 1 1 -1 -1; 1 1 1 1; 1 1 -1 -1];\r\nassert( norm( y_corr(:) - y(:)) \u003c 1e-10 );\r\n%% test 5 1x1 matrix\r\nx = 5;\r\ny = block_dct2(x, 1, 1);\r\nassert( abs(y - 5) \u003c 1e-10 );","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":6084,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":3,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2012-09-02T11:19:28.000Z","updated_at":"2012-09-02T15:46:33.000Z","published_at":"2012-09-02T15:27:38.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\u003eTwo dimensional block-based discrete cosine transform\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://en.wikipedia.org/wiki/Discrete_cosine_transform#DCT-II\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e(DCT-II)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a widely used spatio-frequency image representation for image and video compression.\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 we use same-size blocks we can group coefficients into frequency bands.\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\u003eFor example, consider a following 8x8 image:\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[    1 1 1 1 0 0 0 0\\n    1 1 1 1 0 0 0 0\\n    1 1 1 1 0 0 0 0\\n    1 1 1 1 0 0 0 0\\n    0 0 0 0 1 1 1 1\\n    0 0 0 0 1 1 1 1\\n    0 0 0 0 1 1 1 1\\n    0 0 0 0 1 1 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\u003eIf we split it into four 4x4 blocks we have DCTs of zero-blocks equal to zero-blocks and:\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[ dct2([ 1 1 1 1\\n        1 1 1 1\\n        1 1 1 1 \\n        1 1 1 1]) =\\n  4 0 0 0\\n  0 0 0 0\\n  0 0 0 0\\n  0 0 0 0]]\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\u003ewith the only non-zero element representing DC component and zeros representing AC components. We want to rearrange coefficients so corresponding components from different blocks are grouped together.\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 result will be:\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[    4 0 0 0 0 0 0 0\\n    0 4 0 0 0 0 0 0\\n    0 0 0 0 0 0 0 0\\n    0 0 0 0 0 0 0 0\\n    0 0 0 0 0 0 0 0\\n    0 0 0 0 0 0 0 0\\n    0 0 0 0 0 0 0 0\\n    0 0 0 0 0 0 0 0]]\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\u003eFor a grayscale image (matrix) of size NxM and block size nxm (it is guaranteed that an image can be divided into blocks of this size) return NxM matrix grouped by frequencies (with DC components inside N/n x M/m block in the most top-left corner).\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:\"blockproc\"","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:\"blockproc\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"blockproc\"","","\"","blockproc","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007faf50aa79e8\u003e":null,"#\u003cMathWorks::Search::Field:0x00007faf50aa7948\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007faf50aa7088\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007faf50aa7c68\u003e":1,"#\u003cMathWorks::Search::Field:0x00007faf50aa7bc8\u003e":50,"#\u003cMathWorks::Search::Field:0x00007faf50aa7b28\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007faf50aa7a88\u003e":"tag:\"blockproc\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007faf50aa7a88\u003e":"tag:\"blockproc\""},"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:\"blockproc\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"blockproc\"","","\"","blockproc","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007faf50aa79e8\u003e":null,"#\u003cMathWorks::Search::Field:0x00007faf50aa7948\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007faf50aa7088\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007faf50aa7c68\u003e":1,"#\u003cMathWorks::Search::Field:0x00007faf50aa7bc8\u003e":50,"#\u003cMathWorks::Search::Field:0x00007faf50aa7b28\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007faf50aa7a88\u003e":"tag:\"blockproc\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007faf50aa7a88\u003e":"tag:\"blockproc\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":1852,"difficulty_rating":"easy-medium"},{"id":929,"difficulty_rating":"medium"}]}}