chiark / gitweb /
rename %edges etc.
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 14 Jan 2019 12:41:40 +0000 (12:41 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 14 Jan 2019 12:41:40 +0000 (12:41 +0000)
parse-input-graph

index fec1ef89880645c570e6c7702879cf8c70457e18..01c1202a57159fd021dd76a7d800eece5920a5b1 100755 (executable)
@@ -14,9 +14,9 @@ our %region;
 # $region{NAME}{Adj}[]{Dikes}
 # $region{NAME}{Adj}[]{L}
 
-our %edges;
-# $edges{EARLIER}{LATER}{Dikes}
-# $edges{EARLIER}{LATER}{L}[]
+our %adj;
+# $adj{EARLIER}{LATER}{Dikes}
+# $adj{EARLIER}{LATER}{L}[]
 
 sub read_in () {
   my $ccolour;
@@ -106,7 +106,7 @@ sub resolve_arefs () {
   }
 }
 
-sub edges () {
+sub adjacencies () {
   foreach my $ra (sort keys %region) {
     foreach my $adja (@{ $region{$ra}{Adj} }) {
       my $rb = $adja->{Name};
@@ -115,17 +115,17 @@ sub edges () {
        ($a eq 'NZ') <=> ($b eq 'NZ') or
         $a          cmp  $b
       } ($ra,$rb);
-      push @{ $edges{$r0}{$r1}{L} }, $adja->{L};
-      my $e = $edges{$r0}{$r1};
+      push @{ $adj{$r0}{$r1}{L} }, $adja->{L};
+      my $e = $adj{$r0}{$r1};
       $e->{Dikes} //= $adja->{Dikes};
       confess "$r0 - $r1 | @{ $e->{L} } | $e->{Dikes} $adja->{Dikes} ?"
          unless $e->{Dikes} == $adja->{Dikes};
     }
   }
   my $ndikes = 0;
-  foreach my $r0 (sort keys %edges) {
-    foreach my $r1 (sort keys %{ $edges{$r0} }) {
-      my $e = $edges{$r0}{$r1};
+  foreach my $r0 (sort keys %adj) {
+    foreach my $r1 (sort keys %{ $adj{$r0} }) {
+      my $e = $adj{$r0}{$r1};
       confess "$r0 / $r1 : @{ $e->{L} } ?" unless @{ $e->{L} } == 2;
       $ndikes += $e->{Dikes};
     }
@@ -133,6 +133,13 @@ sub edges () {
   print STDERR "total $ndikes dikes\n";
 }
 
+sub dual () {
+  # We want to turn the graph from a graph on the regions, to
+  # one where the nodes are the vertices of region boundaries.
+  #
+  # Each adjacency in 
+}
+
 sub o { print @_ or die $!; }
 
 sub output_dot () {
@@ -144,9 +151,9 @@ strict graph "map" {
     fixedsize=true;
   ];
 END
-  foreach my $r0 (sort keys %edges) {
-    foreach my $r1 (sort keys %{ $edges{$r0} }) {
-      my $e = $edges{$r0}{$r1};
+  foreach my $r0 (sort keys %adj) {
+    foreach my $r1 (sort keys %{ $adj{$r0} }) {
+      my $e = $adj{$r0}{$r1};
       my $r1n = $r1;
       if ($r1 eq 'NZ' || $r1 eq 'L') {
        $r1n = "_$r1 $r0";
@@ -160,7 +167,8 @@ END
 
 read_in();
 resolve_arefs();
-edges();
+adjacencies();
+dual();
 output_dot();
 
 # Local variables: