#!/bin/bash
#
# On saisit un entier N (ici N=9) et on affiche le motif suivant :
#
#        9
#       8 
#      7 9
#     6 8 
#    5 7 9
#   4 6 8 
#  3 5 7 9
# 2 4 6 8 
#1 3 5 7 9
# 2 4 6 8 
#  3 5 7 9
#   4 6 8 
#    5 7 9
#     6 8 
#      7 9
#       8 
#        9
#
# L'algorithme est le suivant (pour la partie superieure du motif - la
# partie inferieure est tres semblable modulo quelques details lies par
# exemple au fait que le nombre de lignes a afficher est N-1 dans
# l'implementation qui suit) :
#
# Pour la ligne i (1 <= i <= N), on commence par afficher N-i blancs.
# Puis il reste a afficher i caracteres. En fait, on affiche un caractere
# sur deux selon que l'on est sur une ligne paire ou impaire ET que
# l'element est pair ou impair. Par exemple pour la premiere ligne (i=1), 
# il reste a afficher 1 caractere apres les 6-1=5 blancs. On affiche 6 
# parce qu'il est pair et situe' sur une ligne impaire (en fait le critere 
# implemente est : "6 est pair et i+1 aussi").
#
# Si on est sur une ligne paire, il faut afficher les pairs (sinon un blanc).
# Cette affirmation n'est pas valide. En effet, si N est pair, la premiere 
# ligne se termine par N et la deuxieme (qui est paire) doit contenir les
# impairs. Dans le code qui suit, pour savoir si l'on doit afficher les 
# pairs ou les impairs on examine si (N + $i + 1) est pair ou impair.
#

MAX_NO=0
 
echo -n "Enter Number between (3 to 9) : "
read MAX_NO
 
if ! [ $MAX_NO -ge 3 -a $MAX_NO -le 9 ] ; then
   echo "I ask to enter number between 1 and 9, please..."
   exit 1
fi
 
clear
 
for (( i=1; i<=MAX_NO; i++ ))
do
    for (( s=MAX_NO; s>i; s-- ))
    do
       echo -n " "
    done
    s=`expr $MAX_NO - $i + 1`
    for (( j=$s; j<=$MAX_NO;  j++ ))
    do
     # on regarde si on est sur une ligne paire ou impaire
     z=`echo "($MAX_NO + $i + 1) % 2" | bc`
     # on regarde si l'element est pair ou impair
     w=`expr $j % 2`
     if [ $w -eq 0 -a $z -eq 0 ]
     then echo -n $j
     else if [ $w -ne 0 -a $z -ne 0 ] 
          then echo -n $j
          else echo -n " "
          fi
     fi
    done
    echo ""
done
###### Second stage ######################
##
##

for (( i=$MAX_NO; i>1; i-- ))
do
    for (( s=MAX_NO; s>i; s-- ))
    do
       echo -n " "
    done
    s=`expr $MAX_NO - $i + 1`
    for (( j=$s; j<=$MAX_NO;  j++ ))
    do
     # on regarde si on est sur une ligne paire ou impaire
     z=`echo "($MAX_NO + $i + 1) % 2" | bc`
     # on regarde si l'element est pair ou impair
     w=`expr $j % 2`
     if [ $w -eq 0 -a $z -eq 0 ]
     then echo -n " "
     else if [ $w -ne 0 -a $z -ne 0 ] 
          then echo -n " "
          else echo -n $j
          fi
     fi
    done
    echo ""
done
