def set_random_parameters(self):
     self.name = '' if randint(0, 4) < 1 else utils.get_random_word(
         alphabet, randint(3, 10))
     self.header = '' if randint(0, 4) < 1 else utils.get_random_word(
         alphabet + ' ', randint(10, 20))
     self.footer = '' if randint(0, 4) < 1 else utils.get_random_word(
         alphabet + ' ', randint(10, 20))
     return self
Beispiel #2
0
 def get_random_valid_answer(self) -> Optional[str]:
     return get_random_word(
         min_len=self.min_letters_limit,
         starting_letter=self.current_word[-1],
         required_letter=self.required_letter,
         exclude_words=self.used_words,
     )
Beispiel #3
0
    def get_random_word(cls):
        """ Returns a random word fetched from Wikipedia.
        :return string
        """

        random_word_text = utils.get_random_word()
        word = cls(text=random_word_text)
        word._load_data()
        return word
Beispiel #4
0
    async def running_initialization(self) -> None:
        # Random starting word
        self.current_word = get_random_word(min_len=self.min_letters_limit)
        self.used_words.add(self.current_word)
        self.start_time = datetime.now().replace(microsecond=0)

        # No turn order
        await self.send_message(
            f"The first word is _{self.current_word.capitalize()}_.")
Beispiel #5
0
def random():
    '''API to get random word'''
    error, word = get_random_word()
    if not error:
        resp = make_response(200, {'word': word})
    else:
        resp = make_response(502, {'status': 'error', 'error': error})

    return resp
 def new_game(self, request):
     """ Creates a new game """
     user = User.query(User.name == request.user_name).get()
     if not user:
         raise endpoints.NotFoundException(
                 "A User with that name does not exist!")
     game = Game.new_game(user.key,
                          get_random_word(request.difficulty),
                          request.difficulty)
     return game.to_form("Good luck playing hangman!")
Beispiel #7
0
    async def running_initialization(self) -> None:
        # Random starting word
        self.current_word = get_random_word(min_len=self.min_letters_limit)
        self.used_words.add(self.current_word)
        self.start_time = datetime.now().replace(microsecond=0)

        await self.send_message(
            f"The first word is <i>{self.current_word.capitalize()}</i>.\n\n"
            "Turn order:\n" +
            "\n".join([p.mention for p in self.players_in_game]),
            parse_mode=types.ParseMode.HTML,
        )
Beispiel #8
0
    def __call__(self, instance):
        is_next, tokens_a, tokens_b = instance

        # -3  for special tokens [CLS], [SEP], [SEP]
        truncate_tokens_pair(tokens_a, tokens_b, self.max_len - 3)

        # Add Special Tokens
        tokens = ['[CLS]'] + tokens_a + ['[SEP]'] + tokens_b + ['[SEP]']
        segment_ids = [0] * (len(tokens_a) + 2) + [1] * (len(tokens_b) + 1)
        input_mask = [1] * len(tokens)

        # For masked Language Models
        masked_tokens, masked_pos = [], []
        # the number of prediction is sometimes less than max_pred when sequence is short
        n_pred = min(self.max_pred,
                     max(1, int(round(len(tokens) * self.mask_prob))))
        # candidate positions of masked tokens
        cand_pos = [
            i for i, token in enumerate(tokens)
            if token != '[CLS]' and token != '[SEP]'
        ]
        shuffle(cand_pos)
        for pos in cand_pos[:n_pred]:
            masked_tokens.append(tokens[pos])
            masked_pos.append(pos)
            if rand() < 0.8:  # 80%
                tokens[pos] = '[MASK]'
            elif rand() < 0.5:  # 10%
                tokens[pos] = get_random_word(self.vocab_words)
        # when n_pred < max_pred, we only calculate loss within n_pred
        masked_weights = [1] * len(masked_tokens)

        # Token Indexing
        input_ids = self.indexer(tokens)
        masked_ids = self.indexer(masked_tokens)

        # Zero Padding
        n_pad = self.max_len - len(input_ids)
        input_ids.extend([0] * n_pad)
        segment_ids.extend([0] * n_pad)
        input_mask.extend([0] * n_pad)

        # Zero Padding for masked target
        if self.max_pred > n_pred:
            n_pad = self.max_pred - n_pred
            masked_ids.extend([0] * n_pad)
            masked_pos.extend([0] * n_pad)
            masked_weights.extend([0] * n_pad)

        return (input_ids, segment_ids, input_mask, masked_ids, masked_pos,
                masked_weights, is_next)
Beispiel #9
0
    async def running_initialization(self) -> None:
        self.start_time = datetime.now().replace(microsecond=0)
        self.turns_until_elimination = len(self.players_in_game)
        self.game_mode = random.choice(self.game_modes)

        # First round is special since first word has to be set

        # Set starting word and mode-based attributes
        if self.game_mode is BannedLettersGame:
            BannedLettersGame.set_banned_letters(self)
            self.current_word = get_random_word(
                banned_letters=self.banned_letters)
        elif self.game_mode is ChosenFirstLetterGame:
            # Ensure uniform probability of each letter as the starting letter
            self.current_word = get_random_word(
                starting_letter=random.choice(ascii_lowercase))
        else:
            self.current_word = get_random_word()
        if self.game_mode is RequiredLetterGame:
            RequiredLetterGame.change_required_letter(self)
        self.used_words.add(self.current_word)

        await self.send_message(
            (f"The first word is <i>{self.current_word.capitalize()}</i>.\n\n"
             "Turn order:\n" +
             "\n".join([p.mention for p in self.players_in_game])),
            parse_mode=types.ParseMode.HTML,
        )

        round_text = f"Round 1 is starting...\nMode: <b>{self.game_mode.name.capitalize()}</b>"
        if self.game_mode is ChosenFirstLetterGame:
            round_text += f"\nThe chosen first letter is <i>{self.current_word[0].upper()}</i>."
        elif self.game_mode is BannedLettersGame:
            round_text += f"\nBanned letters: <i>{', '.join(c.upper() for c in self.banned_letters)}</i>"
        round_text += "\n\nLeaderboard:\n" + self.get_leaderboard()
        await self.send_message(round_text, parse_mode=types.ParseMode.HTML)
    def __call__(self, data):
        is_next, tokens_a, tokens_b = data
        truncate_tokens_pair(tokens_a, tokens_b, self.max_len - 3)

        # Add Special Tokens
        tokens = ['[CLS]'] + tokens_a + ['[SEP]'] + tokens_b + ['[SEP]']
        segment_ids = [0] * (len(tokens_a) + 2) + [1] * (len(tokens_b) + 1)
        input_mask = [1] * len(tokens)

        # For masked Language Models
        masked_tokens, masked_pos = [], []
        n_pred = min(self.max_pred,
                     max(1, int(round(len(tokens) * self.mask_prob))))
        cand_pos = [
            i for i, token in enumerate(tokens)
            if token != '[CLS]' and token != '[SEP]'
        ]
        shuffle(cand_pos)
        for pos in cand_pos[:int(n_pred)]:
            masked_tokens.append(tokens[pos])
            masked_pos.append(pos)
            if rand() < 0.8:  # 80%
                tokens[pos] = '[MASK]'
            elif rand() < 0.5:  # 10%
                tokens[pos] = get_random_word(self.indexer.vocab)
        masked_weights = [1] * len(masked_tokens)

        # Token Indexing
        input_ids = self.indexer.convert_tokens_to_ids(tokens)
        masked_ids = self.indexer.convert_tokens_to_ids(masked_tokens)

        # Zero Padding
        n_pad = self.max_len - len(input_ids)
        input_ids.extend([0] * int(n_pad))
        segment_ids.extend([0] * int(n_pad))
        input_mask.extend([0] * int(n_pad))

        # Zero Padding for masked target
        if self.max_pred > n_pred:
            n_pad = self.max_pred - n_pred
            masked_ids.extend([0] * int(n_pad))
            masked_pos.extend([0] * int(n_pad))
            masked_weights.extend([0] * int(n_pad))

        return (input_ids, segment_ids, input_mask, masked_ids, masked_pos,
                masked_weights, is_next)
Beispiel #11
0
import data
import utils


word = utils.get_random_word(data.words)
chars = []
score = 0

pseudo = input('Your pseudo ? ')

last_core = utils.get_last_scores(pseudo)

if last_core:
    print('Last score : ' + str(last_core))

while True:
    hidden_word = utils.generate_hidden_word(word, chars)

    print('hit ' + str(score) + '/' + str(data.nb_max_hit))
    print('Hidden word : ' + hidden_word)

    char = utils.get_input()
    chars.append(char)

    score += 1

    if score > data.nb_max_hit:
        print('The hidden word is : ' + word)
        print('DEFEATE !!!')
        break
Beispiel #12
0
 def test_get_random_word(self, mock_get):
     error, word = get_random_word()
     self.assertEqual(error, None)
     self.assertEqual(word, 'test')
Beispiel #13
0
    def set_random_parameters(self):
        # getrandbits(1) returns 0 or 1 with 50% probability
        # with 50% probability generate random word on alphabet with random length
        # and with probability 50% returns EMPTY_STRING
        self.lastname = '' if bool(getrandbits(1)) else utils.get_random_word(
            alphabet, randint(3, 10))
        self.firstname = '' if bool(getrandbits(1)) else utils.get_random_word(
            alphabet, randint(3, 10))
        self.middlename = '' if bool(
            getrandbits(1)) else utils.get_random_word(alphabet, randint(
                3, 10))
        self.nickname = '' if bool(getrandbits(1)) else utils.get_random_word(
            alphabet, randint(3, 10))

        # getrandbits(1) returns 0 or 1 with 50% probability
        # with 50% probability generate random word on alphabet with random length
        # and with probability 50% returns EMPTY_STRING
        self.title = '' if bool(getrandbits(1)) else utils.get_random_word(
            alphabet, randint(3, 10))
        self.company = '' if bool(getrandbits(1)) else utils.get_random_word(
            alphabet, randint(3, 10))
        self.address = '' if bool(getrandbits(1)) else utils.get_random_word(
            alphabet + ' ', randint(10, 20))

        # 30% probability to be empty value
        self.home = '' if randint(
            0, 2) < 1 else '+7495' + utils.get_random_word(numbers, 7)
        # 10% probability to be empty value
        self.mobile = '' if randint(
            0, 9) < 1 else '+79' + utils.get_random_word(numbers, 9)
        # 50% probability to be empty value
        self.work = '' if bool(
            getrandbits(1)) else '+79' + utils.get_random_word(numbers, 9)
        # 10% probability to be empty value
        self.fax = '' if randint(
            0, 9) < 1 else '+7495' + utils.get_random_word(numbers, 7)

        # randint(0, 4) < 1 = 20%; randint(0, 4) < 4 = 80%
        # with some probability generate random word on alphabet with random length
        self.main = '' if randint(0,
                                  4) < 1 else utils.get_random_email(alphabet)
        self.secondary = '' if randint(
            0, 4) < 4 else utils.get_random_email(alphabet)
        self.other = '' if randint(0,
                                   4) < 4 else utils.get_random_email(alphabet)
        self.homepage = '' if bool(getrandbits(1)) \
            else 'http://' + utils.get_random_word(alphabet, randint(3, 10)) + '.com'

        start = datetime.date(1980, 1, 1)
        end = datetime.date(2000, 12, 31)
        bd = utils.get_random_date(start,
                                   end)  # get random date between given dates
        if bool(getrandbits(1)):  # 50% probability set birthdate
            self.byear = bd.strftime('%Y')  # get year from this date
            self.bmonth = bd.strftime(
                '%B')  # get month in format April, January, ...
            self.bday = str(
                int(bd.strftime('%d'))
            )  # because %d is date with leading 0: 01, 02, 03, ... 11, 12, ...

        if bool(getrandbits(
                1)):  # 50% probability to generate anniversary date
            anniversary = utils.get_random_date(
                bd, datetime.date.today())  # random date from BD to TODAY
            self.ayear = anniversary.strftime('%Y')
            self.amonth = anniversary.strftime('%B')
            self.aday = str(int(anniversary.strftime('%d')))

        # randint(0, 2) < 2 = 66%; getrandbits(1) returns 0 or 1 with 50% probability
        # with some probability generate random word on alphabet with random length
        self.address2 = '' if randint(0, 2) < 2 else utils.get_random_word(
            alphabet + ' ', randint(10, 20))
        self.phone = '' if randint(
            0, 2) < 2 else '+7495' + utils.get_random_word(numbers, 7)
        self.notes = '' if bool(getrandbits(1)) else utils.get_random_word(
            alphabet + ' ', randint(10, 20))

        return self