/ / Le triangle de Pascal dans les scripts shell Linux - linux, bash, shell, pascals-triangle

Le triangle de Pascal en script shell Linux - linux, bash, shell, pascals-triangle

J'essaie d'écrire un code qui reçoit un message"n" entier en tant que paramètre, puis affiche la n-ième ligne du triangle de Pascal à partir de 0, 1, .., n. Par exemple, si l'entrée est 3, le programme imprime 1 3 3 1. Jusqu'ici, j'ai écrit un code pour obtenir le triangle entier imprimé, mais je ne peux pas avoir seulement la dernière ligne. C'est ce que j'ai

echo "Insert the row:" read n for((i=0;i<$n;i++))
do
eval"a$i=($(w=1;v=1
for((j=0;j<$n-$i;j++))
do
[ $i -eq 0 -o $j -eq 0 ]&&{ v=1 && w=1; }||v=$((w+a$((i-1))[$((j))]))
echo -n "$v "
w=$v
done))"
eval echo "$(for((k=0;k<=$i;k++))
do
eval "echo -n "$((a$((i-k))[k])) ""
done)"
done

Réponses:

1 pour la réponse № 1
#!/bin/bash
read -p "Insert the row:"  n

typeset -A Tab

for((i=0;i<=$n;i++))
do
Tab[$i,0]=1
Tab[$i,$i]=1
for((j=1;j<$i;j++))
do
a=${Tab[$((i-1)),$((j-1))]}
b=${Tab[$((i-1)),$j]}
Tab[$i,$j]=$(( a + b ))
done
done

#print result
for((j=0;j<=$n;j++))
do
echo -n ${Tab[$n,$j]} " "
done
echo

Test:

Insert the row:3
1  3  3  1

1 pour la réponse № 2

J'ai trouvé un awk solution à cette question:

awk -v line_num=5 "BEGIN{for(i=line_num;i<=line_num;i++){c=1;r=c;for(j=0;j<i;j++){c*=(i-j)/(j+1);r=r" "c};print r}}"

Changement line_num valeur à celui désiré.

Basé sur une solution trouvée ici.

C'est bien sûr si awk ça compte…