Pull to refresh

Comments 11

Я бы не вычитал cell из соседей, а просто переписал бы правило в терминах “инклюзивных" соседей : 3 тогда живём, 4 если сам живой. Кажется 4 символа может сократить.

Спасибо за статью, кстати, до боли напомнило впихивание Тетриса в МК85 - там был 1 КБ для программы на бейсике, удалось впихнуть.

Классика жанра же, APL:

: life { _ } ←{ ↑ 1 ⍵ ∨ . ∧ 3 4 = + / , -1 0 1 ∘ . ⊖ -1 0 1 ∘ . ⌽ ⊂ ⍵ } ;

UFO just landed and posted this here
UFO just landed and posted this here

Рокировка не работает. Возможно это из за тогоя что до этого был шах, но поскольку король не двигалсяя то правилами это допускается.

Она там в принципе не работает, как и взятие на проходе. Видимо эти правила слишком увеличивают размер кода

Мой вариант рисует поле покрасивее, но 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);

Но по сравнению с вариантом статьи экономия 7 символов (если убрать красивые кубики ["⬛","⬜"]) из моего кода то после uglify останется всего 273 символа)

Еще минус 9 символов (после второго join тоже апострофы):
"⬛⬜"[c]).join``).join\n

Круто, спасибо! 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);

Sign up to leave a comment.