骰子游戏Mia引入了大小为2的一组非常平凡的顺序:
{3,1} < {3,2} < {4,1} < {4,2} < {4,3} < {5,1} < {5,4} < {6,1} < {6,5} < {1,1} < {2,2} < {6,6} < {1,2}
通常,元组中的顺序无关紧要{x,y}={y,x}
,
{1,2}
比其他任何东西都大,对大于大于非对,并且数值决定是否平局。
现在假设您要使用n
骰子。另外,骰子有m
面孔。
例:
{1,5,3,4} < {1,2,6,3}
自5431 <6321{1,2,3,5} < {1,1,5,6} < {1,1,5,5}, {1,1,6,6} < {1,1,1,3} < {2,2,2,3} < {1,1,1,1} < {1,2,3,4}
{2,2,5} < {1,1,6}
因为两个集合都有一对,所以611> 522
简而言之,{1, ..., n}
比什么都重要。设p > q
,则实物p大于实物q。如果出现平局,则以第二(,第三,...)最长的同类获胜。最后,如果尚未做出决定,则以最大的数值为准。集合的数值是您可以使用串联从集合中的可用数字构建的最大整数。例:
{2,5,4,3}
变成5432{4,11,3,4}
变为B443(允许使用大于6个面的骰子,B = 11)
您的任务是以您选择的语言编写尽可能小的程序(即函数),给定两个容器(列表,数组,集合,...),则返回第一个还是第二个获胜。
注意:您可以假定两个容器的长度相同,并且仅包含正整数,而没有其他内容。特别是它们可能未排序。返回值可以是任何值,例如{第一个获胜,平局,第二个获胜}的{-1、0、1}。
让我检查一下我对顺序的理解是否正确:首先,{1,...,n}是最高的。对于每个列表,采用最常见的值,而同样常见的值采用最大的值。如果一个列表中有更多列表,则获胜。如果同样普遍,则取胜。如果共同点和价值都相等,则从每个列表中删除所有那些并再次进行比较。
—
xnor
@马丁:很好的问题。我猜对此没有“规范”的决定,并且由于我的朱莉娅程序说{1,1,6}胜过{2,2,5},所以就这样。
—
pasbi
@xnor:是的,但是请考虑马丁的评论和我的回答。
—
pasbi
@oVooVo哦,是的,考虑到您的示例,在将数字从大到小排序之后,您只需按数值对它们进行排序就可以了。
—
马丁·恩德
{1,1,6}
,{2,2,5}
?您是否比较最大同类或任何骰子的数值?