穆罕默德·S·安瓦尔 (Mohammad S. Anwar) 每周都会发出“每周挑战”,让我们所有人都有机会为两周的任务提出解决方案。我的解决方案首先用Python编写,然后转换为Perl。这对我们所有人来说都是练习编码的好方法。
挑战,我的解决方案
给你一组单词和一个句子。
编写一个脚本来替换给定句子中以给定数组中的任何单词开头的所有单词。
对于此任务,我使用正则表达式进行转换。完整代码为
def replace_words(words: list[str], sentence: str) -> str: regexp = r"(?<![a-z])(" + "|".join(map(re.escape, words)) + r")([a-z]*(?:'[a-z]+)?)" return re.sub(regexp, r'', sentence)
第一个括号 (?
对于来自命令行的输入,我将最后一个值作为句子,其他所有内容作为单词。
$ ./ch-1.py cat bat rat "the cattle was rattle by the battery" the cat was rat by the bat $ ./ch-1.py a b c "aab aac and cac bab" a a a c b $ ./ch-1.py man bike "the manager was hit by a biker" the man was hit by a bike $ ./ch-1.py can "they can't swim" they can swim $ ./ch-1.py row "the quick brown fox" the quick brown fox
您将获得一个字符网格和一个字符串。
编写一个脚本来确定是否可以在给定的字符网格中找到给定的字符串。您可以从任何地方开始并采取任何正交路径,但不能重复使用网格单元。
对于此任务,我首先检查所有行是否具有相同的列数。然后我检查每个单元格。如果该单元格中的字母是该单词的第一个字母,我将调用 find_match 函数。如果返回 true,则该函数将返回 true。如果没有,我将继续处理包含起始字母的下一个单元格。如果不存在,我返回 false。
def word_search(matrix: list[list[str]], word: str) -> bool: rows = len(matrix) cols = len(matrix[0]) for row in range(rows): if len(matrix[row]) != cols: raise ValueError("Row %s has the wrong number of columns", row) for row in range(rows): for col in range(cols): if matrix[row][col] == word[0]: if find_match(matrix, word[1:], [[row, col]]): return True return False
find_match 函数是一个递归函数。它需要三个参数
从最后一个位置开始,我们可以移动四个方向之一(上、下、左或右)。我检查移动这个方向不会让我们出界或者是我们已经使用过的单元格。如果不是,并且该单元格中的字母与我们要查找的字母匹配,我会再次调用该函数,从单词变量中取出第一个字母,并添加新位置。如果我到达没有剩余字母的地步,则可以找到该单词并返回 True。
def replace_words(words: list[str], sentence: str) -> str: regexp = r"(?<![a-z])(" + "|".join(map(re.escape, words)) + r")([a-z]*(?:'[a-z]+)?)" return re.sub(regexp, r'', sentence)
$ ./ch-1.py cat bat rat "the cattle was rattle by the battery" the cat was rat by the bat $ ./ch-1.py a b c "aab aac and cac bab" a a a c b $ ./ch-1.py man bike "the manager was hit by a biker" the man was hit by a bike $ ./ch-1.py can "they can't swim" they can swim $ ./ch-1.py row "the quick brown fox" the quick brown fox
以上是关于文字的一件事的详细内容。更多信息请关注PHP中文网其他相关文章!