["..H$ ","!_flattened array","HUGVkFlattened UL index computationkGGUL[(Y coordinate * width)U`X coordinate]GGk2D UL index computationkGGUL[Y coordinate, X coordinate]kGGU8U7UIU9U+G{GHU$H{GHHUQ (true)GHH{GHHHU%kVEnter height: [4+]Vk);GHHHUZheightU_Ub.Parse(Console.UYLine())UIHHHU%kVEnter width: [10+]Vk);GHHHUZwidthU_Ub.Parse(Console.UYLine());kGGHHH//GHHHUcA. TWO-DIMENSIONAL ARRAYGHHH//GHHHkUb[,]k twoDimensionalU_UXUb[height, width];kGHHHUcAssign cell 1, 6GHHHktwoDimensional[1, 6]U_5;kGHHHUcAssign cell 3, 9GHHHktwoDimensional[3, 9]U_9;kGHHHUcAssign cell at 2, 3GHHHktwoDimensional[2, 3]U_1;kGGHHHUcU.GHHHkUV(UZiU_0; i < height; i++)GHHH{GHHHHUV(UZaU_0; a < width; a++)GHHHH{GHHHHHConsole.UK(twoDimensional[i, a]);GHHHH}GHHHHU%);GHHH}GHHHU%);kGGHHH//GHHHUcB. FLATTENED ARRAYGHHH//GHHHkUb[]k oneDimensionalU_UXUb[width * height];kGHHHUcAssign cell 1, 6GHHHkoneDimensional[1 * widthU`6]U_5;kGHHHUcAssign cell 3, 9GHHHkoneDimensional[3 * widthU`9]U_9;kGHHHUcAssign cell at 2, 3GHHHkoneDimensional[2 * widthU`3]U_1;kGGHHHUcU.GHHHkUV(UZiU_0; i < height; i++)GHHH{GHHHHUV(UZaU_0; a < width; a++)GHHHH{GHHHHHConsole.UK(oneDimensional[i * widthU`a]);GHHHH}GHHHHU%);GHHH}GHH}GH}G}kPossible outputkGGEnter height: [4+]G4GEnter width: [10+]G10G0000000000G0000005000G0001000000G0000000009GG0000000000G0000005000G0001000000G0000000009GGEnter height: [4+]G5GEnter width: [10+]G15G000000000000000G000000500000000G000100000000000G000000000900000G000000000000000GG000000000000000G000000500000000G000100000000000G000000000900000G000000000000000GGEnter height: [4+]G6GEnter width: [10+]G12G000000000000G000000500000G000100000000G000000000900G000000000000G000000000000GG000000000000G000000500000G000100000000G000000000900G000000000000G000000000000k","A(AErCXPF#~CEE(| 8G56666G56666+CP#C","Flatten array."," A multidimensional array can be flattened. Its dimensions are reduced to one. This transformation yields a single-dimensional array\u2014one that is simpler and faster. Flattened 2D arrays are also ideal for interop with other languages. ","Intro."," A 2D array is accessed with a Y and then X position. For rectangular arrays (including all 2D arrays and many jagged arrays) you can use a single array. You multiply the first coordinate by the width, and then add the second coordinate. ","Advantages: ","The advantages of using a flat array are improved performance and interoperability with C++ or other languages.","To use a jagged array, you must have an array of references to arrays. 2D arrays have significant performance penalties.","2D Arrays ","2d","Jagged Arrays ","jagged-array","Example."," This example creates, assigns to and finally displays a 2D array and its equivalent flattened array. It is contained in a console program with a simple command-line interface. Specify a height of at least 4, and a width of at least 10. ","The example"," has some complexity. Part A shows the 2D array with traditional syntax. Part B shows the flattened 1D array. Notice how we use multiplication always when accessing the oneDimensional flat array. ","Next: ","We see some output from the program that demonstrates how the multiplication results in correct output.","Summary."," We can create, assign values to, and display flattened arrays. This is useful for performance, memory reduction, and interoperability with other systems. In every application I have applied this technique, performance has improved. ","Flattened arrays are ideal for hashtable bucket implementations as well as certain tree structures."]

%iVBORw0KG;)NSUhEUg?ANY)3CAM?ABHJUQ7)MFBMVEX::7/f7y/f+38v:6en/1dX/tbX/xcXl+v/U9:G9f:qKiq8P+U7P+e7v:lJQSDb6d?AEaklEQVR4Xt2Z27KiMBBF050bN/X:3aQiBvZoeMZHoYz+8myKYtFeuWCDomfcY30n3EXTXh8xtnp7p+5KlbcYYXGYE1rCpZeFCvtsBpdOPiSFe6qXfjYJTWwlgBt+AVqteXSfgnQ/MXVSl/Jpd2Svu/6oUQvrVZ24zdy6RrXlUHrr4mFMcosV2Pc+jnXxArAioZcRj/qldUaPwjtSEzPi0RnMFWpFrcJIea0qpvyZ1GEfn77laieU8tZcm2IQ17ZRVXFKurzi1VZZAzLWEu56G13XN0VPO3ktNvZ628lvUP6W4mHWkBhuRgrJDA4ETGLQusHCERFSgvDafwknvaMNXRbrAEIhDqwWo7lYiw8+tAsLsyMheF8Um3Jq90hM5ZXh3QvhLtDbq90rJYpV+3G7KKNlYo2i5nCToO0YA0OkZVBifRWUYvkOoFFHVoFL/bBbzgNtQrWpIZctlok11ksfWGllOKcMCfDrtdw7SBKALpiddX5gUFZLVMuaqK43LlRLB22T6xgQS5Wa8XqDbkMtYjSwsrhxaNyUFzXNEcZ0fUL+o6C1HK6YEGuDYU21aKeJCwwoaAq9aKUHQgNF83m1HN0UcHy1so12GoBMx1hZdnte7mI/WLXMRY8qn9JU9dCBayaXJOhli1XvTu103pxhlqwXBurIpeQWndgcdMJmpLVYs42lhxhPY8sNSzMhcn4eVILWDRF0BRCallyHeCWNuPi8AywQsRed4dFcrFaHlgkV0stksvAkjaW908sLVv68cFJhnGkFrBYLlstastjLEFBD7A8sIzdU02uulo7LIVchlqP9M5IpIyl2j3dKfaohSVExVgsV9gYr1Usd3/LBbUmqHWcaGAtFs/xQ3+ANc1Y5XXA2MJiufLGeJ2pgFWRC2oNEOY4+RjrSdXCWmtxA7LsC2HRoVxQq2BNwCK5DLU4LBe1+3T/Civtl2rCIrnkozOKWpjlSK6KWlZCC+tuN2FRawQFY9XlglqMxXKxWtnEiuexeAlhLJZrq5bTwQOrJtdeLdg8pm1ILsIqE6EvC66FxSXG4pVlhKkL1gQslmt6q9XZG6XMcrE+iJzDYrneH2TFmqlWLJbr/UH2agk9NiI4jZVbWLDw47F2dSzMf/5IrfHgsUULCzFmQlmVQS0kPiOw6VCr9wXr7hBsBBFWKxvn13NYur3ZGGJODyRL+0/RdXJ63raQXIipFst1HiuaSwjLhQh2TrhxlqupFst1AgsLl43FcsE9wiK5EG+oRXKdwPpiuIIhF3ZOwLLk6ltqASH/Pdb9NVzmoh8suXAoYSyWC8X0CtuSUwmwrKudVIoz07C+ognb7hpzCKmOJTgY4bzfa+dvVSzxc96d6P5BQiyPKYZCEmLkR8TLmqis/8L7OeoQ3slfO5m8NjNArSuHNbVzx6HkwuG38XYUr9IuHajF+cVqpZ+p5f9PtW7/pVrdL1EL5/2vgvP+tTP+TK3pd6gVfqaWXlwtfk1jhl/TXDsxlcQvsXxJ75A/ZMHNEnLfXgI)ASUVORK5CYII=%iVBORw0KG;)NSUhEUg?AIw?ACICAM)Cj/Ma)GFBMVEW87/XI8vf5/v7X9vrz/f/n/P/s/P::8eJxHv?AEG0lEQVR4Xu2c227jMAwFeZP0/3+82ASFW5yapA8C1UDC51oekxyldanIomMWsS4HAWNaxHjGHhgpYifM6sHMW8DoVhhtwcQbwngO4zeEsT0w4wNzErO35+2BiTvBGLcB8zD8FqzvDKMNmHhLGM9g/IYw9kKY2AETFYw/VrF0tdGASSH893sI3ue/lDP1YRIbMNxjov+CooiveG4Vlnwe0DDmIqI2oZgA44ediRIm/KdB6HfnRgJjhxLpmvwG7AczPq6gJj+TYyRMkpbT1MhpL3hSKi1horRwILXgPaBUhjDMBmz+kxpTLwjeKJUTe17o79gTYMAR6GMCpuBXUFbyOyiUioMxPece?M7WdrHo7HnlT+Pegto3SnVvARj1dI?+tnfRxtGOzcRG8BWzulsgpmNsxDvQW17vRxcwPGzk31lt6rMT2S04KJk+Lnegu42upjbcFYf9kDBrQu+1gL5sDOlVpvgQdt9bEXMIbZbugt0L2tPq5hsHNrvQW0bpWqhIHO7egtkM88vIBJYGu9BbQuQjswIFtPbwGty/AUBkn7egto3aNJ/Ac123oLal2HJjDgWVvvGWIuRPgZTFNM/KyZT5tsqOwORDl24KE3QDneQsw/wdGzX8jD/woFYPbj+EOg7A9/34pixZsrG7pRoBQG1NqHgjCEWrRAJQyrFo+CMDwOL1ANQ6jFClTDsGrxAtUwvFo8CsKUavEoQYwfEGoRArEw2Mu8QDwM4vAC0TB8L6NAVYV4GPPraUlxeJhwsndHYjUHM5W3uo8jfLfwODyMAQqNEywMrzTfy9Lo2m04sgGlrZYUAm3FEV6g16slvECvV0tIgfjQc7WEF+j1ask+lFotSQTajiM9gfaoJR2BdqklpUAb1ZJCoK1qCYeiyatXGmeKcU9z6ojyZpmsQV17viyR6KNMS5nnyNZVLjEPmyZT4fQhnUrM0ya/XN7IYYbrZZ3ml9oXL5y2RmFG+OXu/dr0/Fpa8AqEQdw6MU8Y0wsstjowFxcd3/+r0i/ReoRWMO2E4/jB0naJACYZzAhta/0dJrqde21KxLyfmANmea9EfZj+gQkc5rFm5z7D+pNFph2tf8Isb6SFG3PyUmscANNG5/YHwAyGrhKtEWZm8Aajbj2YvI+ToUHNStSG8VHSo9YIE1WJ+m2A14RmWiPM8mRzIWHS1dMRXOukhR/BnZpoDTBrnGwuEEpNSpsnWgPM0qxzeRi0ELVGmAklYgfaRzJbD1ono/7QucSoP8DAHQyQAeaht8aKJC3EIQjsY1trgh2C4G5rrUNo8niIpa+WH6wxq/EDHauMQcEcMZR6Q86f4rF7n/z6wNzq6OI7w0gWeo+DwJ8j0rOA+Zzxv/tXMXxg7v/FJh8YKeJtvyYoKhhbRLA2WRGLjX+NNAFPXyaxJw)BJRU5Er@ggg==%iVBORw0KG;)NSUhEUg?AG4?ACCAgM?ADasxWR)DFBMVEX/6Nn:/+VlZX29va5ksB5)SElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOS?LWyrsxEHLD)AElFTkSuQmCC%iVBORw0KG;)NSUhEUg?AJY?ABoCAM)kR/m5)GFBMVEX:/9fnOnZ5fmFse3q8Pupx/LE2PY6i+Z4iByf?AC+0lEQVR4Xs3azY7DMAgEYP55/zfeY7VK23GGJg73Wp8MNlaK3B1hVZWZVRbyhIhK1/4X6mmbRf0pvHaILF37e2jems+XCEbeJKrUPhNaWwoJh28R4dDYUEhbXIEAvGs/q/WZrPZnsrqeyerYypqnMczM4i5W27m3iHrahKWemenT7bJU0OvXWZ6v7S7lqytST/X6OJOYIl8T5qBFzFhizJ0aKP81YmGXARRw8Sypk1ms9UN8ZKmvssTPnMVwsqVGe1ZIANZiGsFWnT4t6yzx5QaUROuiWQVr9+jHkVOW6NLioX0qxiwHLErVNWUVYFGq9ikrwNqUqnXKEsCiVN1jliIWo+qYshywvJmwKSu/s7KpqGtZ9dGcZWHl97NSJOCHHdvBkoK9pe5m1fvdUFs4ynYt69h4PFYWiOtY8e7152sLyHWsd+3c1xZQuew61Td0XVzAr2P58bhpLHav/FFPREubfirkAhVPshbbWmh3rbZ6leveW4ds5/KJyTGriE828OcyZuXoO6WBqqRZPvlMGQpuFpoFckioumgWLq2iVS40C+cQq0xRc+BZ/D+LBlPCs4ou+MLJ51mKCp5X8Sx+sxLkfsZSsrIcqGasJDfLQQZnLOP6TgDVkBVcvYeC1TkWfv8Fo1KTAQunootShQxYOBWdjMpDRiz8PYRS.7MKv2tKmXOslR2BELPFKNlLLIKTLkAla+qrFxfyQEsHM6o7P18z+9YLozqKGJZTOEmULm+PBSLuqULqESHf/ZS92EAFWDBAS6y+esXFWaF0ieQKPeSVRaFMgFRWMWz+AeJ;MLWdxOMSl0GbHmY7mFVTyLH2LWheZp1XNWKzDB690OXXDM8rTpAF0eRCOWegWE4HpXMFIOWNysPu5jDkSI9RKFcAF2hGV5Vggf1T9nKRTh0J+y1Mvum2PFLFDau1igtO9mgdjC8ngCC5y2Xaz5aZuz0LW9n8Vf2zxrvwizcCHtZ6nnBhF+kWwM/CLZz9LtIvAi2RXgRbKdZSHPiz+CLM1kMu7KU)ABJRU5Er@ggg==%iVBORw0KG;)NSUhEUg?AK)CFCAM?ADrcAOa?ABgFBMVEU?AD:/9hY2IbHRqiqJZ7g3iPlIzu+9v6/ejz/ebv/N3+/vbn+s31/ej+/u/q7PT8/vP:vL4/M77/dtOUU64vp/7/frFx74uMSzc9dr3/fG4s879/OTI0OXN8sPy9PnI8Lzx+/Cn2Mzo+9jbxNbk6PPqycz77tP7/dTw/Mv26ej88t357uu/x+Lb+b3DzeKcweLE77zW3Oz99+vFvMf779bJ96j7/u/U1NTk+ce4w97f4N82PS89OkD4+fk+SD/C2afa4e3b5MTl6tnq8Nzq+ern1eX99OPK7ML:O/55LjV2cPw8fjw5e/M9rzr3+qq7MfT9s3x3t/L5uWw7M7k+ODE3trizNv4+8blv8PP+LDV6+rTtszH8Lqt2c/y2s7HrtWhx9zC8rG13tO37tK/8a33/Mud6Mrn/bv2+8SfzNr79PL9+O389vXy9Lzj8uL558Gi6sTlu771+73Qscn++/Hu09XOstLQ7sr44bDB88rCqdXm6rf19NbP+aX33KQ7zRWn?AGGklEQVR4Xu3bVXPrOBiAYRnDzFxmZmY8yMzMsMjw11eq9bmOJW3TZHuiOeP3JpPJzTOfLVV1UxRNRK1C7uJ+YQFuQR+v7kVuY87Cvm5RKBFKWIWY5uPx+DwXGOEWCPLytQiMJkTA+DzOzwcGOEUCPuJxFez+akAP6AE9oAf0gNs53VDX8xpCSNNW06ph6pncwk6xGIm0HxjJmauIn5Y2zJnlYrwYbB9wR8+jkzIVRSm2BxjQNYQkBp5fB0PaLC0sb49E/JGdne3zuYxuGqo9Wr1dwAwFqDM1JTvPrmLfFl47aQ1lsooSEQFXVlZWF7LZbhZIPwk2DdQtnrGsKCHMAyDT1nbAFxAuEoRbUBQOkH4SaBJIfWnMU+ab2AfPHJizxreGxwc6qYDbGtz+cb+UQBX2D5gfACNsBMjJ1yKw7C9b+aP+uqLlVCpDfGoW+5J1DYY5dYdJi0xORth2uYFBIVCUP5UcJBug1osHmBysK7zI8MB2hkC/C1hOZuAG9Nf7XoX5nS3Q7ypaHlCxL79GBuhqUNwbfpQxKPwk4OOHUuXUUWWm1BYMMOCaSfgqvyp++ZXpgEQZhQMmCvxc4IcGoJQ7n0mAMQwcc/f7DU4vblzBPWLqIlHGrS4mCrx/nR+iMOxjgGSJqNhXZIEvuBHmc6YuogQg628aaF3hGQzslhJIN8ELcIUlBBrYl4YrLCNwhZ6SA5IC/7JvQUmB5wmQHAMXZQTCGlmDNSIh0MS+VezLy;0YJuWFZjGQAMWcRPAddRsNUVpBJinJ4WgrECEK8EuIyFwhwBzLQDVdFo9jgDgPST65MLaWgPALbq6lHCbFwmA+Pv0GQK7GgQmBWUAOHaPbfL1FV7fiQ+sjU7wvjv09g6/DByn780x/X3l9XeiuphcQBjfcx7wPhO60wYg1BJQpwteXiCcFeZkBirSAT0ggOUFQg0D3wqygc/Y5h69E1biRxm3Z5;8PLeUfjFCt42CZx4ymti4unEH/woo+dHuwc0Cty7TdpjahHI1ijwAQQT/DaBNQx8KCkwIz0QDguXZAb2SgzcgANrVWbgAgZelRT4JwHmJAZ+gqdvBdmAkEafLNw8AyCpUeAPotYx0CTAl0xzXU0DqQrzemh1h4XLTGKgSp9u7Z4G+O4Y2NKThYt2YqCJgesYWGwSuNrKs5lGgDrCZbFQVqC9U3dICvxkb4TNAe2ekOBE/QDqcS2Si3skYDUCvLMCy1hWoEr/0tQpK9B+tvBMUuCGfRNKChxboc/5d2UFGhio1eAaywOExjbgOwuF1oDOw8IvUA:Z/FpJvjmZRoD81lFyZ7iNPOE6cgDE7wL9d3us4IJXiNdHKrT4bfoFZR0NbA4qSNchmyFHXVdGl8S9j3TkYcyvvwDnYMocLifNLzvDoBsGDhJlokWwyOstgs4/J/ADh3RM1enpMCONIJztaTADc0Wygm0LjIysyCUDIgzEUldxvdhVTrgQ5KBjjJjeIjVh0dxgaXS0tL4KAUyUcY5G/gb5AIO1wVAwT5ozctEVkZuTeksVMkEby2NHrdU0k01rSG9llU2R+8yObfjL7brC0SBRDY7u+9qeh8lRQ2EJ6tWmTwlaqo5s7D8uXD1eqUyvlTCMMNQV53fRO+t9DH9TKKMfts1C0OiwA/TpA/uphsBVg8MDdWlib7LH2scCAHQmhh2OjsRCG0AUZyGgdk2AKEDXWjUVEPPLcd6p6YqlfYAoQ3dUNN5y6nlrX/JKY1PbW5OVcZJFT6Q9hhsALTrx4sB1zoQunRrdJxJSqAH9IAe0AN6QA940om6gxcGcrLQbt5dAPY9PuesH6o76QPMAUxBZXfBgrDNKW6buGvChmad7Tv78JMVvDpCcVGJ4q6ozpi4Eab3ViPTZWdRZ4mQMDQvKhq5KRTGeoUNMVHn0Egd8LCuUMLqlEAcH9jbFDAlBiaaAXbunnKCMRLHB4knmBBOMGED4+5CxU5htQu8aqT37j7aRROijj1MxxM8A6BLeHgsOmwNCKu4USB0EtDZNwL0gB7QA3pAD+gBPaAH9IAeMP7:k7ykYIgx9uEsJBIGPoqEwTpYV0J5zjFE/wXzd93x5vnhJo)ASUVORK5CYII=!