chiark / gitweb /
wip produces a mess
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 14 Jan 2019 16:21:51 +0000 (16:21 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 14 Jan 2019 16:21:51 +0000 (16:21 +0000)
parse-input-graph

index f8e4901d94f7086844c5e70e9732b1e7d6e84321..1c08748113d760151615d49f667337f33f36c149 100755 (executable)
@@ -25,7 +25,9 @@ our %adj;
 our @vertex;
 # $vertex[]{Text}
 # $vertex[]{EdgeIds}[]
-# $vertex[]{Edges}[][0..1] = NAME
+# $vertex[]{Edges}[]{Regions}[0..1] = NAME
+# $vertex[]{Edges}[]{VIB}
+# $vertex[]{Edges}[]{EdgeId}
 
 sub read_in () {
   my $ccolour;
@@ -200,8 +202,9 @@ sub dual () {
   }
   my %edgeid2vi;
   # $edgeid2vi{EDGEID} = VI   s.t.  some $vertex[VI]{EdgeIds}[][J] eq EDGEID
+  my $cci = 0;
   foreach my $cc ($g->connected_components) {
-    print STDERR "CC:\n";
+    print STDERR "CC $cci:\n"; $cci++;
     print STDERR "    $_\n" foreach @$cc;
     my %uniq;
     foreach my $e (@$cc) {
@@ -224,17 +227,24 @@ sub dual () {
     }
     push @vertex, $vertex;
   }
-  foreach my $vertex (@vertex) {
-    $vertex->{Edges} = [];
-    foreach my $eid (@{ $vertex->{EdgeIds} }) {
+  foreach my $via (0..$#vertex) {
+    my $vertexa = $vertex[$via];
+    $vertexa->{Edges} = [];
+    foreach my $eid (@{ $vertexa->{EdgeIds} }) {
       $eid =~ m/ # (\d+)$/ or confess;
       my ($ra, $adjia) = ($`, $1);
-      my ($rb, $adjib) = edge_id_to_other_id($ra, $adjia);
-      my $vi = $edgeid2vi{"$rb # $adjib"};
-      my $vertex2 = $vertex[$vi];
-      confess "$rb # $adjib $vi" unless defined $vi and defined $vertex2;
-      my ($r0,$r1) = sort region_cmp ($ra,$rb);
-      push @{ $vertex->{Edges} }, [ $r0, $r1 ];
+      my $adjsa = $region{$ra}{Adj};
+      my $adjib = ($adjia + 1) % @$adjsa;
+      my $vib = $edgeid2vi{"$ra # $adjib"};
+      print STDERR "VIA=$via | $ra # $adjia | # $adjib VIB=$vib\n";
+      my $vertexb = $vertex[$vib];
+      confess "# $adjib $vib" unless defined $vib and defined $vertexb;
+      next unless $via <= $vib;
+      my $einfo = {
+        VIB => $vib,
+        EdgeId => $eid,
+      };
+      push @{ $vertexa->{Edges} }, $einfo;
     }
   }
 }
@@ -251,16 +261,16 @@ strict graph "map" {
     fontsize=8;
   ];
 END
-  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";
-       next;
-      }
-      o "\"$r0\" -- \"$r1n\" [fontsize=8; label=\"".
-         (join '/', @{ $e->{T} }).
+  foreach my $via (0..$#vertex) {
+    my $vertexa = $vertex[$via];
+    foreach my $ei (@{ $vertexa->{Edges} }) {
+      my $vib = $ei->{VIB};
+      #if ($r1 eq 'NZ' || $r1 eq 'L') {
+       $r1n = "_$r1 $r0";
+       next;
+      #}
+      o "\"$via\" -- \"$vib\" [fontsize=8; label=\"".
+         $ei->{EdgeId}.
          "\"];\n";
     }
   }