Как стать автором
Обновить

Игра «Жизнь» в одном твите

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров8.3K
Всего голосов 20: ↑19 и ↓1+18
Комментарии11

Комментарии 11

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

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

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

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

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

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

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

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий