アルゴリズム:変換プログラマの単語
4658 ワード
質問する
2つの単語begin、target、単語の集合語があります.次のルールを使用して、beginからtargetに変換する最短変換プロセスを検索します.
一度に1つのアルファベットしか置き換えられません. 個の単語にしか変換できません.
たとえば、beginがhit、targetがcog、単語が[hot、dog、lot、log、cog]の場合、hit->hot->dot->dogなどの4つのステップで変換できます. 2つの単語begin、target、および単語の集約語をパラメータとして指定する場合は、少なくともいくつかのステップを経てbeginをtargetに変換するには、解法関数を記述します.
I/O例
begin target words return
hit cog [hot, dot, dog, lot, log, cog] 4
hit cog [hot, dot, dog, lot, log] 0
I/O例説明
例1
問題の例は次のとおりです.
例2
単語にないため、ターゲットcogを変換できません.
に答える
これは簡単な質問で、begin単語をtarget単語に変換するにはいくつかのステップが必要です.
単語は一度に1文字しか変えられない.
だから今の単語とは違う単語を探すために、
現在の単語と逐字比較しようとすると,他の単語の総数が1つであれば返す.
ここにはPythonジェネレータと生産量の概念があります.
関数Aで順次返す収益率値が定義されている場合、関数Aは反復可能オブジェクト、ジェネレータとなります.
したがってgenerator「get neign()」は、条件を満たす要素をクエリーし、distに書き込み、キューに格納します.キューに条件を満たす要素がない場合、distは書き込みターゲットのステップを返します.
最近は検索アルゴリズムのリズムを見ていて、初めて見たときも「アクセス」などの表現は感じられませんでした.
だから直接問題と解答を見て勉強します.
このプールはプログラマのpython 3の最上位にあります.
ZipやEyieldなどのPython機能の使用はとても良いです.
2つの単語begin、target、単語の集合語があります.次のルールを使用して、beginからtargetに変換する最短変換プロセスを検索します.
一度に1つのアルファベット
たとえば、beginがhit、targetがcog、単語が[hot、dog、lot、log、cog]の場合、hit->hot->dot->dogなどの4つのステップで変換できます.
I/O例
begin target words return
hit cog [hot, dot, dog, lot, log, cog] 4
hit cog [hot, dot, dog, lot, log] 0
I/O例説明
例1
問題の例は次のとおりです.
例2
単語にないため、ターゲットcogを変換できません.
に答える
これは簡単な質問で、begin単語をtarget単語に変換するにはいくつかのステップが必要です.
単語は一度に1文字しか変えられない.
だから今の単語とは違う単語を探すために、
現在の単語と逐字比較しようとすると,他の単語の総数が1つであれば返す.
ここにはPythonジェネレータと生産量の概念があります.
関数Aで順次返す収益率値が定義されている場合、関数Aは反復可能オブジェクト、ジェネレータとなります.
したがってgenerator「get neign()」は、条件を満たす要素をクエリーし、distに書き込み、キューに格納します.キューに条件を満たす要素がない場合、distは書き込みターゲットのステップを返します.
from collections import deque
def get_adjacent(current, words):
for word in words:
count = 0
for c, w in zip(current, word):
if c != w:
count += 1
if count == 1:
yield word
def solution(begin, target, words):
dist = {begin: 0}
queue = deque([begin])
while queue:
current = queue.popleft()
for next_word in get_adjacent(current, words):
if next_word not in dist:
dist[next_word] = dist[current] + 1
queue.append(next_word)
return dist.get(target, 0)
Thought:最近は検索アルゴリズムのリズムを見ていて、初めて見たときも「アクセス」などの表現は感じられませんでした.
だから直接問題と解答を見て勉強します.
このプールはプログラマのpython 3の最上位にあります.
ZipやEyieldなどのPython機能の使用はとても良いです.
Reference
この問題について(アルゴリズム:変換プログラマの単語), 我々は、より多くの情報をここで見つけました https://velog.io/@hanguk0726/알고리듬-프로그래머스-단어변환テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol