def random_walk(markov, steps): '''Given a starting word, picks a random word from markov list and walks to given number of steps to generate a sentence''' sentence = [] q = Queue() state = random_state(markov) q.enqueue(state[0]) sentence.append(state[0]) q.enqueue(state[1]) sentence.append(state[1]) i = 2 while i != steps: next_word = stochastic_sample(markov, state) if len(q) == 3: q.dequeue() q.enqueue(next_word) sentence.append(next_word) state = (state[1], next_word) if next_word == '<STOP>': break i += 1 return sentence
def test_dequeue(self): q = Queue(['A', 'B', 'C']) assert q.dequeue() == 'A' assert q.length() == 2 assert q.dequeue() == 'B' assert q.length() == 1 assert q.dequeue() == 'C' assert q.length() == 0 assert q.is_empty() is True with self.assertRaises(ValueError): q.dequeue()
def test_front(self): q = Queue() assert q.front() is None q.enqueue('A') assert q.front() == 'A' q.enqueue('B') assert q.front() == 'A' q.dequeue() assert q.front() == 'B' q.dequeue() assert q.front() is None
def test_length(self): q = Queue() assert q.length() == 0 q.enqueue('A') assert q.length() == 1 q.enqueue('B') assert q.length() == 2 q.dequeue() assert q.length() == 1 q.dequeue() assert q.length() == 0
def test_enqueue(self): q = Queue() q.enqueue('A') assert q.front() == 'A' assert q.length() == 1 q.enqueue('B') assert q.front() == 'A' assert q.length() == 2 q.enqueue('C') assert q.front() == 'A' assert q.length() == 3 assert q.is_empty() is False
def test_getFirst(self): q = Queue() q.enqueue(1) q.enqueue(2) q.enqueue(4) assert q.getFirst() == 1 assert q.dequeue() == 1 assert q.getFirst() == 2 assert q.dequeue() == 2 assert q.getFirst() == 4 assert q.dequeue() == 4
def test_enqueue_dequeue(self): q = Queue() q.enqueue(2) assert q.dequeue() == 2
def test_backs(self): q = Queue(['A', 'B', 'C']) assert q.pop_back() == 'C' q.push_front('C') assert q.back() == 'B' assert q.length() == 3
def test_init(self): q = Queue() assert q.front() is None assert q.length() == 0 assert q.is_empty() is True
def test_init_with_list(self): q = Queue(['A', 'B', 'C']) assert q.front() == 'A' assert q.length() == 3 assert q.is_empty() is False