Advertisement
Guest User

Untitled

a guest
Dec 14th, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApp1
  8. {
  9. class Program
  10. {
  11. private static List<List<int>> cornerPossibilities = null;
  12. private static List<List<int>> trianglePossibilities = null;
  13.  
  14.  
  15. static void Main(string[] args)
  16. {
  17. SetupCornerPossibilities();
  18. SetupTrianglesPossibilities();
  19.  
  20. var blocks = new List<bool> { false, true, false, true, true, false, false, false, false };
  21.  
  22. var foundCorners = HasCornerPossibility(blocks);
  23. var foundTriangles = HasTrianglePossibility(blocks);
  24.  
  25. if (foundCorners != null)
  26. {
  27. // do stuff 1
  28. }
  29. else if (foundTriangles != null)
  30. {
  31. // do stuff 2
  32. }
  33. }
  34.  
  35. private static List<int> HasCornerPossibility(List<bool> blocks)
  36. {
  37. return HasPossibility(blocks, cornerPossibilities);
  38. }
  39.  
  40. private static List<int> HasTrianglePossibility(List<bool> blocks)
  41. {
  42. return HasPossibility(blocks, trianglePossibilities);
  43. }
  44.  
  45. private static List<int> HasPossibility(List<bool> blocks, List<List<int>> possibilities)
  46. {
  47. foreach (var possibility in cornerPossibilities)
  48. {
  49. var scopedBlocks = GetByIndexes(blocks, possibility);
  50.  
  51. if (scopedBlocks.All(b => b))
  52. return possibility;
  53. }
  54.  
  55. return null;
  56. }
  57.  
  58. private static IEnumerable<bool> GetByIndexes(List<bool> blocks, List<int> indexes)
  59. {
  60. // stackoverflow magic
  61. return blocks
  62. .Where((element, index) => indexes.Contains(index));
  63. }
  64.  
  65. private static void SetupCornerPossibilities()
  66. {
  67. cornerPossibilities = new List<List<int>>
  68. {
  69. new List<int> { 1,3,4 },
  70. new List<int> { 3,4,6 },
  71. new List<int> { 4,5,7 }
  72. };
  73. }
  74.  
  75. private static void SetupTrianglesPossibilities()
  76. {
  77. trianglePossibilities = new List<List<int>>
  78. {
  79. new List<int> { 7,3,1 },
  80. new List<int> { 3,7,5 },
  81. new List<int> { 3,1,5 },
  82. new List<int> { 1,5,7 }
  83. };
  84. }
  85.  
  86. }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement