#!/bin/bash
FILE=$1
NUMMAT=0 # interni cislovani matic
C1X1=0 #

function seq(){
	START=$1
	STOP=$2
	INDEX=$START
	STEP=1
	while [ $INDEX -le $STOP ]
	do
		echo $INDEX 
		INDEX=`expr $INDEX + $STEP`
	done	
}

if [ $# -ne 1 ] 
  then
    echo -e "Usage:\n"
    echo -e "\t$0 [FILE]\n"
    exit 1
fi

if [ ! -f $FILE ]
  then
    echo -e "Soubor '$FILE' neexistuje.\a\n"
    exit 1
fi



while read line
do
	# Osetreni matice 0x0
	[ "$line" = '0' ] && echo -e "0\n"

	# zkoumani zda radek obsahuje jen jedno cislo a zda to neni prazdny radek
	if [ `echo $line | tr ' ' '\n' | wc -l` -eq 1 ] && [ $(($line+1)) -gt 1 ]; 
	then
		ROWS=$line
		MLINE=0
		NUMMAT=`expr $NUMMAT + 1`
#DEBUG		echo "Prochazim $NUMMAT. matici."	
		echo $ROWS
		# Osetreni matice 1x1
		[ $C1X1 -eq 1 ] && echo && C1X1=0;
		[ $ROWS -eq 1 ] && M1X1=1 && C1X1=1;
	fi	

	#nacteni matice do jednoho radku
	if [ $MLINE -le $ROWS ];
	then			
		[ $MLINE -gt 0 ] && matrix=`echo $matrix $line` 
		MLINE=`expr $MLINE + 1`
	fi
		
	#Rozdeleni radku s matici do bunek
	if [ $MLINE -eq	$(($ROWS+1)) -a  `echo $matrix | tr ' ' '\n' | wc -l`  -gt 1 ];
	then
#DEBUG		echo MATICE: $matrix
		I=0
		for CELL in $matrix
		do
			eval cell$I=$CELL
			I=$(($I+1))
		done
		matrix=''

		## A nazaver transponujeme
		for J in `seq 0 $(($ROWS-1))`
		do
			A=$J
			for U in `seq 0 $(($ROWS-1))`
			do
				eval OUT=\$cell$A
				printf "%g " $OUT
				A=$(($A+$ROWS))
			done	
			echo	
		done	
		echo 			
	fi
done < $FILE

exit 0

