Comment detail
四字熟語パズルの作成 (Nested Flatten)
ruckerさんのアルゴリズム(#3695)を拝借して高速化を図りました。上と同条件で約9秒。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function doukaku75r(y){
for(var C = {}, i = y.length, c, h, t; i--;){
h = y[i].charAt(0), t = y[i].charAt(3);
((c = (C[h] || (C[h] = {}))).asHead || (c.asHead = {}))[y[i]] = t;
((c = (C[t] || (C[t] = {}))).asTail || (c.asTail = {}))[y[i]] = h;
}
var CC = {}, cc, f, r;
for(c in C) if((h = C[c].asHead) && (t = C[c].asTail)) for(r in h) for(f in t)
(CC[cc = t[f] + h[r]] || (CC[cc] = [])).push({hitch: c, front: f, rear: r});
var out = [], s = ' ', n = '\n', x1, x2, c1, c2;
for(cc in CC) for(x1 in C = CC[cc]) for(x2 in C) if((c1 = C[x1]).hitch != (c2 = C[x2]).hitch)
out[++i] = [c1.front, n,
c2.front.charAt(1), s, c1.rear.charAt(1), n,
c2.front.charAt(2), s, c1.rear.charAt(2), n,
c2.rear].join('');
return out;
}
|




matyr
#3680()
[
JavaScript
]
Rating0/0=0.00
「可能な四角を全て出力」と解釈して鏡像・重複共に許したため,他の人の約二倍量になりました。
Rating0/0=0.00-0+
1 reply [ reply ]