Last active
March 8, 2020 11:07
-
-
Save Joseph-Bake/9842fa6512c26fb0006c15bd30850ee8 to your computer and use it in GitHub Desktop.
Zig-Zag Number
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#ある数より前のリストl1から選ぶよ | |
#ある数より後ろのリストはl2だよ | |
def choose_l1(l1,l2,zigzaglist): | |
global zigzagnum,write_flag | |
#前のリストがなかったら終わるよ | |
if l1==[]: | |
if l2==[]: | |
zigzagnum +=1 | |
return 1 | |
else: | |
return 0 | |
#前のリストがあったらその中から数をとってきてその数の前後でリストを分けるよ | |
for i in range(len(l1)): | |
ll1 = l1[:i] | |
ll2 = l1[i+1:]+l2 | |
zigzaglist_temp = zigzaglist + [l1[i]] | |
#とってきた数より後ろのリストはl2とがっちゃんこして次は後ろのリストから選ぶよ | |
flag = choose_l2(ll1,ll2,zigzaglist_temp) | |
if flag and write_flag: | |
print(zigzaglist_temp) | |
else: | |
pass | |
#ある数より後ろのリストl2から選ぶよ | |
#ある数より前のリストはl1だよ | |
def choose_l2(l1,l2,zigzaglist): | |
global zigzagnum,write_flag | |
#後ろのリストがなかったら終わるよ | |
if l2==[]: | |
if l1==[]: | |
zigzagnum +=1 | |
return 1 | |
else: | |
return 0 | |
#後ろのリストがあったらその中から数をとってきてその数の前後でリストを分けるよ | |
for i in range(len(l2)): | |
ll1 = l1+l2[:i] | |
ll2 = l2[i+1:] | |
zigzaglist_temp = zigzaglist + [l2[i]] | |
#とってきた数より前のリストはl1とがっちゃんこして次は前のリストから選ぶよ | |
flag = choose_l1(ll1,ll2,zigzaglist_temp) | |
if flag and write_flag: | |
print(zigzaglist_temp) | |
else: | |
pass | |
#Alt_nの計算をするよ | |
def zigzag(n): | |
global zigzagnum,write_flag | |
if n==0 or n==1 or n==2: | |
return 1 | |
l = list(range(1,n+1)) | |
zigzagnum = 0 | |
#ある数を選んでその前と後ろでリストを分けて後ろのリストから選ぶよ | |
#ここでchoose_l2からchoose_l1と変えたらたぶんRAlt_nが計算できるよ | |
for i in range(n): | |
l1 = l[:i] | |
l2 = l[i+1:] | |
zigzaglist = [l[i]] | |
flag = choose_l2(l1,l2,zigzaglist) | |
return zigzagnum | |
#リストを列挙するよ :1 | |
# しないよ :0 | |
write_flag = 0 | |
#Alt_nまで計算するよ | |
n = 11 | |
for i in range(n+1): | |
print('Alt_', i , ':', zigzag(i)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment