Changeset 1730


Ignore:
Timestamp:
Jul 6, 2010, 10:00:44 AM (11 years ago)
Author:
kohnen
Message:
  • TranspositionAnalyser: minor changes/ bugfixes
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/TranspositionAnalyser/TranspositionAnalyser.cs

    r1475 r1730  
    463463        {
    464464            LinkedListNode<ValueKey> node;
     465           
    465466            while (valuequeue.Count != 0)
    466467            {
     
    870871                }
    871872            }
    872             Console.WriteLine("highest pos: " + highest + " (" + amount + "x)");
     873            //Console.WriteLine("highest pos: " + highest + " (" + amount + "x)");
    873874
    874875            // ordnen versuchen
     
    880881                    if (m.xPos == highest && m.cribColumn == a)
    881882                    {
    882                         Console.WriteLine(a + ": Zeile:" + m.yPos + " (enc)");
     883                        //Console.WriteLine(a + ": Zeile:" + m.yPos + " (enc)");
    883884                    }
    884885                }
     
    10431044                                {
    10441045                                    ding.delete(j, val);
    1045                                     Console.WriteLine("Delete: " + j + "/" + val + "(" + shift + ")");
     1046                                    //Console.WriteLine("Delete: " + j + "/" + val + "(" + shift + ")");
    10461047                                }
    10471048                            }
     
    13411342            DateTime startTime = DateTime.Now;
    13421343            DateTime lastUpdate = DateTime.Now;
    1343 
     1344               
    13441345            ArrayList bestOf = null;
    13451346
    13461347            for (int it = 0; it < repeatings; it++)
    13471348            {
    1348 
    13491349                ArrayList valList = new ArrayList();
    13501350               
     
    13721372                valuequeue = Queue.Synchronized(new Queue());
    13731373
    1374 
    13751374                int iteration = 0;
    13761375                while (iteration < size && !stop)
    13771376                {
    1378                     //Dummy ValueKey erstellen:
    1379                     ValueKey highest = new ValueKey();
    1380 
    1381                     // Schlechtesten 6 Keys löschen
    1382                     if (costMaster.getRelationOperator() == RelationOperator.LessThen)
    1383                     {
    1384                         for (int a = 0; a < 6; a++)
    1385                         {
    1386                             highest.value = int.MinValue;
    1387                             int pos = -1;
    1388                             for (int b = 0; b < valList.Count; b++)
    1389                             {
    1390                                 ValueKey v = (ValueKey)valList[b];
    1391                                 if (v.value > highest.value)
    1392                                 {
    1393                                     highest = v;
    1394                                     pos = b;
    1395                                 }
    1396                             }
    1397                             if (pos != -1)
    1398                             {
    1399                                 valList.RemoveAt(pos);
    1400                             }
    1401                         }
    1402                     }
    1403                     //costmMaster Relation Operator == Larger Than
    1404                     else
    1405                     {
    1406                         for (int a = 0; a < 6; a++)
    1407                         {
    1408                             highest.value = int.MaxValue;
    1409                             int pos = -1;
    1410                             for (int b = 0; b < valList.Count; b++)
    1411                             {
    1412                                 ValueKey v = (ValueKey)valList[b];
    1413                                 if (v.value < highest.value)
    1414                                 {
    1415                                     highest = v;
    1416                                     pos = b;
    1417                                 }
    1418                             }
    1419                             if (pos != -1)
    1420                             {
    1421                                 valList.RemoveAt(pos);
    1422                             }
    1423                         }
    1424                     }
     1377                    valList = updateValueKeyArrayList(valList, 12);
     1378             
    14251379
    14261380                    //valListe sortieren
    1427                     ArrayList tmpList = new ArrayList(6);
     1381                    ArrayList tmpList = new ArrayList(12);
    14281382
    14291383                    double best = Double.MinValue;
    14301384                    int bestpos = -1;
    1431                     for (int a = 0; a < 6; a++)
     1385                    for (int a = 0; a < 12; a++)
    14321386                    {
    14331387                        best = Double.MinValue;
     
    16321586                            valuequeue.Enqueue(v);
    16331587                        }
     1588
    16341589                        updateToplist(list1);
    16351590                        showProgress(startTime, size * repeatings, it * size + iteration);
     
    16451600                    bestOf.Add(v);
    16461601                }
    1647             }
     1602                bestOf = updateValueKeyArrayList(bestOf, 12);
     1603            }
     1604        }
     1605
     1606        private ArrayList updateValueKeyArrayList(ArrayList list, int rest)
     1607        {
     1608            //Dummy ValueKey erstellen:
     1609            ValueKey best = new ValueKey();
     1610            ArrayList ret = new ArrayList();
     1611
     1612            // Schlechtesten x Keys löschen
     1613            if (costMaster.getRelationOperator() == RelationOperator.LessThen)
     1614            {
     1615                for (int a = 0; a < rest; a++)
     1616                {
     1617                    best.value = int.MaxValue;
     1618                    int pos = -1;
     1619                    for (int b = 0; b < list.Count; b++)
     1620                    {
     1621                        ValueKey v = (ValueKey)list[b];
     1622                        if (v.value < best.value)
     1623                        {
     1624                            best = v;
     1625                            pos = b;
     1626                        }
     1627                    }
     1628                    if (pos != -1)
     1629                    {
     1630                        ret.Add(list[pos]);
     1631                        list.RemoveAt(pos);
     1632                    }
     1633                }
     1634            }
     1635            //costmMaster Relation Operator == Larger Than
     1636            else
     1637            {
     1638                for (int a = 0; a < rest; a++)
     1639                {
     1640                    best.value = int.MinValue;
     1641                    int pos = -1;
     1642                    for (int b = 0; b < list.Count; b++)
     1643                    {
     1644                        ValueKey v = (ValueKey)list[b];
     1645                        if (v.value > best.value)
     1646                        {
     1647                            best = v;
     1648                            pos = b;
     1649                        }
     1650                    }
     1651                    if (pos != -1)
     1652                    {
     1653                        ret.Add(list[pos]);
     1654                        list.RemoveAt(pos);
     1655                    }
     1656                }
     1657            }
     1658            return ret;
    16481659        }
    16491660
     
    16801691                output[i] = Convert.ToByte(tmp[i]);
    16811692            }
     1693
    16821694            return output;
    16831695        }
Note: See TracChangeset for help on using the changeset viewer.