Changeset 15828 for branches/2886_SymRegGrammarEnumeration/HeuristicLab.Algorithms.DataAnalysis.SymRegGrammarEnumeration/GrammarEnumeration/Grammar.cs
- Timestamp:
- 03/07/18 12:52:16 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2886_SymRegGrammarEnumeration/HeuristicLab.Algorithms.DataAnalysis.SymRegGrammarEnumeration/GrammarEnumeration/Grammar.cs
r15827 r15828 166 166 167 167 // ADDITION 168 if ( ReferenceEquals(currentSymbol, Addition)) {168 if (currentSymbol == Addition) { 169 169 var uniqueChildHashes = new HashSet<THashType>(); 170 170 171 171 // First subtree 172 if ( ReferenceEquals(parseStack.Peek(), Addition)) {172 if (parseStack.Peek() == Addition) { 173 173 uniqueChildHashes.UnionWith(GetSubtreeHashes(parseStack, aggregateHashes)); 174 174 } else { … … 177 177 } 178 178 // Second subtree 179 if ( ReferenceEquals(parseStack.Peek(), Addition)) {179 if (parseStack.Peek() == Addition) { 180 180 uniqueChildHashes.UnionWith(GetSubtreeHashes(parseStack, aggregateHashes)); 181 181 } else { … … 190 190 191 191 // MULTIPLICATION 192 if ( ReferenceEquals(currentSymbol, Multiplication)) {192 if (currentSymbol == Multiplication) { 193 193 var childHashes = new List<THashType>(); 194 194 195 195 // First subtree 196 if ( ReferenceEquals(parseStack.Peek(), Multiplication)) {196 if (parseStack.Peek() == Multiplication) { 197 197 childHashes.AddRange(GetSubtreeHashes(parseStack, aggregateHashes)); 198 198 } else { … … 200 200 } 201 201 // Second subtree 202 if ( ReferenceEquals(parseStack.Peek(), Multiplication)) {202 if (parseStack.Peek() == Multiplication) { 203 203 childHashes.AddRange(GetSubtreeHashes(parseStack, aggregateHashes)); 204 204 } else { … … 231 231 232 232 // LOG, EXP, SIN, INV 233 if ( ReferenceEquals(currentSymbol, Log) || ReferenceEquals(currentSymbol, Exp)||234 ReferenceEquals(currentSymbol, Sin) || ReferenceEquals(currentSymbol, Cos)||235 ReferenceEquals(currentSymbol, Inv)) {233 if (currentSymbol == Log || currentSymbol == Exp || 234 currentSymbol == Sin || currentSymbol == Cos || 235 currentSymbol == Inv) { 236 236 return new[] { aggregateHashes(parseStack.Peek(), GetSubtreeHashes(parseStack, aggregateHashes)) }; 237 237 } … … 244 244 var hashesArray = hashes.ToArray(); 245 245 246 if (( ReferenceEquals(operatorSym, Addition) || ReferenceEquals(operatorSym, Multiplication)) && hashesArray.Count()<= 1) {246 if ((operatorSym == Addition || operatorSym == Multiplication) && hashesArray.Length <= 1) { 247 247 return hashesArray[0]; 248 248 } … … 251 251 } 252 252 253 return $"[{ hashesArray.Aggregate(operatorSym.StringRepresentation, (result, ti) => string.Concat(result, " ° ", ti))}]"; // TODO: use string join instead of string.Concat253 return $"[{operatorSym.StringRepresentation} ° {string.Join(" ° ", hashesArray)}]"; 254 254 } 255 255 256 256 private int AggregateIntHashes(Symbol operatorSym, int[] hashes) { 257 257 int start; 258 if ((ReferenceEquals(operatorSym, Addition) || ReferenceEquals(operatorSym, Multiplication)) && 259 hashes.Length <= 1) { 258 if ((operatorSym == Addition || operatorSym == Multiplication) && hashes.Length <= 1) { 260 259 start = 0; 261 260 … … 302 301 ISymbolicExpressionTreeNode parsedSubTree = null; 303 302 304 if ( ReferenceEquals(currentSymbol, Addition)) {303 if (currentSymbol == Addition) { 305 304 parsedSubTree = addSy.CreateTreeNode(); 306 305 parsedSubTree.AddSubtree(ParseSymbolicExpressionTree(parseStack)); // left part 307 306 parsedSubTree.AddSubtree(ParseSymbolicExpressionTree(parseStack)); // right part 308 307 309 } else if ( ReferenceEquals(currentSymbol, Multiplication)) {308 } else if (currentSymbol == Multiplication) { 310 309 parsedSubTree = mulSy.CreateTreeNode(); 311 310 parsedSubTree.AddSubtree(ParseSymbolicExpressionTree(parseStack)); // left part 312 311 parsedSubTree.AddSubtree(ParseSymbolicExpressionTree(parseStack)); // right part 313 312 314 } else if ( ReferenceEquals(currentSymbol, Log)) {313 } else if (currentSymbol == Log) { 315 314 parsedSubTree = logSy.CreateTreeNode(); 316 315 parsedSubTree.AddSubtree(ParseSymbolicExpressionTree(parseStack)); 317 316 318 } else if ( ReferenceEquals(currentSymbol, Exp)) {317 } else if (currentSymbol == Exp) { 319 318 parsedSubTree = expSy.CreateTreeNode(); 320 319 parsedSubTree.AddSubtree(ParseSymbolicExpressionTree(parseStack)); 321 320 322 } else if ( ReferenceEquals(currentSymbol, Sin)) {321 } else if (currentSymbol == Sin) { 323 322 parsedSubTree = sinSy.CreateTreeNode(); 324 323 parsedSubTree.AddSubtree(ParseSymbolicExpressionTree(parseStack)); 325 324 326 } else if ( ReferenceEquals(currentSymbol, Cos)) {325 } else if (currentSymbol == Cos) { 327 326 parsedSubTree = cosSy.CreateTreeNode(); 328 327 parsedSubTree.AddSubtree(ParseSymbolicExpressionTree(parseStack)); 329 328 330 } else if ( ReferenceEquals(currentSymbol, Inv)) {329 } else if (currentSymbol == Inv) { 331 330 parsedSubTree = divSy.CreateTreeNode(); 332 331 ConstantTreeNode dividend = (ConstantTreeNode)constSy.CreateTreeNode();
Note: See TracChangeset
for help on using the changeset viewer.