Hướng dẫn anagram recursion python - con trăn đệ quy đảo chữ cái

tổ hợp

Chúng ta có thể viết

(X, a, b, c)
(a, X, b, c)
(a, b, X, c)
(a, b, c, X)
6 bằng cách sử dụng lý luận quy nạp -

  1. Nếu đầu vào
    (X, a, b, c)
    (a, X, b, c)
    (a, b, X, c)
    (a, b, c, X)
    
    7 trống, hãy mang lại kết quả trống
  2. (quy nạp)
    (X, a, b, c)
    (a, X, b, c)
    (a, b, X, c)
    (a, b, c, X)
    
    7 có ít nhất một yếu tố. Đối với tất cả các
    (X, a, b, c)
    (a, X, b, c)
    (a, b, X, c)
    (a, b, c, X)
    
    9 của Subprobol
def permutations(t):
  if not t:
    yield ()                          #1
  else:
    for p in permutations(t[1:]):     #2
      for r in rotations(p, t[0]):
        yield r

Bởi

def rotations(t, e):
  if not t:
    yield (e)                       # 1
  else:
    yield (e, *t)                   # 2
    for r in rotations(t[1:], e):
      yield (t[0], *r)
5 Chúng tôi có nghĩa là
def rotations(t, e):
  if not t:
    yield (e)                       # 1
  else:
    yield (e, *t)                   # 2
    for r in rotations(t[1:], e):
      yield (t[0], *r)
6 sẽ "xoay" qua từng vị trí trong
def rotations(t, e):
  if not t:
    yield (e)                       # 1
  else:
    yield (e, *t)                   # 2
    for r in rotations(t[1:], e):
      yield (t[0], *r)
7 -

(X, a, b, c)
(a, X, b, c)
(a, b, X, c)
(a, b, c, X)

Trong đó

def rotations(t, e):
  if not t:
    yield (e)                       # 1
  else:
    yield (e, *t)                   # 2
    for r in rotations(t[1:], e):
      yield (t[0], *r)
8 được định nghĩa là -

  1. Nếu đầu vào
    (X, a, b, c)
    (a, X, b, c)
    (a, b, X, c)
    (a, b, c, X)
    
    7 trống, hãy mang lại vòng quay trống,
    for p in permutations("same"):
      print(p)
    
    0
  2. (quy nạp)
    (X, a, b, c)
    (a, X, b, c)
    (a, b, X, c)
    (a, b, c, X)
    
    7 có ít nhất một yếu tố. Năng suất
    for p in permutations("same"):
      print(p)
    
    2 và cho tất cả
    def rotations(t, e):
      if not t:
        yield (e)                       # 1
      else:
        yield (e, *t)                   # 2
        for r in rotations(t[1:], e):
          yield (t[0], *r)
    
    1 của Subroblem
    def rotations(t, e):
      if not t:
        yield (e)                       # 1
      else:
        yield (e, *t)                   # 2
        for r in rotations(t[1:], e):
          yield (t[0], *r)
    
    0, hãy dành phần tử đầu tiên
    def rotations(t, e):
      if not t:
        yield (e)                       # 1
      else:
        yield (e, *t)                   # 2
        for r in rotations(t[1:], e):
          yield (t[0], *r)
    
    2 để
    def rotations(t, e):
      if not t:
        yield (e)                       # 1
      else:
        yield (e, *t)                   # 2
        for r in rotations(t[1:], e):
          yield (t[0], *r)
    
    1 và mang lại
def rotations(t, e):
  if not t:
    yield (e)                       # 1
  else:
    yield (e, *t)                   # 2
    for r in rotations(t[1:], e):
      yield (t[0], *r)
for p in permutations("same"):
  print(p)
('s', 'a', 'm', 'e')
('a', 's', 'm', 'e')
('a', 'm', 's', 'e')
('a', 'm', 'e', 's')
('s', 'm', 'a', 'e')
('m', 's', 'a', 'e')
('m', 'a', 's', 'e')
('m', 'a', 'e', 's')
('s', 'm', 'e', 'a')
('m', 's', 'e', 'a')
('m', 'e', 's', 'a')
('m', 'e', 'a', 's')
('s', 'a', 'e', 'm')
('a', 's', 'e', 'm')
('a', 'e', 's', 'm')
('a', 'e', 'm', 's')
('s', 'e', 'a', 'm')
('e', 's', 'a', 'm')
('e', 'a', 's', 'm')
('e', 'a', 'm', 's')
('s', 'e', 'm', 'a')
('e', 's', 'm', 'a')
('e', 'm', 's', 'a')
('e', 'm', 'a', 's')

ANAGrams

Bây giờ

for p in permutations("same"):
  print(p)
7 có thể là một
for p in permutations("same"):
  print(p)
8 đơn giản trên các hoán vị kết quả -

def anagrams(s):
  for p in permutations(s):
    yield "".join(p)
for a in anagrams("same"):
  print(a)
same
asme
amse
ames
smae
msae
mase
maes
smea
msea
mesa
meas
saem
asem
aesm
aems
seam
esam
easm
eams
sema
esma
emsa
emas

từ hợp lệ

Nếu bạn chỉ muốn tìm các từ hợp lệ, bạn sẽ cần một

for p in permutations("same"):
  print(p)
9 và thêm một điều kiện trước câu lệnh
('s', 'a', 'm', 'e')
('a', 's', 'm', 'e')
('a', 'm', 's', 'e')
('a', 'm', 'e', 's')
('s', 'm', 'a', 'e')
('m', 's', 'a', 'e')
('m', 'a', 's', 'e')
('m', 'a', 'e', 's')
('s', 'm', 'e', 'a')
('m', 's', 'e', 'a')
('m', 'e', 's', 'a')
('m', 'e', 'a', 's')
('s', 'a', 'e', 'm')
('a', 's', 'e', 'm')
('a', 'e', 's', 'm')
('a', 'e', 'm', 's')
('s', 'e', 'a', 'm')
('e', 's', 'a', 'm')
('e', 'a', 's', 'm')
('e', 'a', 'm', 's')
('s', 'e', 'm', 'a')
('e', 's', 'm', 'a')
('e', 'm', 's', 'a')
('e', 'm', 'a', 's')
0 -

def anagrams(s, dictionary):
  for p in permutations(s):
    word = "".join(p)
    if word in dictionary:
      yield word
mydict = {"valid", "words", "go", "here", ..., }

for a in anagrams("same"):
  print(a)
(X, a, b, c)
(a, X, b, c)
(a, b, X, c)
(a, b, c, X)
0

Bài viết này được tạo để bao gồm một số chương trình trong Python, nhận được hai chuỗi của người dùng vào thời gian chạy và kiểm tra xem hai chuỗi có phải là ANAGRAM hay không. Dưới đây là danh sách các chương trình:

Nội dung chính ShowShow

  • Chuỗi anagram là gì?
  • Kiểm tra hai chuỗi là cách sử dụng cho vòng lặp
  • Kiểm tra chuỗi anagram bằng cách sắp xếp ()
  • Kiểm tra chuỗi anagram bằng chức năng
  • Kiểm tra chuỗi anagram bằng lớp
  • Làm thế nào để bạn thực hiện một chương trình ANAGRAM trong Python?
  • Làm thế nào để bạn tìm thấy đảo chữ của một câu trong Python?
  • Ý nghĩa của Anagram trong Python là gì?
  • Làm thế nào để bạn kiểm tra xem hai từ có phải là đảo chữ trong Python không?

  • Dưới đây là mã nguồn của chương trình Python để phát hiện nếu hai chuỗi là đảo chữ.Đầu ra chương trình cũng được hiển thị dưới đây.S1 = RAW_INPUT ("Nhập chuỗi đầu tiên:") S2 = RAW_INPUT ("Nhập chuỗi thứ hai:") if (Sắp xếp (S1) == Sắp xếp (S2)): In ("Các chuỗi là ANAGRAMS.")"Các chuỗi không phải là đối thủ.") 1.for loop, without sorting the string
  • Bài viết này được tạo để bao gồm một số chương trình trong Python, nhận được hai chuỗi của người dùng vào thời gian chạy và kiểm tra xem hai chuỗi có phải là ANAGRAM hay không. Dưới đây là danh sách các chương trình:sorted() Function
  • Nội dung chính Show
  • Chuỗi anagram là gì?

Kiểm tra hai chuỗi là cách sử dụng cho vòng lặp

Chuỗi anagram là gì?

Kiểm tra hai chuỗi là cách sử dụng cho vòng lặp

  • Kiểm tra chuỗi anagram bằng cách sắp xếp ()
  • Kiểm tra hai chuỗi là đảo chữ hoặc không sử dụng cho vòng lặp mà không cần sắp xếp chuỗifor loop, without sorting the string
  • Sử dụng hàm sort ()sorted() Function

Sử dụng chức năng do người dùng xác địnhabc and cba are two anagram strings. Similarly, creative and reactive are also anagram. That is, characters of creative can be rearranged to form reactive and vice-versa.

Kiểm tra hai chuỗi là cách sử dụng cho vòng lặp

Chương trình này được tạo bằng cách sử dụng vòng lặp để kiểm tra xem hai chuỗi được nhập bởi người dùng có bị đối nghịch hay không. Câu hỏi là, viết một chương trình Python để kiểm tra ANAGram hay không mà không sắp xếp chuỗi. Đây là câu trả lời của nó:for loop to check whether the two strings entered by user are anagram or not. The question is, write a Python program to check Anagram or not without sorting the string. Here is its answer:for loop to check whether the two strings entered by user are anagram or not. The question is, write a Python program to check Anagram or not without sorting the string. Here is its answer:

(X, a, b, c)
(a, X, b, c)
(a, b, X, c)
(a, b, c, X)
1

Đây là mẫu chạy mẫu của nó:

Bây giờ cung cấp hai chuỗi đầu vào nói hãy lắng nghe đầu tiên và im lặng dưới dạng chuỗi thứ hai và nhấn phím

('s', 'a', 'm', 'e')
('a', 's', 'm', 'e')
('a', 'm', 's', 'e')
('a', 'm', 'e', 's')
('s', 'm', 'a', 'e')
('m', 's', 'a', 'e')
('m', 'a', 's', 'e')
('m', 'a', 'e', 's')
('s', 'm', 'e', 'a')
('m', 's', 'e', 'a')
('m', 'e', 's', 'a')
('m', 'e', 'a', 's')
('s', 'a', 'e', 'm')
('a', 's', 'e', 'm')
('a', 'e', 's', 'm')
('a', 'e', 'm', 's')
('s', 'e', 'a', 'm')
('e', 's', 'a', 'm')
('e', 'a', 's', 'm')
('e', 'a', 'm', 's')
('s', 'e', 'm', 'a')
('e', 's', 'm', 'a')
('e', 'm', 's', 'a')
('e', 'm', 'a', 's')
1 để kiểm tra và in xem hai chuỗi này có phải là đảo chữ hay không như thể hiện trong ảnh chụp nhanh được đưa ra dưới đây:listen as first and silent as second string and press
('s', 'a', 'm', 'e')
('a', 's', 'm', 'e')
('a', 'm', 's', 'e')
('a', 'm', 'e', 's')
('s', 'm', 'a', 'e')
('m', 's', 'a', 'e')
('m', 'a', 's', 'e')
('m', 'a', 'e', 's')
('s', 'm', 'e', 'a')
('m', 's', 'e', 'a')
('m', 'e', 's', 'a')
('m', 'e', 'a', 's')
('s', 'a', 'e', 'm')
('a', 's', 'e', 'm')
('a', 'e', 's', 'm')
('a', 'e', 'm', 's')
('s', 'e', 'a', 'm')
('e', 's', 'a', 'm')
('e', 'a', 's', 'm')
('e', 'a', 'm', 's')
('s', 'e', 'm', 'a')
('e', 's', 'm', 'a')
('e', 'm', 's', 'a')
('e', 'm', 'a', 's')
1 key to check and print whether these two strings are anagram or not as shown in the snapshot given below:listen as first and silent as second string and press
('s', 'a', 'm', 'e')
('a', 's', 'm', 'e')
('a', 'm', 's', 'e')
('a', 'm', 'e', 's')
('s', 'm', 'a', 'e')
('m', 's', 'a', 'e')
('m', 'a', 's', 'e')
('m', 'a', 'e', 's')
('s', 'm', 'e', 'a')
('m', 's', 'e', 'a')
('m', 'e', 's', 'a')
('m', 'e', 'a', 's')
('s', 'a', 'e', 'm')
('a', 's', 'e', 'm')
('a', 'e', 's', 'm')
('a', 'e', 'm', 's')
('s', 'e', 'a', 'm')
('e', 's', 'a', 'm')
('e', 'a', 's', 'm')
('e', 'a', 'm', 's')
('s', 'e', 'm', 'a')
('e', 's', 'm', 'a')
('e', 'm', 's', 'a')
('e', 'm', 'a', 's')
1 key to check and print whether these two strings are anagram or not as shown in the snapshot given below:

Dưới đây là một mẫu chạy khác với người dùng đầu vào nghe và silenx là chuỗi thứ nhất và thứ hai:listen and silenx as first and second string:listen and silenx as first and second string:

Và đây là lần chạy mẫu thứ ba với mã đầu vào của người dùng và cracker là chuỗi thứ nhất và thứ hai:codes and cracker as first and second string:codes and cracker as first and second string:

Lưu ý - Phương thức str () được sử dụng để chuyển đổi bất kỳ loại giá trị nào thành loại chuỗi. Và phương thức Len () trả về độ dài của chuỗi được truyền dưới dạng đối số của nó.The str() method is used to convert any type of value to a string type. And len() method returns length of string passed as its argument.The str() method is used to convert any type of value to a string type. And len() method returns length of string passed as its argument.

Việc chạy khô của chương trình ở trên với người dùng đầu vào nghe và im lặng, đi như:listen and silent, goes like:listen and silent, goes like:

  • Các giá trị ban đầu, TEXTONE = Nghe (được nhập bởi người dùng), TextTwo = im lặng (được nhập bởi người dùng), đã tìm thấy = 0, notfound = 0textOne = listen (entered by user), textTwo = silent (entered by user), found = 0, notFound = 0textOne = listen (entered by user), textTwo = silent (entered by user), found = 0, notFound = 0
  • Bây giờ sử dụng phương thức Len (), độ dài của chuỗi thứ nhất và thứ hai được khởi tạo thành các biến lenone và lentwo. Vì vậy, lenone = 6 và lentwo = 6len() method, the length of first and second string gets initialized to lenOne and lenTwo variables. So lenOne=6 and lenTwo=6len() method, the length of first and second string gets initialized to lenOne and lenTwo variables. So lenOne=6 and lenTwo=6
  • Vì điều kiện (của nếu) lenone == lentwo hoặc 6 == 6 đánh giá là đúng, do đó luồng chương trình đi vào bên trong cơ thể nếu cơ thể nàyif) lenOne == lenTwo or 6 == 6 evaluates to be true, therefore program flow goes inside this if's bodyif) lenOne == lenTwo or 6 == 6 evaluates to be true, therefore program flow goes inside this if's body
  • Phạm vi () trả về một chuỗi các giá trị, bắt đầu bằng 0 và tăng thêm 1 mỗi lần, theo mặc định. Tiếp tục cho đến khi Lenone-1, vì Lenone cung cấp như đối số của nórange() returns a sequence of values, starting with 0 and increments by 1 each time, by default. Continues until lenOne-1, since lenOne provided as its argumentrange() returns a sequence of values, starting with 0 and increments by 1 each time, by default. Continues until lenOne-1, since lenOne provided as its argument
  • Do đó, lần đầu thực thi, giá trị của tôi là 0, vì vậy tôii's value is 0, so i or 0i's value is 0, so i or 0<6 evaluates to be true, therefore program flow goes inside this for loop's body
  • Và 0 được khởi tạo để tìm thấy. Bây giờ có một vòng khác được thực thi0 gets initialized to found. Now there is another for loop that gets executed0 gets initialized to found. Now there is another for loop that gets executed
  • Vì vậy, J = 0 và vì 0 nhỏ hơn giá trị của Lenone, do đó, điều kiện đánh giá là đúng và luồng chương trình đi vào bên trong cơ thể của vòng lặp nàyj=0 and since 0 is less than lenOne's value, therefore the condition evaluates to be true, and program flow goes inside this for loop's bodyj=0 and since 0 is less than lenOne's value, therefore the condition evaluates to be true, and program flow goes inside this for loop's body
  • Bên trong vòng lặp này, tôi đã so sánh ký tự ở chỉ mục hiện tại của chuỗi thứ nhất với tất cả các ký tự của chuỗi thứ hai. Đó là, nếu ký tự của chuỗi thứ nhất được kết hợp với bất kỳ ký tự nào của chuỗi thứ hai, thì 1 sẽ được lưu trữ để tìm và sử dụng từ khóa Break, việc thực hiện lại cho vòng lặp này sẽ bị bỏ qua1 gets stored to found and using break keyword, remaining execution of this for loop gets skipped1 gets stored to found and using break keyword, remaining execution of this for loop gets skipped
  • Và sử dụng điều kiện tìm thấy == 0, chúng tôi đã kiểm tra xem luồng chương trình có đi vào bên trong cơ thể nếu có hay không. Nghĩa là, nếu điều kiện nếu trước đó đánh giá là đúng, thì chúng ta đã tiếp tục, nếu không, sẽ khởi tạo 1 thành không phát hiện và sử dụng từ khóa Break, bỏ qua việc thực hiện còn lại bên ngoài cho vòng lặpfound==0 condition, we've checked whether program flow goes inside previous if's body or not. That is, if previous if's condition evaluates to be true, then we've to continue, otherwise, initialize 1 to notFound and using break keyword, skip remaining execution of outer for loopfound==0 condition, we've checked whether program flow goes inside previous if's body or not. That is, if previous if's condition evaluates to be true, then we've to continue, otherwise, initialize 1 to notFound and using break keyword, skip remaining execution of outer for loop
  • Theo cách này, tôi đã so sánh tính cách theo cách tính cách và đã kiểm tra xem hai chuỗi được nhập bởi người dùng có bị đối tượng hay không
  • Vì mỗi ký tự của chuỗi thứ nhất đều có sẵn trong chuỗi thứ hai, do đó luồng chương trình không bao giờ đi vào bên trong phần thân nếu điều kiện được tìm thấy == 0. Để 1 không bao giờ được khởi tạo thành biến không phát hiện. Và điều kiện không phát hiện được == 1 không đánh giá là đúng, do đó tuyên bố khác được thực thiif whose condition is found==0. So that 1 never gets initialized to notFound variable. And the condition notFound==1 doesn't evaluates to be true, therefore else's statement gets executedif whose condition is found==0. So that 1 never gets initialized to notFound variable. And the condition notFound==1 doesn't evaluates to be true, therefore else's statement gets executed
  • Chuỗi in là ANAGRAMStrings are AnagramStrings are Anagram

Phiên bản sửa đổi của chương trình trước

Chương trình này sử dụng phương thức Sắp xếp () để sắp xếp chuỗi và so sánh các chuỗi theo ký tự theo cách ký tự, để kiểm tra xem hai chuỗi có phải là đảo chữ hay không. End = được sử dụng để bỏ qua việc chèn một dòng mới tự động bằng print ()sorted() method to sort the string and compares strings in character by character manner, to check whether two strings are anagram or not. The end= is used to skip inserting an automatic newline using print()sorted() method to sort the string and compares strings in character by character manner, to check whether two strings are anagram or not. The end= is used to skip inserting an automatic newline using print()

(X, a, b, c)
(a, X, b, c)
(a, b, X, c)
(a, b, c, X)
2

Dưới đây là chạy mẫu của nó với người dùng đầu vào sáng tạo và phản ứng như hai chuỗi:creative and reactive as two strings:creative and reactive as two strings:

Kiểm tra chuỗi anagram bằng cách sắp xếp ()

Chương trình này sử dụng phương thức Sắp xếp () để thực hiện cùng một công việc như chương trình trước đó. Hai chuỗi được nhập bởi người dùng được so sánh trực tiếp bằng toán tử ==.sorted() method to do the same job as previous program does. The two strings entered by user gets compared directly using == operator.sorted() method to do the same job as previous program does. The two strings entered by user gets compared directly using == operator.

(X, a, b, c)
(a, X, b, c)
(a, b, X, c)
(a, b, c, X)
3

Dưới đây là mẫu chạy mẫu của nó với người dùng đầu vào Sadder và Dreads:sadder and dreads:sadder and dreads:

Kiểm tra chuỗi anagram bằng chức năng

Chương trình này được tạo bằng hàm do người dùng xác định có tên là Checkanag (). Hàm nhận được hai chuỗi dưới dạng đối số của nó và trả về 1 nếu cả hai chuỗi là ANAGRAM.CheckAnag(). The function receives two strings as its argument and returns 1 if both strings are anagram.CheckAnag(). The function receives two strings as its argument and returns 1 if both strings are anagram.

(X, a, b, c)
(a, X, b, c)
(a, b, X, c)
(a, b, c, X)
4

Kiểm tra chuỗi anagram bằng lớp

Đây là chương trình cuối cùng được tạo bằng lớp, một tính năng hướng đối tượng của Python. Để truy cập chức năng thành viên của một lớp, một đối tượng được yêu cầu. Do đó, một đối tượng có tên OBJ được tạo từ CodeScracker lớp để truy cập vào hàm thành viên của nó có tên Checkanag () bằng toán tử DOT (.).obj is created of class CodesCracker to access its member function named CheckAnag() using dot (.) operator.obj is created of class CodesCracker to access its member function named CheckAnag() using dot (.) operator.

(X, a, b, c)
(a, X, b, c)
(a, b, X, c)
(a, b, c, X)
5

Thử nghiệm trực tuyến Python


«Chương trình chương trình trước đây»Next Program » Next Program »



Làm thế nào để bạn thực hiện một chương trình ANAGRAM trong Python?

Thí dụ -...

def Anogram_check (str1, str2):.

# Chuỗi được sắp xếp và kiểm tra xem cả hai có khớp hay không ..

if (Sắp xếp (str1) == Sắp xếp (str2)):.

In ("Cả hai chuỗi là một đảo chữ.").

In ("Cả hai chuỗi không phải là một đối thủ.").

String1 = "Python".

String2 = "ythopn".

Làm thế nào để bạn tìm thấy đảo chữ của một câu trong Python?

Lower () # Kiểm tra độ dài nếu giống nhau nếu (len (str1) == len (str2)): # Sắp xếp các chuỗi sort_str1 = sort (str1) sort_str2 = sort (str2) # nếu mảng char được sắp xếp giống nhau nếu (sort_str1 = = sort_str2): in (str1 + "và" + str2 + "là ANAGRAM.") # check if length is same if(len(str1) == len(str2)): # sort the strings sorted_str1 = sorted(str1) sorted_str2 = sorted(str2) # if sorted char arrays are same if(sorted_str1 == sorted_str2): print(str1 + " and " + str2 + " are anagram.") else: print(str1 + " and " + str2 + " are not anagram.") else: print(str1 ... # check if length is same if(len(str1) == len(str2)): # sort the strings sorted_str1 = sorted(str1) sorted_str2 = sorted(str2) # if sorted char arrays are same if(sorted_str1 == sorted_str2): print(str1 + " and " + str2 + " are anagram.") else: print(str1 + " and " + str2 + " are not anagram.") else: print(str1 ...

Ý nghĩa của Anagram trong Python là gì?

Một đảo chữ của một chuỗi là một chuỗi khác chứa cùng các ký tự, chỉ thứ tự của các ký tự có thể khác nhau.Ví dụ, ABCD, và Dab Dabc là những kẻ gây rối của nhau.Ví dụ: Đầu vào: str1 = Hồi ABCD, str2 = đầu ra của Dab Dabc: Đúng đầu vào: str1 = Hồi ABCF, str2 = đầu ra của KABC KABC: Sai.another string that contains same characters, only the order of characters can be different. For example, “abcd” and “dabc” are anagram of each other. Examples: Input : str1 = “abcd”, str2 = “dabc” Output : True Input : str1 = “abcf”, str2 = “kabc” Output : False.another string that contains same characters, only the order of characters can be different. For example, “abcd” and “dabc” are anagram of each other. Examples: Input : str1 = “abcd”, str2 = “dabc” Output : True Input : str1 = “abcf”, str2 = “kabc” Output : False.

Làm thế nào để bạn kiểm tra xem hai từ có phải là đảo chữ trong Python không?

Dưới đây là mã nguồn của chương trình Python để phát hiện nếu hai chuỗi là đảo chữ.Đầu ra chương trình cũng được hiển thị dưới đây.S1 = RAW_INPUT ("Nhập chuỗi đầu tiên:") S2 = RAW_INPUT ("Nhập chuỗi thứ hai:") if (Sắp xếp (S1) == Sắp xếp (S2)): In ("Các chuỗi là ANAGRAMS.")"Các chuỗi không phải là đối thủ.") 1.