#!/usr/bin/perl -w

use strict;

#Erzeuge ungerichteter Input-Output-Graphen

#Schritt 2 - Erzeuge Paare von Wiesen die gerichtete Kanten aufweisen
#(Wiese1,Wiese2,#Kanten zueinander gerichtet)

open(DATA, "<wiese_Elternteile.txt") or die $!;   
open(ELT, ">>kanten_graph_gerichtet.txt") or die $!;   
               
  my @data=0;  				
  my @wiese_act=0;							#Eltern aller vorkommender Wiesen
  my @elter=0;
		
  my $laenge_data=0;							#Laengen des eingelesenen Arrays 
  my $wiese_length=0;							#Anzahl Elternteile mit Duplikaten
  my $elter_length=0;
  my $wiese_act=0;							#Key der aktuellen Wiese
  my $count=0;	
  my $duplikat=0;
  my $elternteil=0;							
 
  while(<DATA>){							#Daten einlesen

    push(@data,$_); 

  }
  close(DATA);
  
  $laenge_data = scalar @data;

  for (my $i=1; $i<$laenge_data; $i++){						#für alle wiesen (38)

	@wiese_act=0;
	@elter=0;

	push(@wiese_act,split(/\s+/,$data[$i]));
	shift(@wiese_act);
	
	$wiese_length = scalar(@wiese_act);

	$wiese_act = $wiese_act[0];					#aktuelle Wiese

	for(my $j=1; $j<$wiese_length; $j++){

		$duplikat=0;
		$count =0;
		$elternteil=$wiese_act[$j];

		$elter_length = scalar(@elter);
		
		for(my $l=0; $l<$elter_length; $l++){
			if($elternteil eq $elter[$l]){ $duplikat=1;}
		}
		
		if($duplikat==0){

			push(@elter,$elternteil);
			$count++;

			for(my $k=$j+1; $k<$wiese_length; $k++){	

				if($wiese_act[$k] eq $elternteil){ 
					$count++; 
				}	
			}
			
			print ELT "$wiese_act \t $elternteil \t $count \n";
		}
			 
		
	}

  
   } 



