3 ms·
Quanta: Round 1. Keep going through Hamlet, adding new words as you go. If you come to a word that’s already on your list, flip a coin again. If it’s tails
by Alexanfa 2y ago
Quanta:
Round 1. Keep going through Hamlet, adding new words as you go. If you come to a word that’s already on your list, flip a coin again. If it’s tails, delete the word; heads, and the word stays on the list.
To:
Round 1. Keep going through Hamlet, but now flipping a coin for each word. If it’s tails, delete the word if it exists; heads, and add the word if it's not already on the list.
Old edit:
Round 1. Keep going through Hamlet, adding words but now flipping a coin immediately after adding it. If it’s tails, delete the word; heads, and the word stays on the list.
- josephernest 2y ago> adding words but now flipping a coin immediately after adding it Edit: I thought your formulation was correct but not really: We flip the coin after adding, but we also flip the coin even if we didn't add the word (because it was already there). This is subtle! wrong: if k not in mem: mem += [k] if np.random.rand() > p: mem.remove(k) wrong: if k not in mem: mem += [k] else: if np.random.rand() > p: mem.remove(k) correct: if k not in mem: mem += [k] if k in mem: # not the same than "else" here if np.random.rand() > p: mem.remove(k) correct: if k not in mem: mem += [k] if np.random.rand() > p: mem.remove(k)
- Alexanfa 2y agoAh, I'm using a set instead of list so I just always add and then toss remove.
- kuldeepmeel 2y agoThe following is also not correct. if k not in mem: mem += [k] if k in mem: # not the same than "else" here if np.random.rand() > p: mem.remove(k) Your final solution is indeed correct, and I think more elegant than what we had in our paper [I am one of the authors].