コード例 #1
0
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
コード例 #2
0
 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()
コード例 #3
0
 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
コード例 #4
0
 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
コード例 #5
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
コード例 #6
0
 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
コード例 #7
0
 def test_enqueue_dequeue(self):
     q = Queue()
     q.enqueue(2)
     assert q.dequeue() == 2
コード例 #8
0
 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
コード例 #9
0
 def test_init(self):
     q = Queue()
     assert q.front() is None
     assert q.length() == 0
     assert q.is_empty() is True
コード例 #10
0
 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