这项挑战与翻转薄煎饼有关。
您可能听说过煎饼分类,将一叠煎饼按大小分类,方法是将锅铲插入堆栈中,然后将所有煎饼翻转到锅铲上方,直到煎饼在盘上从最小到最大被分类。煎饼烧焦的问题略有不同。现在,所有薄煎饼的一面都被烧过,一旦分类完成,每个薄煎饼的烧过的一面必须面对盘子。
例如,给定以下堆栈(左侧的煎饼大小。右侧0
为糊状,右侧1
为糊状):
1 0
3 1
2 1
您可以翻转整个堆栈以获取20 30 11
,翻转前两个31 21 11
堆栈以获取10 20 30
,然后再次翻转整个堆栈以获取,是一叠烧焦的煎饼。翻转3,翻转2,翻转3的移动顺序可以表示为3 2 3
。
挑战
- 给定一组煎饼的大小(不一定是唯一的)和它们的方向,输出任何有效的烧饼分类顺序,即一系列翻转,导致从薄饼到烧饼的面朝下从最小到最大的顺序排列。
- 输入和输出可以是任何带有分隔符的理智的格式,但是请指定要使用的格式,并指出输入格式的哪一端是堆栈的顶部(TOS)。
- 允许翻转零煎饼。
- 允许在输入/输出中混合分隔符。
测试用例
对于以下所有测试用例,输入是一个列表,输出是一个用空格分隔的字符串,TOS在左侧。
[[1, 0], [3, 1], [2, 1]]
"3 2 3"
[[5, 1], [3, 0], [4, 1], [2, 1], [1, 0]]
"5 3 4 1 3 2 1"
[[5, 1], [3, 0], [3, 0], [1, 1]]
"4 3 2 3"
与往常一样,如果有任何不清楚或不正确的地方,请在评论中告知我。祝你好运,打高尔夫球!