Python: 每日一题 54

2017-11-27 13:41:00
六月
来源:
http://bbs.fishc.com/thread-87693-1-1.html
转贴 467
这个题目里面,你会给到一个二维矩阵,表示的一倍混合的液体。根据液体的密度进行排序,使得液体按照密度进行分层。
首先,给出密度表:
  1. =======================
  2. |   Density Chart    |
  3. =======================
  4. | Honey   | H | 1.36 |
  5. | Water   | W | 1.00 |
  6. | Alcohol | A | 0.87 |
  7. | Oil     | O | 0.80 |
  8. ----------------------
复制代码

  1. [                                 [
  2. ['H', 'H', 'W', 'O'],              ['O','O','O','O'],
  3. ['W', 'W', 'O', 'W'],  =>          ['W','W','W','W'],
  4. ['H', 'H', 'O', 'O']               ['H','H','H','H']
  5. ]                                  ]


杯子可能有大有小。如果,液体不能充满一层,那么它应该处于比较偏上偏左的位置(If a liquid doesn't fill a row, it floats to the top and to the left.)。

重点来了,请你仔细看下面的测试里面提供的函数参数,因为这里面提供了各种可能出现的情况。

  1. 分类三种液体的
  2. test.assert_equals(separate_liquids([['H', 'H', 'W', 'O'], ['W', 'W', 'O', 'W'], ['H', 'H', 'O', 'O']]),  [['O', 'O', 'O', 'O'], ['W', 'W', 'W', 'W'], ['H', 'H', 'H', 'H']], "")

  3. 分类四种液体的
  4. test.assert_equals(
  5.     separate_liquids([['A', 'A', 'O', 'H'], ['A', 'H', 'W', 'O'], ['W', 'W', 'A', 'W'], ['H', 'H', 'O', 'O']]),  [['O', 'O', 'O', 'O'], ['A', 'A', 'A', 'A'], ['W', 'W', 'W', 'W'], ['H', 'H', 'H', 'H']], "")

  6. 一层液体的
  7. test.assert_equals(separate_liquids([['A', 'H', 'W', 'O']]), [['O', 'A', 'W', 'H']], "")

  8. 一列液体的
  9. test.assert_equals(separate_liquids([['A'], ['H'], ['W'], ['O']]), [['O'], ['A'], ['W'], ['H']], "")

  10. 空杯的
  11. test.assert_equals(separate_liquids([]), [], "Empty array should be returned if given."
发表评论
评论通过审核后显示。