Replace words with different synonyms and print each combination in a text file

here is a program I made : P, use the addWord(word,“syn1,syn2,syn3,…”) to add words. Good luck

Code
ArrayList<String> documented = new ArrayList<String>(), words = new ArrayList<String>();
ArrayList<ArrayList<String>> syn = new ArrayList<ArrayList<String>>();
String text = "the new world is a small world";
char acceptable[] = ("aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789").toCharArray();

void setup() {
  size(600,600);
  addWord("small","meager,minuscule,paltry");
  addWord("new","novel,current,modern");
  printArray(documented);
  printArray(syn);
  splitWords();
  printArray(words);
  for(int i = 0; i < words.size(); i++) print(wordSwap(words.get(i))+ " ");
}
void draw() {
}
void addWord(String word, String syn_s) {
  documented.add(word);
  String syn_s2[] = split(word+","+syn_s,",");
  ArrayList<String> syn_s3 = new ArrayList<String>();
  for(int i = 0; i < syn_s2.length; i++) syn_s3.add(syn_s2[i]);
  syn.add(syn_s3);
}
void splitWords() {
  String words_[] = split(text, " ");
  for(int i = 0; i < words_.length; i++) words.add(purify(words_[i]));
}

String wordSwap(String word) {
  if(documented.contains(word)) {
    int pos = getIndex(documented,word);
    //if(pos != -1) return syn.get(pos).get(floor(random(syn.get(pos).size())));
    if(pos != -1) {
      return syn.get(pos).get(floor(random(syn.get(pos).size())));
    }
    //syn.get(index).get(floor(random(syn.get(index).size()))))
  }
  return word;
}


int getIndex(ArrayList<String> reference, String item) {
  for(int i = 0; i < reference.size() && reference.contains(item); i++) if(reference.get(i).equals( item )) return i;
  return -1;
}

String purify(String input) {
  String newString = "";
  for (int i = 0; i < input.length(); i++) for (int j = 0; j < acceptable.length; j++) if (input.charAt(i) == acceptable[j]) {
    newString += acceptable[j];
    break;
  }
  return newString;
}

image

1 Like