簡體   English   中英

Python - 確定單詞是否使用此語言

[英]Python - Determine if a word is in this language or not

我在解決這個家庭作業問題時遇到了麻煩。 如果有人可以給我任何提示或什么開始,那將是偉大的! 提前致謝!

Bob和Joe決定創建一種新語言。 他們語言中的單詞只包含字母A,B和C.他們發明的第一個單詞是AB和C.然后他們決定所有其他單詞的形式是AuB或vCw,其中u,v和w都是以前發明過的話。 (注意,v和w可能是同一個單詞。)編寫一個使用字符串s的函數in_language,如果s在語言中則生成True,否則生成False。

例子:

in_language('C') => True
in_language('AB') => True
in_language('ACB') => True
in_language('ABCAB') => True
in_language('ACBCABCAB') => True

in_language('') => False (empty string with length 0)
in_language('A') => False
in_language('A^BD%AB') => False
in_language('BCA') => False
in_language('ACBACB') => False

這是一個簡單的遞歸算法:

  1. 如果單詞為空,則返回False
  2. 如果一個單詞是AB或C返回True
  3. 如果一個單詞以A開頭並以B結尾,如果內部部分是有效單詞(遞歸),則返回True
  4. 對於單詞中的每個字母C,如果左側部分和右側部分都是有效單詞(遞歸),則返回True
  5. 如果以上都不是真的,則返回false

這是SwankyLegg提出的一個實現

def in_language(word):
    if word in ('AB', 'C'):
        return True
    if len(word) < 3: #The only valid words with 2 or less letters are AB and C
        return False
    if word[0] == 'A' and word[-1] == 'B' and in_language(word[1:-1]):
        return True
    else:
        for i, letter in enumerate(word):
            if letter == 'C' and in_language(word[:i]) and in_language(word[i+1:]):
                return True
    return False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM