コード例 #1
0
ファイル: JOpLenCore.java プロジェクト: gmroldan/JOpLen
  public Language exponentiaton(final Language language, final int exponent) {
    Language result = new Language();

    if (exponent == 0) {
      result.addWord(EMPTY_WORD);
    } else if (exponent == 1) {
      cloneLanguage(language, result);
    } else if (exponent > 1) {
      Language aux = new Language();
      String word = null;

      cloneLanguage(language, aux);

      for (int i = 1; i < exponent; i++) {
        for (String word1 : aux.getWordList()) {
          for (String word2 : language.getWordList()) {
            word = word1.concat(word2);
            if (!result.belongs(word)) {
              result.addWord(word);
            }
          }
        }
        cloneLanguage(result, aux);
      }
    }

    return result;
  }
コード例 #2
0
ファイル: JOpLenCore.java プロジェクト: gmroldan/JOpLen
  public Language union(final Language language1, final Language language2) {
    Language result = new Language();
    cloneLanguage(language1, result);

    for (String word : language2.getWordList()) {
      if (!result.belongs(word)) {
        result.addWord(word);
      }
    }

    if (result.getWordList().isEmpty()) {
      result.addWord(EMPTY_LANGUAGE);
    }

    return result;
  }
コード例 #3
0
ファイル: JOpLenCore.java プロジェクト: gmroldan/JOpLen
  private Language star(final boolean isKleeneStar, final Language language, final int exponent) {
    Language result = new Language();
    Language aux = new Language();

    if (isKleeneStar) {
      result.addWord(EMPTY_WORD);
    }

    for (int i = 1; i <= exponent; i++) {
      for (String word : union(result, exponentiaton(language, i)).getWordList()) {
        aux.addWord(word);
      }
      result.getWordList().clear();
      cloneLanguage(aux, result);
      aux.getWordList().clear();
    }

    return result;
  }
コード例 #4
0
ファイル: JOpLenCore.java プロジェクト: gmroldan/JOpLen
  public Language reverse(final Language language) {
    Language result = new Language();
    String word = "";

    for (String wordAux : language.getWordList()) {
      for (int i = wordAux.length() - 1; i >= 0; i--) {
        word = word.concat(String.valueOf(wordAux.charAt(i)));
      }
      result.addWord(word);
      word = "";
    }

    return result;
  }
コード例 #5
0
ファイル: JOpLenCore.java プロジェクト: gmroldan/JOpLen
  /**
   * Creates a new Language and adds it into the Collection.
   *
   * @param words Words of the language that will be created.
   * @throws JOpLenException If something goes wrong.
   */
  public void newLanguage(String[] words) throws JOpLenException {
    Language language = new Language();

    for (String word : words) {
      if (belongsToAlphabet(word)) {
        language.addWord(word);
      } else {
        throw new JOpLenException(
            "Los símbolos de la palabra '" + word + "' no pertenecen al alfabeto");
      }
    }

    language.setName(NameFactory.getInstance().getLanguageName());
    addLanguage(language);
  }
コード例 #6
0
ファイル: JOpLenCore.java プロジェクト: gmroldan/JOpLen
  public Language product(final Language language1, final Language language2) {
    Language result = new Language();
    String word = null;

    for (String word1 : language1.getWordList()) {
      for (String word2 : language2.getWordList()) {
        word = word1.concat(word2);
        if (!result.belongs(word)) {
          result.addWord(word);
        }
      }
    }

    return result;
  }