Число бюллетеней , который мы будем маркировать B , является количество способов организации числа от 1 до В (В + 1) / 2 в треугольник, таким образом, что каждая строка и столбец в любом порядке возрастания. Первые четыре номера бюллетеня:
a(0) = 1
a(1) = 1
a(2) = 1
a(3) = 2
a(3)
это 2, что означает, что есть 2 способа расположить числа от 1 до 3(3+1)/2 = 6
такого треугольника:
1 1
2 3 or 2 4
4 5 6 3 5 6
См. Запись последовательности OEIS для более подробной информации.
Ваша задача, учитывая треугольник для голосования, состоит в том, чтобы проверить его правильность. Если он удовлетворяет условиям треугольника голосования (увеличение количества строк и столбцов), вы должны вывести, сколько других способов (кроме одного во входных данных) существует, чтобы правильно расположить треугольник. Если входной треугольник построен неправильно, вы ничего не должны выводить.
Конечные переводы строки разрешены.
вход
Треугольник чисел, который может быть или не быть действительным треугольником голосования. Например:
1
2 3
4 5 6
1
10 5
9 8 2
7 6 4 3
1
3 2
9
2 11
14 3 5
12 8 1 7
15 13 10 4 6
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21
Выход
Если вход является допустимым треугольником голосования, оставшееся количество способов расположить одинаковые числа в действительном треугольнике голосования. Если ввод не является допустимым треугольником голосования, ничего. Например, приведенные выше входные данные генерируют эти выходные данные ( <nothing>
является заполнителем для фактического пустого выходного сигнала):
1 # the same as a(3)-1
<nothing>
<nothing>
<nothing>
33591 # the same as a(6)-1
счет
Это код-гольф : как обычно, выигрывает наименьшее количество байтов. Tiebreaker опубликован раньше всего.
1/4 5/2 3 6
действует?