Комментарии 11
Я бы не вычитал cell из соседей, а просто переписал бы правило в терминах “инклюзивных" соседей : 3 тогда живём, 4 если сам живой. Кажется 4 символа может сократить.
0
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Мой вариант рисует поле покрасивее, но 294 символа, эх...
(size => {
let
cons = console,
arr = [...Array(size).keys()],
st = arr.map(i => arr.map(j => Math.random() < .5 ? 1 : 0)),
sum = f => [-1,0,1].map(f).reduce((a, b) => a+b);
setInterval(_ => {
cons.clear();
cons.log(st.map(r => r.map(c => ["⬛","⬜"][c]).join("")).join("\n"));
st = st.map((r, i) => r.map((c, j) =>
[c,1][sum(ii => sum(jj => (st[i+ii]?.[j+jj])||0)) - c - 2]||0)
);
}, 1000);
})(9);
0
Но по сравнению с вариантом статьи экономия 7 символов (если убрать красивые кубики ["⬛","⬜"]) из моего кода то после uglify останется всего 273 символа)
0
Еще минус 9 символов (после второго join тоже апострофы):
"⬛⬜"[c]).join``).join\n
+1
Круто, спасибо! 254 символа после избавления от декоративных ячеек (потому что без них там больше 9 символов экономия)
(e=>{let t=console,a=[...Array(e).keys()],n=a.map(e=>a.map(e=>Math.random()<.5?1:0)),r=e=>[-1,0,1].map(e).reduce((e,t)=>e+t);setInterval(e=>{t.clear();t.log(n.join("\n"));n=n.map((e,l)=>e.map((e,a)=>[e,1][r(t=>r(e=>n[l+t]?.[a+e]||0))-e-2]||0))},1e3)})(9);
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Игра «Жизнь» в одном твите