Большинство людей знакомы с треугольником Паскаля.
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Треугольник Паскаля - это автомат, в котором значение ячейки представляет собой сумму ячеек слева вверху и справа вверху. Теперь мы собираемся определить аналогичный треугольник. Вместо того, чтобы просто брать ячейки в верхний левый и верхний правый угол, мы собираемся взять все ячейки вдоль двух бесконечных линий, продолжающихся в верхний левый и верхний правый угол. Точно так же, как треугольник Паскаля, мы начинаем с одного 1
дополненного бесконечно нулями и строим вниз оттуда.
Например, чтобы вычислить ячейку, обозначенную x
1
1 1
2 2 2
4 5 5 4
x
Мы бы суммировали следующие ячейки
.
. .
2 . 2
. 5 5 .
x
Делаем нашу новую камеру 14
.
задача
Учитывая номер строки ( n ) и расстояние слева ( r ), вычислите и выведите r- ю ненулевую запись слева на n- й строке. (эквивалент по треугольнику Паскаля nCr ). Вы можете предположить, что r меньше n .
Это код-гольф , цель - минимизировать количество байтов в вашем решении.
Контрольные примеры
0,0 -> 1
1,0 -> 1
2,0 -> 2
4,2 -> 14
6,3 -> 106
Вот первая пара строк в форме треугольника:
1
1 1
2 2 2
4 5 5 4
8 12 14 12 8
16 28 37 37 28 16
32 64 94 106 94 64 32
64 144 232 289 289 232 144 64
128 320 560 760 838 760 560 320 128
Ответы:
Желе ,
1817 байтИспользует индексирование на основе 0.
Попробуйте онлайн!
Как это устроено
источник
Python 3 , 72 байта
1 байт благодаря Kritixi Lithos.
Попробуйте онлайн!
источник
n>=r>=0and
и сохранить байтn
0, то это дает 1; в противном случае он дает 0. Это какn and ... or 1
, но короче.0^0
есть1
в большинстве языков программирования .ES6,
8078 байтВ бою!
Два байта благодаря Арно.
источник
while(n&&r<n)
иwhile(o*r)
.PHP , 94 байта
рекурсивный способ 0-индексирован
Попробуйте онлайн!
PHP , 125 байт
0 индексированные
Попробуйте онлайн!
PHP> = 7,1, 159 байт
0 индексируется для строк старше 50
источник
Python 3 , 61 байт
Это возвращает True для базового случая (0, 0) , что разрешено по умолчанию .
Попробуйте онлайн!
источник
~n<-r<1
довольно умно, я провел хорошие 10 минут, пытаясь играть в гольфn>=r>=0
.Паскаль , 145 байт
Попробуйте онлайн!
Использует
T(n, r) = T(n-1, r-1) + T(n-1, r)
рекурсию.источник