关于吸血鬼的鲜为人知的事实是,他们必须喝具有兼容的供血者血型的受害者的血液。吸血鬼的相容性矩阵与常规红细胞供体/受体矩阵相同。可以通过以下美国红十字会表格进行总结
Type You Can Give Blood To You Can Receive Blood From
A+ A+, AB+ A+, A-, O+, O-
O+ O+, A+, B+,AB+ O+, O-
B+ B+, AB+ B+, B-, O+, O-
AB+ AB+ everyone
A- A+, A-, AB+, AB- A-, O-
O- everyone O-
B- B+, B-, AB+, AB- B- O-
AB- AB+, AB- AB-, A-, B-, O-
挑战
编写一个将血液类型作为输入并输出两个列表的函数或程序:
- 可能会收到输入类型的捐赠的类型的无序列表
- 可能会捐赠输入类型的无序类型列表
如果您编写了一个函数,那么还请提供一个测试程序来调用该函数并提供一些示例,以便我可以轻松地对其进行测试。在这种情况下,测试程序将不会计入您的分数。
输入项
输入的字符串必须恰好代表8种可能的红细胞类型之一O−
O+
A−
A+
B−
B+
AB−
AB+
。输入可以通过常规方法(STDIN,命令行参数,函数参数等)给出。
如果给出任何其他输入,则程序/函数必须返回空输出或引发错误。通常,严格的输入检查在代码高尔夫球问题中并不好,但是我认为鉴于弄错血型对生命的影响,我应该添加此规则。
输出量
输出将是两个人类可读的血液类型列表,其格式适合您的语言。在输出列表之一包含所有8种类型的特殊情况下,可以选择将该列表替换为包含的单个项目列表everyone
。
正常输出将转到正常位置之一(STDOUT,函数返回等)。
其他规定
- 禁止标准漏洞
- 您可以使用所需的任何现有第三方库,只要它们不是为此目的而明确设计的。
例子
- 对于input
AB-
,两个输出列表将是:{AB+, AB-}, {AB-, A-, B-, O-}
- 对于input
AB+
,两个输出列表将是:{AB+}, {O−, O+, A−, A+, B−, B+, AB−, AB+}
或{AB+}, {everyone}
个人说明:如果可以的话,请考虑献血。如果没有几年前的输血,今天我可能不在这里,所以我对那些能够捐款的人感到非常感谢!