Guest User

Untitled

a guest
Feb 20th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.35 KB | None | 0 0
  1. public static class ArrayUtilities
  2. {
  3. public static void Shift<T>(T[,] array, int x, int y)
  4. {
  5. ShiftHorizontal(array, x);
  6. ShiftVertical(array, y);
  7. }
  8.  
  9. public static void ShiftHorizontal<T>(T[,] array, int x)
  10. {
  11. while (x != 0)
  12. {
  13. var a = Math.Sign(x);
  14. switch (a)
  15. {
  16. case -1:
  17. ShiftLeft(array);
  18. break;
  19. case 1:
  20. ShiftRight(array);
  21. break;
  22. }
  23. x -= a;
  24. }
  25. }
  26.  
  27. public static void ShiftVertical<T>(T[,] array, int y)
  28. {
  29. while (y != 0)
  30. {
  31. var a = Math.Sign(y);
  32. switch (a)
  33. {
  34. case -1:
  35. ShiftUp(array);
  36. break;
  37. case 1:
  38. ShiftDown(array);
  39. break;
  40. }
  41. y -= a;
  42. }
  43. }
  44.  
  45. public static void ShiftLeft<T>(T[,] array)
  46. {
  47. for (var y = 0; y < array.GetLength(1); y++)
  48. {
  49. var end = array[0, y];
  50. for (var x = 0; x < array.GetLength(0) - 1; x++)
  51. {
  52. array[x, y] = array[x + 1, y];
  53. }
  54. array[array.GetLength(0) - 1, y] = end;
  55. }
  56. }
  57.  
  58. public static void ShiftRight<T>(T[,] array)
  59. {
  60. for (var y = 0; y < array.GetLength(1); y++)
  61. {
  62. var end = array[array.GetLength(0) - 1, y];
  63. for (var x = array.GetLength(0) - 1; x >= 1; x--)
  64. {
  65. array[x, y] = array[x - 1, y];
  66. }
  67. array[0, y] = end;
  68. }
  69. }
  70.  
  71. public static void ShiftUp<T>(T[,] array)
  72. {
  73. for (var x = 0; x < array.GetLength(0); x++)
  74. {
  75. var end = array[x, 0];
  76. for (var y = 0; y < array.GetLength(1) - 1; y++)
  77. {
  78. array[x, y] = array[x, y + 1];
  79. }
  80. array[x, array.GetLength(1) - 1] = end;
  81. }
  82. }
  83.  
  84. public static void ShiftDown<T>(T[,] array)
  85. {
  86. for (var x = 0; x < array.GetLength(0); x++)
  87. {
  88. var end = array[x, array.GetLength(1) - 1];
  89. for (var y = array.GetLength(1) - 1; y >= 1; y--)
  90. {
  91. array[x, y] = array[x, y - 1];
  92. }
  93. array[x, 0] = end;
  94. }
  95. }
  96. }
Add Comment
Please, Sign In to add comment