Треугольник Паскаля генерируется, начиная с 1
каждой строки, состоящей из последовательных дополнений. Здесь вместо этого мы собираемся сформировать треугольник, чередуя умножение и сложение.
Мы начинаем грести 1
с одного человека 1
. После этого сложение выполняется для нечетных строк, а умножение выполняется для четных строк (с 1 индексированием). При выполнении шага сложения предположим, что пробелы за пределами треугольника заполнены 0
s. При выполнении шага умножения предположим, что внешняя сторона заполнена 1
s.
Вот полный треугольник до 7 рядов. *
Или +
слева показывает , что шаг был выполнен для создания этой строки.
1 1
2 * 1 1
3 + 1 2 1
4 * 1 2 2 1
5 + 1 3 4 3 1
6 * 1 3 12 12 3 1
7 + 1 4 15 24 15 4 1
Вызов
При заданном входе n
выведите n
строку этого треугольника.
правила
- Вместо этого вы можете выбрать 0-index, но затем, пожалуйста, поймите, что строки сложения и умножения должны быть триггерами, чтобы был сформирован точно такой же треугольник, как указано выше. Пожалуйста, укажите в своем представлении, если вы решите это сделать.
- Можно предположить, что ввод и вывод соответствуют целочисленному типу вашего языка.
- Ввод и вывод может быть дан в любом удобном формате .
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Если возможно, укажите ссылку на среду онлайн-тестирования, чтобы другие люди могли опробовать ваш код!
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
Примеры
Показаны два возможных примера вывода из множества: список или строка, разделенная пробелом.
4
[1, 2, 2, 1]
8
"1 4 60 360 360 60 4 1"
источник
n
строка th.Ответы:
Паскаль ,
249247233 байтаНу это переменный треугольник Паскаля .
1 байт сохранен благодаря @ Mr.Xcoder
Попробуйте онлайн!
источник
Python 2 ,
9793868178 байт-4 байта благодаря Роду. -10 байт благодаря Халварду Хаммелю.
0 индексированные.
Попробуйте онлайн!
источник
map([int.__add__ ,int.__mul__][i%2],[i%2]+a,a+[i%2])
должно работать (не проверено)Желе ,
1712 байтЭто полная программа (или нильадная ссылка), которая принимает данные от STDIN.
Попробуйте онлайн!
Как это устроено
источник
Python 2 ,
96 8987 байт2 байта. Спасибо мистеру Xcoder:
s=[1]
Немного отличается от ответа полностью человека
Попробуйте онлайн!
источник
[1]
.CJam , 25 байтов
0 индексированные.
Попробуйте онлайн!
объяснение
Это анонимный блок, который берет число из стека и оставляет результат в стеке.
источник
2%!
должно нажать 1, если четное и 0, если нечетное, нет?Mathematica, 92 байта
Попробуйте онлайн! (для работы над математикой «Тр» заменяется на «Тотал»)
источник
Хаскелл ,
7672 байта0-индексированное решение:
Попробуйте онлайн!
объяснение
p
рекурсивно определяет переменный треугольник, базовый случай / первый элемент этого[1]
Затем он строит треугольник, взяв предыдущую строку (
l
). Чтобы знать, что с этим делать, нам нужно отслеживать правильный оператор (o
) и соответствующий нейтральный элемент (e
):Из этой сборки создайте новую строку, продублировав ее, и для одной копии мы добавим нейтральный элемент, зафиксируем их с помощью оператора и добавим 1:
источник
R ,
10898 байт-10 байт путем замены действительного знака умножения на знак плюс. Пожалуйста, прости меня.
Попробуйте онлайн!
Весьма доволен общим методом (впервые я назвал примитив псевдонимом), но я уверен, что на нем еще предстоит сыграть в гольф, особенно с неловкой обработкой случаев, когда n <3, что приводит к большому количеству шаблонов.
источник
`*`=`+`
! довольно умно Остальные мои улучшения - это просто стандартные техники игры в гольф, которые я с удовольствием объясню по вашей просьбе :)n<3
Шелуха ,
1716 байтПопробуйте онлайн!
1-индексированное решение.
объяснение
Первая строка - это основная функция, которая вызывает вспомогательную функцию во второй строке. Вспомогательная функция обычно вызывается с помощью
₁
, но в этом случае я использую функцию переполнения меток в Husk: если вы ссылаетесь на строку N в программе с M <N строк, вы получите строку N mod M с функцией модификатора M / N применяется к нему. Вторая функция модификатора естьflip
, поэтому я использую₅
чтобы перевернуть аргументы вспомогательной функции без дополнительных затрат в байтах.Вот вспомогательная функция.
Вот основная функция.
источник
C # (.NET Core) ,
143134128 байт-4 байта благодаря Phaeze
-5 байтов благодаря Заку Фарагеру
-6 байтов благодаря Кевину Круйссену
Попробуйте онлайн!
Объяснение:
источник
var b=new[]{1};
и компилятор определит тип массива для вас.int[]b={1};
создать первый слой - 11 байт против 20 как есть или 16, как в предложении @Phaeze,n=>{int[]b={1},c;for(int i=0,j;++i<n;b=c)for(c=new int[i+1],c[0]=c[i]=1,j=0;++j<i;)c[j]=i%2<1?b[j-1]+b[j]:b[j-1]*b[j];return b;}
. Я объединилc
вот такint[]b={1},c;
; сокращеноi%2==0
доi%2<1
; И снял скобки с петли, положив все внутрь.Python 2 , 83 байта
Подари немного любви
exec
0-индексированным
Попробуйте онлайн!
источник
Pyth , 22 байта
Сохраненные тонны байта благодаря @FryAmTheEggman сэкономить ! Начальное решение ниже.
Полный набор тестов (0-indexed).
Pyth ,
40 38 3635 байтЭто
тожекажетсяваааааааайдолгим. Предложения приветствуются.Test Suite или попробуйте онлайн!
источник
u
(но не могу понять это). Благодарность!J , 32 байта
Попробуйте онлайн!
источник
Perl 5 , 111 + 2 (-na) = 113 байт
Попробуйте онлайн!
источник
Mathematica, 70 байт
Попробуйте в песочнице Wolfram ! К сожалению, в математике это не работает. Это 0-проиндексировано.
Объяснение:
Partition[#,2,1,{-1,1},{}]
берет список и возвращает все двухэлементные подсписки, плюс 1-элементные списки для начала и конца - например,{1,2,3,4}
становится{{1}, {1,2}, {2,3}, {3,4}, {4}}
.PadRight[{},#,{1##&,Plus}]
делает чередующийся список1##&
(эффективноTimes
) иPlus
, чья длина является входным числом. затемFold
многократно применяет функцию разбиения с примененными к нейPlus
es иTimes
es, чтобы создать строки треугольника.источник
Руби ,
8382 байтаПопробуйте онлайн!
Это 0-индексированный.
источник
Ракетка , 116 байт
Попробуйте онлайн!
источник
TI-Basic (TI-84 Plus CE), 100 байт
1-индексированный, запрашивает ввод у пользователя и печатает список, содержащий
n
строку чередующегося треугольника Паскаля.Во время цикла: L M - текущая строка, и L L - предыдущая строка.
TI-Basic является токенизированный язык . Все используемые здесь токены являются однобайтовыми.
Я думаю, что я могу играть в гольф дальше, модифицируя М на месте с конца.
Объяснение:
источник
JavaScript (ES6),
716966 байтПопробуйте онлайн!
0 индексированные.
-3 байта @Arnauld
источник
i--?n%2?v*p[i]:v+p[i]