我想创建一个生成随机英国车辆登记牌的功能(使用2001年推出的结构),但实际上不知道从哪里开始。
所有板块都遵循以下结构:
[两个字母] [两位数] [3个随机字母]
e.g。 BD51 SMR
有关结构的更多信息,请访问:http://goo.gl/jh8Ldi
前两个字母代表一个区域代码,其中有几百个,并不像A + AZ,B + AZ等那么简单。例如,A可以跟随除I,Q和Z之外的任何字母,而D只能跟着字母AK(不包括i)。
这两个数字代表制造年份 - 我认为我对此很好。
我可以处理的最后三封信。
无论如何得到前两个字母而不必在数组中列出所有可能的结果?
谢谢
答案 0 :(得分:1)
Is there anyway of getting the first two letters without having to list all possible outcomes in an array?
嗯,是的。您可以对维基百科表中显示的规则进行编码 - 它是A-Z(带有一些排除项),然后是A-Y(具有不同的排除项),但后来有一些例外(例如,X只有A-F跟随它)。
但为什么不使用数组呢?维基百科页面为您列出了所有内容,只需几分钟就可以将其转换为数组,然后您就不需要了解编码它的最佳方法。
答案 1 :(得分:0)
我认为这个文字来自指示的"车辆登记......"页面是回答问题的关键:
In addition to the above local memory tags, personalised registrations are also offered
with arbitrary "local memory tags" prefixes, except for the letters I, Q, and Z.
如果我读得正确,那么字母D 可以后跟任何字母,除了I,Q和Z,如果有人要求(并且被授予)这样的话本地内存标签。在这种情况下,为了生成随机本地内存标记,您需要做的就是编写一个函数f(),它从1到23随机选择一个正整数,然后调用它两次,将每个数字映射到一个字母:< / p>
1->A
2->B
...
8->H // skip I
9->J
10->K
...
15->P // skip Q
16->R
17->S
...
23->Y // skip Z