场景:你是一名软件设计师,在一家非政府运营的公司工作,该公司为汽车和其他车辆设计车牌。你被要求开发生成车牌的软件。在你上班之前,你的老板制定了这些基本规则。
ASS
666
69<any number here>
<any number here>69
KKK
SHT
233-ADF
或ADF-233
。如果我需要澄清任何其他细节,请在评论中提及,我将把它添加到我的帖子中。不管怎样,祝你好运,给我一些合适的车牌!
结果我很快就要去旅行了,所以我将在世界协调时间7月25日00:00左右选出一位获奖者。在获胜者被选中后,你仍然可以提交项目,只需知道获胜者已经被选中。白。
我们有胜利者!耶!奶酪和葡萄酒给每一个参与的人!是谁赢了。
哇,三连冠。哇。比赛结束了,但是如果你愿意的话,可以随时提交参赛作品。白!
发布于 2014-07-20 02:09:28
Pe(Se(Re.sub(".*(666|69|ASS|KKK|SHT).*","",J(RSm(STuc*3,3)+[j]+RSm(STd*3,3)))for j in'-'*K))
现在可以一致地从所有未使用的盘子中选择,保持OP的规格,同时缩短1个字符。
从理论上讲,999个板块的列表将包含足够多的重复,这样修整的版块将小于200。但这种可能性微乎其微。在十次试验中,我得到的最小长度是994。
编辑:更改999到K(这是pyg的1000),以保存两个字符根据比特人的建议。
发布于 2014-07-19 18:40:57
啊,这太长了
l={};While[Length[l=Union@Pick[l,StringFreeQ[l,"ASS"|"666"|"69"|"KKK"|"SHT"]]]<200,AppendTo[l,RandomSample[FromCharacterCode/@{48+9~(r=RandomInteger)~3,65+25~r~3}]~Riffle~"-"<>""]];l
不毛之地
l = {};
While[
Length[
l = Union@
Pick[l, StringFreeQ[l, "ASS" | "666" | "69" | "KKK" | "SHT"]]
] < 200,
AppendTo[l,
RandomSample[
FromCharacterCode /@ {48 + 9~(r = RandomInteger)~3,
65 + 25~r~3}]~Riffle~"-" <> ""]
];
l
相当直截了当。产生随机的板块,过滤掉重复的和禁止的,直到找到200。
发布于 2014-07-20 15:18:45
我不是一个专业的程序员,所以我要说我对结果很满意。
import random as o
r=o.randint
t,j,k=[],0,""
b=["SHT","KKK","ASS","69","666"]
for i in range(200):
l,j=b[0],b[4]
while any(w in l for w in b):
l,j="",""
for i in range(3):
l+=chr(r(65,90))
j+=str(r(0,9))
t.append(l+'-'+j)
print "\n".join(set(t))
文件大小为4.0K,使用python file.py
运行!
https://codegolf.stackexchange.com/questions/34788
复制相似问题