@@ -949,22 +949,22 @@ forbiddenColors[color[x]] <- ui
949949color[ui ] <- min{c > 0 : forbiddenColors[c] = ui }
950950"
951951 input list< tuple< Integer , list< Integer >>> inGraphT;
952- input array< Option < list < Integer >> > inforbiddenColor;
952+ input array< Integer > inforbiddenColor;
953953 input list< Integer > inColors;
954954 input array< tuple< Integer , list< Integer >>> inGraph;
955955 input array< Integer > inColored;
956956protected
957957 Integer node, color;
958958 list< Integer > nodes;
959- array< Option < list < Integer >> > forbiddenColor;
959+ array< Integer > forbiddenColor;
960960 Integer color;
961961 list< tuple< Integer , list< Integer >>> restGraph;
962962algorithm
963963 try
964964 for tpl in inGraphT loop
965965 (node,nodes) := tpl;
966966 addForbiddenColorsInt(node, nodes, inColored, inforbiddenColor, inGraph);
967- color := arrayFindMinColorIndexInt(inforbiddenColor, node, 1 );
967+ color := arrayFindMinColorIndexInt(inforbiddenColor, node);
968968 arrayUpdate(inColored, node, color);
969969 end for ;
970970 else
@@ -976,16 +976,15 @@ protected function addForbiddenColorsInt
976976 input Integer inNode;
977977 input list< Integer > nodes;
978978 input array< Integer > inColored;
979- input array< Option < list < Integer >> > forbiddenColor;
979+ input array< Integer > forbiddenColor;
980980 input array< tuple< Integer , list< Integer >>> inGraph;
981981protected
982982 list< Integer > indexes;
983- Option < list< Integer >> nodeopt = SOME ({inNode});
984983algorithm
985984 try
986985 for node in nodes loop
987986 ((_,indexes)) := arrayGet(inGraph,node);
988- updateForbiddenColorArrayInt(indexes, inColored, forbiddenColor, nodeopt );
987+ updateForbiddenColorArrayInt(indexes, inColored, forbiddenColor, inNode );
989988 end for ;
990989 else
991990 Error . addSourceMessage(Error . INTERNAL_ERROR , {"Graph.addForbiddenColors failed." }, sourceInfo());
@@ -996,8 +995,8 @@ end addForbiddenColorsInt;
996995protected function updateForbiddenColorArrayInt
997996 input list< Integer > inIndexes;
998997 input array< Integer > inColored;
999- input array< Option < list < Integer >> > inForbiddenColor;
1000- input Option < list < Integer >> inNode;
998+ input array< Integer > inForbiddenColor;
999+ input Integer inNode;
10011000protected
10021001 Integer colorIndex;
10031002algorithm
@@ -1010,35 +1009,17 @@ algorithm
10101009end updateForbiddenColorArrayInt;
10111010
10121011protected function arrayFindMinColorIndexInt
1013- input array< Option < list < Integer >> > inForbiddenColor;
1012+ input array< Integer > inForbiddenColor;
10141013 input Integer inNode;
1015- input Integer inIndex;
1016- output Integer outColor;
1014+ output Integer outColor = 1 ;
10171015algorithm
1018- outColor := matchcontinue(inForbiddenColor, inNode, inIndex)
1019- local
1020- list< Integer > nodes;
1021- case (_, _, _)
1022- equation
1023- NONE () = arrayGet(inForbiddenColor, inIndex);
1024- // print("Found color on index : " + intString(inIndex) + "\n");
1025- then inIndex;
1026- case (_, _, _)
1027- equation
1028- SOME (nodes) = arrayGet(inForbiddenColor, inIndex);
1029- // inPrintFunc(nodes,"FobiddenColors:" );
1030- failure(_ = List . getMemberOnTrue(inNode, nodes, intEq));
1031- // print("Found color on index : " + intString(inIndex) + "\n");
1032- then inIndex;
1033- case (_, _, _)
1034- equation
1035- SOME (nodes) = arrayGet(inForbiddenColor, inIndex);
1036- // inPrintFunc(nodes,"FobiddenColors:" );
1037- List . getMemberOnTrue(inNode, nodes, intEq);
1038- // print("Not found color on index : " + intString(inIndex) + "\n");
1039- then
1040- arrayFindMinColorIndexInt(inForbiddenColor, inNode, inIndex+ 1 );
1041- end matchcontinue;
1016+ while true loop
1017+ if arrayGet(inForbiddenColor, outColor) <> inNode then
1018+ return ;
1019+ else
1020+ outColor := outColor + 1 ;
1021+ end if ;
1022+ end while ;
10421023end arrayFindMinColorIndexInt;
10431024
10441025public function filterGraph
0 commit comments