Codegolf - Трапеция Паскаля

  • Автор темы Cermotouresty74
  • Обновлено
  • 22, Oct 2024
  • #1
На этот вопрос уже есть ответы здесь:

Сгенерировать треугольник Паскаля

 (defn pascals-trapezoid-row [r n]

(last (take (+ n 1) ((fn p [c] (cons c (lazy-seq (p (flatten (conj [(first c)] (map #(apply +' %) (partition 2 1 c)) [(last c)] )))))) r))))
 

(64 ответа)

Cermotouresty74


Рег
25 Oct, 2024

Тем
62

Постов
198

Баллов
548
  • 26, Oct 2024
  • #2

Гольф-Базовый 84 – 10 символов

Выполнено из калькулятора ТИ-84.

 
 
 
 
 
 
 
 
 
 
 
 
 **iX2004FB 800345MTAJ Tj18fAkwDQ oxMAlSPXx8 CTANCjIyCU 89W05dKjEx fEMJMA0KMw lbT118XzAJ MA0K=*
 

Пробный запуск

lambda{|a,r|r.times{a<<j=0;a.map!{|i|(v=j)+j=i}};a} ||answer||

АПЛ (16/14)

$ ruby -ne 'a=eval$_;a.pop.times{a<<j=0;p a.map!{|i|(v=j)+j=i}}' <<< [3,1,2,7] [3, 4, 3, 2] [3, 7, 7, 5, 2] [3, 10, 14, 12, 7, 2] [3, 13, 24, 26, 19, 9, 2] [3, 16, 37, 50, 45, 28, 11, 2] [3, 19, 53, 87, 95, 73, 39, 13, 2] [3, 22, 72, 140, 182, 168, 112, 52, 15, 2] <-- answer

Принимает вектор в качестве правого аргумента, а номер строки в качестве левого аргумента, например:

R=7

Если мне удастся вводить данные с клавиатуры, а не как функцию, я могу убрать два символа:

[3,1,2]

Принимает вектор в первой строке и номер строки во второй.

 

Sydayproorn


Рег
24 Oct, 2020

Тем
49

Постов
210

Баллов
485
  • 26, Oct 2024
  • #3

Гольфскрипт, 14 символов

R

Принимает входные данные (вектор плюс количество строк) поверх стека и заменяет их результатом. Пример (также онлайн):

[array,R] ||answer||

Р, 45

a=eval$_;a.pop.times{a<<j=0;p a.map!{|i|(v=j)+j=i}}

Пример использования:

fun <- function(x,r){for(i in 1:r)x=c(x,0)+c(0,x);x} fun(c(3, 1, 2), 1) [1] 3 4 3 2 fun(c(3, 1, 2), 2) [1] 3 7 7 5 2 fun(c(3, 1, 2), 5) [1] 3 16 37 50 45 28 11 2 ||answer||

Руби, 51 год

function(x,r){for(i in 1:r)x=c(x,0)+c(0,x);x}

Запустить из командной строки с помощью [3 1 2] 3 {[0\{.@+\}/]}* # -> [3 10 14 12 7 2] as input. It shows each increment of {[0\{.@+\}/]}* по пути. Последняя строка – это решение.

Например, если массив {2+/0,⍵,0}⍣⎕⍨⎕ and 1{{2+/0,⍵,0}⍣⍺⍨⍵}3 1 2 3 4 3 2 2{{2+/0,⍵,0}⍣⍺⍨⍵}3 1 2 3 7 7 5 2 3{{2+/0,⍵,0}⍣⍺⍨⍵}3 1 2 3 10 14 12 7 2 :

{{2+/0,⍵,0}⍣⍺⍨⍵}

Для того же количества символов, но другого соглашения о вызовах:

?(3;1;2) <== Array of numbers ?1 <== Row number 3432 ||answer||

iX2Web, 94 года

i`N,Rd`N11

Вряд ли он превзойдет мое решение Golf-Basic. Компенсирует это красивым графическим интерфейсом и выводом. Только Windows.

 

AvengerLord


Рег
03 Nov, 2004

Тем
83

Постов
197

Баллов
632
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно