How can I pair socks from a pile efficiently?

后端 未结 30 1209
旧巷少年郎
旧巷少年郎 2020-11-27 08:37

Yesterday I was pairing the socks from the clean laundry and figured out the way I was doing it is not very efficient. I was doing a naive search — picking one sock and

30条回答
  •  北荒
    北荒 (楼主)
    2020-11-27 09:27

    List UnSearchedSocks = getAllSocks();
    List UnMatchedSocks = new list();
    List PairedSocks = new list();
    
    foreach (Sock newSock in UnsearchedSocks)
    {
      Sock MatchedSock = null;
      foreach(Sock UnmatchedSock in UnmatchedSocks)
      {
        if (UnmatchedSock.isPairOf(newSock))
        {
          MatchedSock = UnmatchedSock;
          break;
        }
      }
      if (MatchedSock != null)
      {
        UnmatchedSocks.remove(MatchedSock);
        PairedSocks.Add(new PairOfSocks(MatchedSock, NewSock));
      }
      else
      {
        UnmatchedSocks.Add(NewSock);
      }
    }
    

提交回复
热议问题