Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- declare -A matrix
- num=$1
- for ((i=1;i<=num;i++)) do
- for ((j=1;j<=num;j++)) do
- matrix[$i,$j]=0
- done
- done
- export diri=1
- export dirj=0
- export progrnum=1
- export i=1
- export j=1
- while true
- do
- matrix[$i,$j]=$progrnum
- progrnum=$(($progrnum + 1))
- if [[ "$diri" -eq 1 ]] && [[ "$dirj" -eq 0 ]]
- then
- if [[ $(($i + $diri)) -gt $num ]] || [[ "${matrix[$(($i + $diri)),$(($j + $dirj))]}" -ne 0 ]]
- then
- diri=0
- dirj=1
- fi
- else
- if [[ "$diri" -eq 0 ]] && [[ "$dirj" -eq 1 ]]
- then
- if [[ $(($j + $dirj)) -gt $num ]] || [[ "${matrix[$(($i + $diri)),$(($j + $dirj))]}" -ne 0 ]]
- then
- diri=-1
- dirj=0
- fi
- else
- if [[ "$diri" -eq -1 ]] && [[ "$dirj" -eq 0 ]]
- then
- if [[ $(($i + $diri)) -lt 1 ]] || [[ "${matrix[$(($i + $diri)),$(($j + $dirj))]}" -ne 0 ]]
- then
- diri=0
- dirj=-1
- fi
- else
- if [[ "$diri" -eq 0 ]] && [[ "$dirj" -eq -1 ]]
- then
- if [[ $(($j + $dirj)) -lt 1 ]] || [[ "${matrix[$(($i + $diri)),$(($j + $dirj))]}" -ne 0 ]]
- then
- diri=1
- dirj=0
- fi
- fi
- fi
- fi
- fi
- if [[ "${matrix[$(($i + $diri)),$(($j + $dirj))]}" -ne 0 ]]
- then
- break
- fi
- i=$(($i + $diri))
- j=$(($j + $dirj))
- done
- f="%0$(echo -n $progrnum|wc -c)d"
- for ((j=1;j<=num;j++)) do
- for ((i=1;i<=num;i++)) do
- printf "$f " ${matrix[$i,$j]}
- done
- echo
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement