python高级练习题:彩色格子点形成了有色三角形【难度:4级】:
<字体大小= 2面= “Arial字体”> 注意的Java用户: 由于输入的Java检查,输入和输出这个语言被格式化相当不同.参见说明书的脚注.的
点击
<字体大小= “2” 脸= “Arial字体”> 您有与它们对应的坐标下面的格子点和每一个与一个特定的颜色.的
点[X,Y]颜色
----------------------------
A [3,4]蓝
B [-7,-1]红
C [7,-6]黄色
d [2,5]黄色
E [1,-5]红
F [-1,4]红
G [1,7]红
H [3,5]红
I [-3,-5]蓝
f] [4,1]蓝
<字体大小="2"脸=“Arial字体”> 我们要计数具有三个顶点具有相同的颜色的三角形.下图显示的点的在平面与所需三角形分布.的
<字体大小= “2” 脸= “Arial字体”> ,我们将有用于上述格子点的场的输入是:
[[[3-,-4], "蓝色"],[[-7,-1], "红"],[[7,-6], "黄色"],[[2,5],"黄"],
[[1,-5], "红"],[[-1,4], "红"],[[1,7], "红"],[[-3,5], "红色"] ,
[[-3,-5], "蓝色"],[[4,1], "蓝"]]
<字体大小= “2” 脸= “Arial字体”> 我们看到从它以下结果:
三角形三角形的颜色数量
黄0 -------
蓝1 AIJ
红10 BEF,BEG,BEH,BFG,BFH,BGH,EFG,EFH,EHG,FGH
<字体大小= “2” 脸= “Arial字体”> 由于我们有在红5个不同点和的未对准的3个点的每个组合.的
<字体大小= “2” 脸= “Arial字体”> 我们需要的是可以使我们在下列顺序的信息的代码:
1)总给点意见
2)的颜色的总数
3)可能的三角形的总数
4)和5)的颜色(或颜色,按字母顺序排序)与三角形的最高量
<字体大小= “2” 脸= “Arial字体”> 在Python我们的功能会像:
[10,3,11,[ "红",10]])== count_col_triang([[[3-,-4], "蓝色"],[[-7,-1], "红"],[[ 7,-6], "黄色"],[[2,5], "黄色"],
[[1,-5], "红"],[[-1,4], "红"],[[1,7], "红"],[[-3,5], "红色"] ,
[[-3,-5], "蓝色"],[[4,1], "蓝"]])
<字体大小= “2” 脸= “Arial字体”> 在以下的情况下,我们具有被对准的一些点,我们有能够形成更小的三角形:
[10,3,7,[ "红",6]] == count_col_triang([[[3-,-4], "蓝色"],[[-7,-1], "红"],[[7 ,-6], "黄色"],[[2,5], "黄色"],
[[1,-5], "红"],[[1,1], "红"],[[1,7], "红"],[[1,4], "红"],
[[-3,-5], "蓝色"],[[4,1], "蓝"]])
<字体大小= “2” 脸= “Arial字体”> 只要看到与我们有这个与前面的情况的变化:
<字体大小="2"脸=“Arial字体”> 在特殊情况下的点的列表中不产生甚至单个三角形,输出将是这样的情况: </字体>
[9,3,0,[]] == count_col_triang([[[1,-2], "红"],[[7,-6], "黄色"],[[2,5],"黄"],[[1,-5], "红"],
[[1,1], "红"],[[1,7], "红"],[[1,4], "红"],[[-3,-5], "蓝色"],
[[4,1], "蓝"]])
<字体大小= “2” 脸= “Arial字体”> 这将是该情况下:
<字体大小="2"脸=“Arial字体”> 如果在结果中,我们有两个或更多的颜色与三角形的相同的最大数量,最后一个列表应该像(例如)
[35,6,35,[ "蓝", "红", "黄",23]]具有的颜色的名称# 字母顺序排序
<字体大小= “2” 脸= “Arial字体”> 对于三个algined点的条件A,B,C,你应该知道的是,下面的行列式应该是0.的</字体>
| XA YA 1 |
|的xB YB 1 | = 0
| XC YC 1 |
<字体大小= “2” 脸= “Arial字体”> 假设:
- <字体大小= “2” 脸= “Arial字体”> 在具有其独特的点的列表,这样的点只能有一个颜色
- <字体大小= “2” 脸= “Arial字体”> 所有的输入是有效的的
<字体大小= “2” 脸= “Arial字体”> 享受它!
点击
点击
<字体大小= “2” 脸= “Arial字体”> 的 <字体大小= 3> 对于Java的用户: 的搜索结果的两个不可变对象,ColouredPoint和TriangleResult,已经在预装的部分被设计为您服务.您将收到输入作为ColouredPoint对象列表,并会返回一个TriangleResult对象.对于最后一个,则可以注意到的,其不同于以上描述中一个位的构造的参数的机构.的
<字体大小= “2” 脸= “Arial字体”> 您可能会发现的这些对象的可用方法的签名下面:
类ColouredPoint {
公共ColouredPoint(最终INT [] POS,最终串色)
公共INT []为getPosition()
公共字符串getColour()
@覆盖公共布尔等于(对象除外)
@覆盖公众诠释的hashCode()
@覆盖公共字符串的ToString()// String表示格式化为 “[[X,Y],红色]”
}
类TriangleResult {
公共TriangleResult()
公共TriangleResult(最终诠释nGivenPoints,最终诠释nGivenColours,最终诠释nTriangles,最终列表<字符串>的颜色,最终诠释maxFromColour)
@覆盖公共布尔等于(对象除外)
@覆盖公众诠释的hashCode()
格式化为 “[nGivenPoints,nGivenColours,nTriangles,[红,蓝],maxFromColour]” @覆盖公共字符串的ToString()// String表示
}
编程目标:
def count_col_triang(input_):
# your code here
return [[]]
测试样例:
test.describe("Example and special Cases")
test.assert_equals(count_col_triang([[[3, -4],
'blue'], [[-7, -1], 'red'],
[[7, -6], 'yellow'], [[2, 5], 'yellow'],
[[1, -5], 'red'], [[-1, 4], 'red'],
[[1, 7], 'red'], [[-3, 5], 'red'],
[[-3, -5], 'blue'], [[4, 1], 'blue']]),
[10, 3, 11, ['red',10]])
test.assert_equals(count_col_triang([[[3, -4],
'blue'], [[-7, -1], 'red'],
[[7, -6], 'yellow'], [[2, 5], 'yellow'],
[[1, -5], 'red'], [[1, 1], 'red'],
[[1, 7], 'red'], [[1, 4], 'red'],
[[-3, -5], 'blue'], [[4, 1], 'blue']]),
[10, 3, 7, ['red', 6]])