Вступ
Є збирач податків, який має певні проблеми з управлінням податками свого царства: історичні записи згоріли у великому пожежі.
Він хоче з'ясувати, скільки можливих минулих моментів може відбутися з точки зору того, звідки дісталися нинішні гроші. На щастя, його королівство дуже просте.
Царство можна змоделювати за допомогою 2D булевої матриці, де l
представлений хтось, хто успадкував гроші, і O
представляє когось, хто цього не зробив. Наприклад:
l O l l
O O O l
l O l O
O O O l
(Це завжди буде прямокутник)
У наступному поколінні царство менше (Вовки сильні!).
Наступне покоління виглядатиме так, накладаючись на попереднє покоління ( x
є заповнювачем для нащадка наступного покоління)
l O l l
x x x
O O O l
x x x
l O l O
x x x
O O O l
Нащадок буде дивитися на предків, які безпосередньо навколо них (Таким чином, в лівому верхньому кутку x
буде бачити { l
, O
, O
, O
}, називається Unaligned прямокутної околиці )
Якщо лише один предок успадкував гроші, нащадок успадкує гроші від них. Якщо більше одного предка успадкували гроші, вони будуть розбиратися, і нащадок у кінцевому підсумку не успадкує гроші. Якщо ніхто не успадкував гроші, нащадок не успадкує жодних грошей.
(Більше одного нащадка може успадкувати від одного предка)
Отже, наступне покоління виглядатиме так:
l l O
l l O
l l O
Виклик
Вхідні дані
Поточний стан покоління, як масив масивів будь-яких двох різних значень, де внутрішні масиви мають однакову довжину.
Наприклад, для наведеного вище прикладу це може бути:
[
[True, True, False],
[True, True, False],
[True, True, False]
]
Вихідні дані
Ціле число, що представляє кількість унікальних попередніх поколінь, де вхідне наступне покоління.
Можна припустити, що відповідь завжди буде менше 2 ^ 30 - 1. (або 1073741823).
Попереднє покоління можна було б назвати "попереднім малюнком", і таким викликом було б підрахунок преім .
Оцінка балів
Це найшвидший-код виклик, тому кожне подання буде тестоване на моєму комп’ютері, а подання, яке займає найменше часу, буде переможцем.
Приклад введення та виводу
(Де 1
є нащадок, який успадкував гроші, і 0
є нащадком, який не успадкував гроші)
Вхід:
[[1, 0, 1],
[0, 1, 0],
[1, 0, 1]]
Вихід:
4
Вхід:
[[1, 0, 1, 0, 0, 1, 1, 1],
[1, 0, 1, 0, 0, 0, 1, 0],
[1, 1, 1, 0, 0, 0, 1, 0],
[1, 0, 1, 0, 0, 0, 1, 0],
[1, 0, 1, 0, 0, 1, 1, 1]]
Вихід:
254
Вхід:
[[1, 1, 0, 1, 0, 1, 0, 1, 1, 0],
[1, 1, 0, 0, 0, 0, 1, 1, 1, 0],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
[0, 1, 0, 0, 0, 0, 1, 1, 0, 0]]
Вихід:
11567