Показать сообщение отдельно
  #5 (permalink)  
Старый 25.06.2019, 09:24
Аспирант
Отправить личное сообщение для alex-romanov Посмотреть профиль Найти все сообщения от alex-romanov
 
Регистрация: 02.02.2019
Сообщений: 67

Сообщение от ksa Посмотреть сообщение
Для получения всех комбинаций циклов нужно столько, сколько скобок.
Я делал циклы по числу пар, но ничего не получается. Я лишь только подстроился к результату, а это неверно.

вот приблизительный код (здесь другой язык, но думаю понятно будет)

private static Set<String> getSetCombinations(List<String> list, int numberOfMethodsPairs) {

    Set<String> stringsSet = new HashSet<>();
    StringBuilder builder = new StringBuilder();
    
    boolean isPair = false;
    boolean isLock = false;
    int countPair = 0;
    
    builder = new StringBuilder();

      /*работа с методами unlock. В качестве ограничителя
      * смотриться количество методов unlock идущих подряд */
    for (int k = 0; k < list.size(); k++) {
      
      String element = list.get(k);

      if (addRestOfCode(element, builder)) {
        continue;
      }

      if (element.equals(LOCK) && !isLock && countPair != numberOfMethodsPairs) {

        builder.append(element);
        isLock = true;
        isPair = false;
        countPair++;

      }

      if (element.equals(UNLOCK) && !isPair) {

        builder.append(element);
        isLock = false;
        isPair = true;
      }

    }
    
    String stringSet = builder.toString();

    if (builder.length() != 0) {
      stringsSet.add(stringSet);
    }

    return stringsSet;
  }
Ответить с цитированием