【就プロ】ブレース展開
はじめに
ブレース展開とは、bashの機能の一つで、(他にも色々あるのですが)簡単に文字列を複数生成するための方法です。
早速ですが、例です。
$ echo a{l,m,n} al am an $ echo {l,m}{a,b} la lb ma mb
上のように共通部分を外に出して書いたり、交差して足したりできるので簡単に書くことができます。
説明
{文字列1,文字列2,...,文字列N}
カンマで区切られた入力文字列をそのままスペース区切りにして出力します。
$ echo {a,b,c} a b c
<先頭文字列>{.....}
数式の展開のように先頭文字列を中括弧内の頭に付けます。
$ echo a{m,n} am an
{.....}<末尾文字列>
こちらも先頭と同じように今後は末尾に付けます。
$ echo {m,n}b mb nb
<先頭文字列>{.....}<末尾文字列>
& echo a{m,n}b amb anb
実装
Python
# -*- coding: utf-8 -*- if __name__=="__main__": S = input() start_pos = S.find("{") end_pos = S.find("}") top = S[:start_pos] inside = S[start_pos + 1:end_pos] back = S[end_pos + 1:] inside_list = list(inside) post_pos = 0 curr_pos = 0 output = "" while(True): curr_pos = inside.find(",") if curr_pos == -1: break output += (top + inside[post_pos: curr_pos] + back + " ") inside_list[curr_pos] = "_" inside = "".join(inside_list) post_pos = curr_pos + 1 output += (top + inside[post_pos:] + back) print(output)