Advertisement
Equd

Day 05

Dec 6th, 2022
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.26 KB | None | 0 0
  1. var data = @"
  2.    [D]
  3. [N] [C]    
  4. [Z] [M] [P]  
  5. 1   2   3
  6.  
  7. move 1 from 2 to 1
  8. move 3 from 1 to 3
  9. move 2 from 2 to 1
  10. move 1 from 1 to 2"
  11. .Split('\n').Skip(1).ToArray();
  12.  
  13.  
  14. data = File.ReadAllLines(@"F:\input.txt");
  15.  
  16.  
  17. var stackCount = int.Parse(data.SkipWhile(z => z.Trim()[0] == '[').First().Trim().Split(' ').Last());
  18.  
  19. var stacks = Enumerable.Range(0, stackCount).Select(z=> new Stack<char>()).ToArray();
  20.  
  21.  
  22. foreach (var line in data.TakeWhile(z => z.Trim()[0] == '[').Reverse())
  23. {
  24.     for(int i = 0; i + 2 < line.Length; i += 4)
  25.     {
  26.         var c = line[i + 1];
  27.         if(char.IsLetter(c))
  28.             stacks[i / 4].Push(c);
  29.     }  
  30. }
  31.  
  32. stacks.Dump();
  33.  
  34. var moves = data.SkipWhile(z => string.IsNullOrWhiteSpace(z) == false).Skip(1);
  35.  
  36. var q = new Stack<char>();
  37.  
  38. bool p1 = false;
  39.  
  40. foreach (var line in moves)
  41. {
  42.     line.Dump();
  43.     var split = line.Split(' ');
  44.     var amount = int.Parse(split[1]);
  45.     var from = int.Parse(split[3]) - 1;
  46.     var to = int.Parse(split[5]) - 1;
  47.    
  48.        
  49.     while(amount-- > 0)
  50.     {
  51.         var c = stacks[from].Pop();
  52.         if(p1)         
  53.             stacks[to].Push(c);    
  54.         else
  55.             q.Push(c);
  56.     }  
  57.    
  58.     while(p1 == false && q.Any())
  59.         stacks[to].Push(q.Pop());
  60.    
  61.     //stacks.Dump(line);
  62. }
  63.  
  64.  
  65. new string(stacks.Select(z => z.Pop()).ToArray()).Dump();
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement