Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var data = @"
- [D]
- [N] [C]
- [Z] [M] [P]
- 1 2 3
- move 1 from 2 to 1
- move 3 from 1 to 3
- move 2 from 2 to 1
- move 1 from 1 to 2"
- .Split('\n').Skip(1).ToArray();
- data = File.ReadAllLines(@"F:\input.txt");
- var stackCount = int.Parse(data.SkipWhile(z => z.Trim()[0] == '[').First().Trim().Split(' ').Last());
- var stacks = Enumerable.Range(0, stackCount).Select(z=> new Stack<char>()).ToArray();
- foreach (var line in data.TakeWhile(z => z.Trim()[0] == '[').Reverse())
- {
- for(int i = 0; i + 2 < line.Length; i += 4)
- {
- var c = line[i + 1];
- if(char.IsLetter(c))
- stacks[i / 4].Push(c);
- }
- }
- stacks.Dump();
- var moves = data.SkipWhile(z => string.IsNullOrWhiteSpace(z) == false).Skip(1);
- var q = new Stack<char>();
- bool p1 = false;
- foreach (var line in moves)
- {
- line.Dump();
- var split = line.Split(' ');
- var amount = int.Parse(split[1]);
- var from = int.Parse(split[3]) - 1;
- var to = int.Parse(split[5]) - 1;
- while(amount-- > 0)
- {
- var c = stacks[from].Pop();
- if(p1)
- stacks[to].Push(c);
- else
- q.Push(c);
- }
- while(p1 == false && q.Any())
- stacks[to].Push(q.Pop());
- //stacks.Dump(line);
- }
- new string(stacks.Select(z => z.Pop()).ToArray()).Dump();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement