#!/pkg/bin/perl -w


$infile = "$ARGV[0]";
open IN, $infile;
@lines = <IN>;
close(IN);

$infile =~ m/data(.*)\.txt/;
$i = 1;

$goutprefix = "$ARGV[1]";
chomp ($goutprefix);

$goutfile = $goutprefix . '.' . $i;
open (OUTG, ">$goutfile");

$hsoutprefix = "hapsav";
$hsoutfile = $hsoutprefix . '.' . $i;
open (OUTHS, ">$hsoutfile");

open (OUTTI, '>title');

$skip = 0;

$line = $lines[1];
chomp $line;

$len = length($line);
	
for($i=0;$i<$len;$i++) {
	$first[$i] = 'X';
	$second[$i] = 'X';
	
	foreach $line (@lines) {
		chomp $line;
		@arr =  split(//, $line);
	
		if($skip == 0) {
			$skip = 1;
		} else {
			if ($line =~ /^[ATCG]+$/) {	
			if($first[$i] eq 'X') {
				$first[$i] = $arr[$i];
			} elsif($first[$i] ne $arr[$i]) {
				if($second[$i] eq 'X') {
					$second[$i] = $arr[$i];
				}
			}						
			
			if($skip == 2) {
				$skip = 0;
			} else {
				$skip++;
			}
			}
		}
	}
}

for($i=0;$i<$len;$i++) {
	if($first[$i] gt $second[$i]) {
		$temp = $second[$i];
		$second[$i] = $first[$i];
		$first[$i] = $temp;
	} 
}

for($i=0;$i<$len;$i++) {
	print OUTTI "$first[$i]$second[$i]\n";
}

$eo = 0;
$eo2 = 0;
$numlines = 0;
$numtwos = 0;
$totaltwos = 0;
$nhom = 0;

$infile = "$ARGV[0]";
open IN, $infile;

while(<IN>) {
	$line = $_;
	chomp $line;
	
	if($eo2 ==0 ) {
		$eo2 = 1;
	} else {
	if ($line =~ /^[ATCG]+$/) {
 		$numlines++;
		$linelength = length($line);

 		if ($eo == 1) {
 			$eo2 = 0;
    			$numtwos = 0;
     			$genoline = "";
     			
     			@arr1 =  split(//, $lastline);			
     			@arr2 =  split(//, $line);
     			
     			for ($j = 0; $j < $linelength; $j++) {
     				if ($arr1[$j] eq $arr2[$j]) { 
        				$char = $arr1[$j];
        			} else {
        				$char = '2';
        				$numtwos++;
        				$totaltwos++;
     				}
     				
     				if($char eq $first[$j]) {
     					$char = '0';
     				} elsif ($char eq $second[$j]) {
     					$char = '1';
     				}
     				
     				$genoline = $genoline . "$char "; 
 			}
 			

 			if ($numtwos == 1) {
   				$genoone = $genoline;
   				$genoline =~ tr/2/0/;
   				for ($k = 0; $k < 3; $k++) {
   					$homarray[$nhom++] = $genoline;
   				}

   				$genoone =~ tr/2/1/;
   				for ($k = 0; $k < 3; $k++) {
   					$homarray[$nhom++] = $genoone;
  	 			}
  	 			
  	 			print OUTTI "2\n";
   				
 			} elsif ($numtwos == 0) {
   				for ($k = 0; $k < 3; $k++) {
   					$homarray[$nhom++] = $genoline;
   				}
   				print OUTTI "1\n";
 			} else {
 				$newline1 = "";
 				$newline2 = "";
 				
 				for ($j = 0; $j < $linelength; $j++) {
 					if($arr1[$j] eq $first[$j]) {
 						$newline1 = $newline1."0";
 					} else {
 						$newline1 = $newline1."1";
 					}
 					
 					if($arr2[$j] eq $first[$j]) {
 						$newline2 = $newline2."0";
 					} else {
 						$newline2 = $newline2."1";
 					}
 				}
 				
   				$homarray[$nhom++] = $genoline;
   				$homarray[$nhom++] = $newline1;
   				$homarray[$nhom++] = $newline2;
   				print OUTTI "1\n";
 			}

 			$eo = 0;
		} else {
  			$eo = 1;
 		}

		$lastline = $line;
	}
	}
}
close(IN);
	
$numtwos = 0;
if ($i > 0) {
   			$hom = $nhom/3;
			print OUTG "$hom $linelength\n";
    			$j = 0;
    			until ($j == $nhom) {
     				print OUTG "$homarray[$j]\n";
     				for ($k = 0; $k < 3; $k++) {
     					$line = $homarray[$j++];
     					$line =~ tr/ //d;
     					#if($k != 0) {
     						print OUTHS "$line\n";
     					#} 
     				}
   			}
   		}

close (OUTG);
close (OUTHS);
close (OUTTI);