此Code Golf的灵感来自于最近的每日WTF文章《您无法正确处理!,其字符串比较写为:
String yes = "YES";
if ((delay.hashCode()) == yes.hashCode())
想象一下,如果Java的String.hashCode
方法恰好以这种方式实现,将会给Steve的团队带来麻烦"YES".hashCode() == "NO".hashCode()
。因此,我在这里提出的挑战是:
h
用一个字符串参数和一个整数返回值h("YES")
(等于)以尽可能少的字符编写一个哈希函数(我称它为 )h("NO")
。
当然,使用像这样的函数将是微不足道的def h(s): return 0
,它会为每个字符串造成哈希冲突。为了使这一挑战更加有趣,您必须遵守以下附加规则:
在由三个或更少的大写ASCII字母()组成的其他 18 277个可能的字符串中
^[A-Z]{0,3}$
,必须没有哈希冲突。
澄清(由Heiko Oberdiek指出):输入字符串可能包含以外的字符A-Z
,并且您的代码必须能够散列任意字符串。(但是,您可以假定输入是字符串,而不是空指针或其他数据类型的对象。)但是,^[A-Z]{0,3}$
只要不匹配,则返回值是多少都没有关系。这是一个整数。
此外,混淆此功能的意图:
您的代码不得在字符或字符串文字中包含任何字母“ Y”,“ E”,“ S”,“ N”或“ O”(大写或小写)。
当然,这种限制并不适用于语言的关键字,这样else
,return
等都是精品。
YESNO
来检查此特定异常。