首页 > 解决方案 > 在序言中编写语法并且无法使其正常工作

问题描述

这是课堂作业,但我不知道如何解决我的问题。我写了以下内容:

sentence(S0, S):- f(S0,S); t(S0, S1),n(S1, S2),t(S2, S).
f(S0, S):- termIf(S0, S1), pLeft(S1, S2), b(S2, S3), pRight(S3, S4), termThen(S4, S5), termBegin(S5, S6),sentence(S6, S7), termEnd(S7, S); termIf(S0, S1), pLeft(S1, S2), b(S2, S3), pRight(S3, S4), termThen(S4, S5),termBegin(S5, S6),sentence(S6, S7), termElse(S7, S8), sentence(S8, S9), termEnd(S9, S).
b(S0, S):- t(S0, S1), e(S1, S2), t(S2, S). 
termIf(S0, S) :- S0=[if|S].
termThen(S0, S):- S0=[then|S].
termBegin(S0, S):- S0=[begin|S].
termEnd(S0, S):- S0=[end|S].
termElse(S0, S):- S0=[else|S].
pLeft(S0, S):- S0=['('|S].
pRight(S0, S):- S0=[')'|S].
t(S0, S):- S0=[x|S].
t(S0, S):- S0=[y|S].
t(S0, S):- S0=[z|S].
t(S0, S):- S0=[1|S].
t(S0, S):- S0=[0|S].
e(S0, S):- S0=[>|S].
e(S0, S):- S0=[<|S].
n(S0, S):- S0=[+|S].
n(S0, S):- S0=[-|S].
n(S0, S):- S0=[=|S].

我做了一个跟踪:

[trace] [5]  ?- sentence([if,'(', x, >, 0,')', then, begin, [x, =, 1], end], X).
   Call: (89) sentence([if, '(', x, >, 0, ')', then, begin|...], _66584) ? creep
   Call: (90) f([if, '(', x, >, 0, ')', then, begin|...], _66584) ? creep
   Call: (91) termIf([if, '(', x, >, 0, ')', then, begin|...], _67166) ? creep
   Call: (92) [if, '(', x, >, 0, ')', then, begin|...]=[if|_67158] ? creep
   Exit: (92) [if, '(', x, >, 0, ')', then, begin|...]=[if, '(', x, >, 0, ')', then, begin|...] ? creep
   Exit: (91) termIf([if, '(', x, >, 0, ')', then, begin|...], ['(', x, >, 0, ')', then, begin, [...|...]|...]) ? creep
   Call: (91) pLeft(['(', x, >, 0, ')', then, begin, [...|...]|...], _67348) ? creep
   Call: (92) ['(', x, >, 0, ')', then, begin, [...|...]|...]=['('|_67340] ? creep
   Exit: (92) ['(', x, >, 0, ')', then, begin, [...|...]|...]=['(', x, >, 0, ')', then, begin, [...|...]|...] ? creep
   Exit: (91) pLeft(['(', x, >, 0, ')', then, begin, [...|...]|...], [x, >, 0, ')', then, begin, [x|...], end]) ? creep
   Call: (91) b([x, >, 0, ')', then, begin, [x|...], end], _67530) ? creep
   Call: (92) t([x, >, 0, ')', then, begin, [x|...], end], _67574) ? creep
   Call: (93) [x, >, 0, ')', then, begin, [x|...], end]=[x|_67566] ? creep
   Exit: (93) [x, >, 0, ')', then, begin, [x|...], end]=[x, >, 0, ')', then, begin, [x|...], end] ? creep
   Exit: (92) t([x, >, 0, ')', then, begin, [x|...], end], [>, 0, ')', then, begin, [x, =|...], end]) ? creep
   Call: (92) e([>, 0, ')', then, begin, [x, =|...], end], _67756) ? creep
   Call: (93) [>, 0, ')', then, begin, [x, =|...], end]=[>|_67748] ? creep
   Exit: (93) [>, 0, ')', then, begin, [x, =|...], end]=[>, 0, ')', then, begin, [x, =|...], end] ? creep
   Exit: (92) e([>, 0, ')', then, begin, [x, =|...], end], [0, ')', then, begin, [x, =, 1], end]) ? creep
   Call: (92) t([0, ')', then, begin, [x, =, 1], end], _67938) ? creep
   Call: (93) [0, ')', then, begin, [x, =, 1], end]=[x|_67930] ? creep
   Fail: (93) [0, ')', then, begin, [x, =, 1], end]=[x|_67930] ? creep
   Redo: (92) t([0, ')', then, begin, [x, =, 1], end], _68076) ? creep
   Call: (93) [0, ')', then, begin, [x, =, 1], end]=[y|_68068] ? creep
   Fail: (93) [0, ')', then, begin, [x, =, 1], end]=[y|_68068] ? creep
   Redo: (92) t([0, ')', then, begin, [x, =, 1], end], _68214) ? creep
   Call: (93) [0, ')', then, begin, [x, =, 1], end]=[z|_68206] ? creep
   Fail: (93) [0, ')', then, begin, [x, =, 1], end]=[z|_68206] ? creep
   Redo: (92) t([0, ')', then, begin, [x, =, 1], end], _68352) ? creep
   Call: (93) [0, ')', then, begin, [x, =, 1], end]=[1|_68344] ? creep
   Fail: (93) [0, ')', then, begin, [x, =, 1], end]=[1|_68344] ? creep
   Redo: (92) t([0, ')', then, begin, [x, =, 1], end], _68490) ? creep
   Call: (93) [0, ')', then, begin, [x, =, 1], end]=[0|_68482] ? creep
   Exit: (93) [0, ')', then, begin, [x, =, 1], end]=[0, ')', then, begin, [x, =, 1], end] ? creep
   Exit: (92) t([0, ')', then, begin, [x, =, 1], end], [')', then, begin, [x, =, 1], end]) ? creep
   Exit: (91) b([x, >, 0, ')', then, begin, [x|...], end], [')', then, begin, [x, =, 1], end]) ? creep
   Call: (91) pRight([')', then, begin, [x, =, 1], end], _68716) ? creep
   Call: (92) [')', then, begin, [x, =, 1], end]=[')'|_68708] ? creep
   Exit: (92) [')', then, begin, [x, =, 1], end]=[')', then, begin, [x, =, 1], end] ? creep
   Exit: (91) pRight([')', then, begin, [x, =, 1], end], [then, begin, [x, =, 1], end]) ? creep
   Call: (91) termThen([then, begin, [x, =, 1], end], _68898) ? creep
   Call: (92) [then, begin, [x, =, 1], end]=[then|_68890] ? creep
   Exit: (92) [then, begin, [x, =, 1], end]=[then, begin, [x, =, 1], end] ? creep
   Exit: (91) termThen([then, begin, [x, =, 1], end], [begin, [x, =, 1], end]) ? creep
   Call: (91) termBegin([begin, [x, =, 1], end], _69080) ? creep
   Call: (92) [begin, [x, =, 1], end]=[begin|_69072] ? creep
   Exit: (92) [begin, [x, =, 1], end]=[begin, [x, =, 1], end] ? creep
   Exit: (91) termBegin([begin, [x, =, 1], end], [[x, =, 1], end]) ? creep
   Call: (91) sentence([[x, =, 1], end], _69262) ? creep
   Call: (92) f([[x, =, 1], end], _69306) ? creep
   Call: (93) termIf([[x, =, 1], end], _69350) ? creep
   Call: (94) [[x, =, 1], end]=[if|_69342] ? creep
   Fail: (94) [[x, =, 1], end]=[if|_69342] ? creep
   Fail: (93) termIf([[x, =, 1], end], _69488) ? creep
   Redo: (92) f([[x, =, 1], end], _69532) ? creep
   Call: (93) termIf([[x, =, 1], end], _69576) ? creep
   Call: (94) [[x, =, 1], end]=[if|_69568] ? creep
   Fail: (94) [[x, =, 1], end]=[if|_69568] ? creep
   Fail: (93) termIf([[x, =, 1], end], _69714) ? creep
   Fail: (92) f([[x, =, 1], end], _69758) ? creep
   Redo: (91) sentence([[x, =, 1], end], _69802) ? creep
   Call: (92) t([[x, =, 1], end], _69846) ? creep
   Call: (93) [[x, =, 1], end]=[x|_69838] ? creep
   Fail: (93) [[x, =, 1], end]=[x|_69838] ? creep
   Redo: (92) t([[x, =, 1], end], _69984) ? creep
   Call: (93) [[x, =, 1], end]=[y|_69976] ? creep
   Fail: (93) [[x, =, 1], end]=[y|_69976] ? creep
   Redo: (92) t([[x, =, 1], end], _70122) ? creep
   Call: (93) [[x, =, 1], end]=[z|_70114] ? creep
   Fail: (93) [[x, =, 1], end]=[z|_70114] ? creep
   Redo: (92) t([[x, =, 1], end], _70260) ? creep
 Call: (93) [[x, =, 1], end]=[1|_70252] ? creep
   Fail: (93) [[x, =, 1], end]=[1|_70252] ? creep
   Redo: (92) t([[x, =, 1], end], _70398) ? creep
   Call: (93) [[x, =, 1], end]=[0|_70390] ? creep
   Fail: (93) [[x, =, 1], end]=[0|_70390] ? creep
   Fail: (92) t([[x, =, 1], end], _70536) ? creep
   Fail: (91) sentence([[x, =, 1], end], _70580) ? creep
   Redo: (92) e([>, 0, ')', then, begin, [x, =|...], end], _70624) ? creep
   Call: (93) [>, 0, ')', then, begin, [x, =|...], end]=[<|_70616] ? creep
   Fail: (93) [>, 0, ')', then, begin, [x, =|...], end]=[<|_70616] ? creep
   Fail: (92) e([>, 0, ')', then, begin, [x, =|...], end], _70762) ? creep
   Redo: (92) t([x, >, 0, ')', then, begin, [x|...], end], _70806) ? creep
   Call: (93) [x, >, 0, ')', then, begin, [x|...], end]=[y|_70798] ? creep
   Fail: (93) [x, >, 0, ')', then, begin, [x|...], end]=[y|_70798] ? creep
   Redo: (92) t([x, >, 0, ')', then, begin, [x|...], end], _70944) ? creep
   Call: (93) [x, >, 0, ')', then, begin, [x|...], end]=[z|_70936] ? creep
   Fail: (93) [x, >, 0, ')', then, begin, [x|...], end]=[z|_70936] ? creep
   Redo: (92) t([x, >, 0, ')', then, begin, [x|...], end], _71082) ? creep
   Call: (93) [x, >, 0, ')', then, begin, [x|...], end]=[1|_71074] ? creep
   Fail: (93) [x, >, 0, ')', then, begin, [x|...], end]=[1|_71074] ? creep
   Redo: (92) t([x, >, 0, ')', then, begin, [x|...], end], _71220) ? creep
   Call: (93) [x, >, 0, ')', then, begin, [x|...], end]=[0|_71212] ? creep
   Fail: (93) [x, >, 0, ')', then, begin, [x|...], end]=[0|_71212] ? creep
   Fail: (92) t([x, >, 0, ')', then, begin, [x|...], end], _71358) ? creep
   Fail: (91) b([x, >, 0, ')', then, begin, [x|...], end], _71402) ? creep
   Redo: (90) f([if, '(', x, >, 0, ')', then, begin|...], _66584) ? creep
   Call: (91) termIf([if, '(', x, >, 0, ')', then, begin|...], _71490) ? creep
   Call: (92) [if, '(', x, >, 0, ')', then, begin|...]=[if|_71482] ? creep
   Exit: (92) [if, '(', x, >, 0, ')', then, begin|...]=[if, '(', x, >, 0, ')', then, begin|...] ? creep
   Exit: (91) termIf([if, '(', x, >, 0, ')', then, begin|...], ['(', x, >, 0, ')', then, begin, [...|...]|...]) ? creep
   Call: (91) pLeft(['(', x, >, 0, ')', then, begin, [...|...]|...], _71672) ? creep
   Call: (92) ['(', x, >, 0, ')', then, begin, [...|...]|...]=['('|_71664] ? creep
   Exit: (92) ['(', x, >, 0, ')', then, begin, [...|...]|...]=['(', x, >, 0, ')', then, begin, [...|...]|...] ? creep
   Exit: (91) pLeft(['(', x, >, 0, ')', then, begin, [...|...]|...], [x, >, 0, ')', then, begin, [x|...], end]) ? creep
   Call: (91) b([x, >, 0, ')', then, begin, [x|...], end], _71854) ? creep
   Call: (92) t([x, >, 0, ')', then, begin, [x|...], end], _71898) ? creep
   Call: (93) [x, >, 0, ')', then, begin, [x|...], end]=[x|_71890] ? creep
   Exit: (93) [x, >, 0, ')', then, begin, [x|...], end]=[x, >, 0, ')', then, begin, [x|...], end] ? creep
   Exit: (92) t([x, >, 0, ')', then, begin, [x|...], end], [>, 0, ')', then, begin, [x, =|...], end]) ? creep
   Call: (92) e([>, 0, ')', then, begin, [x, =|...], end], _72080) ? creep
   Call: (93) [>, 0, ')', then, begin, [x, =|...], end]=[>|_72072] ? creep
   Exit: (93) [>, 0, ')', then, begin, [x, =|...], end]=[>, 0, ')', then, begin, [x, =|...], end] ? creep
   Exit: (92) e([>, 0, ')', then, begin, [x, =|...], end], [0, ')', then, begin, [x, =, 1], end]) ? creep
   Call: (92) t([0, ')', then, begin, [x, =, 1], end], _72262) ? creep
   Call: (93) [0, ')', then, begin, [x, =, 1], end]=[x|_72254] ? creep
   Fail: (93) [0, ')', then, begin, [x, =, 1], end]=[x|_72254] ? creep
   Redo: (92) t([0, ')', then, begin, [x, =, 1], end], _72400) ? creep
   Call: (93) [0, ')', then, begin, [x, =, 1], end]=[y|_72392] ? creep
   Fail: (93) [0, ')', then, begin, [x, =, 1], end]=[y|_72392] ? creep
   Redo: (92) t([0, ')', then, begin, [x, =, 1], end], _72538) ? creep
   Call: (93) [0, ')', then, begin, [x, =, 1], end]=[z|_72530] ? creep
   Fail: (93) [0, ')', then, begin, [x, =, 1], end]=[z|_72530] ? creep
   Redo: (92) t([0, ')', then, begin, [x, =, 1], end], _72676) ? creep
   Call: (93) [0, ')', then, begin, [x, =, 1], end]=[1|_72668] ? creep
   Fail: (93) [0, ')', then, begin, [x, =, 1], end]=[1|_72668] ? creep
   Redo: (92) t([0, ')', then, begin, [x, =, 1], end], _72814) ? creep
   Call: (93) [0, ')', then, begin, [x, =, 1], end]=[0|_72806] ? creep
   Exit: (93) [0, ')', then, begin, [x, =, 1], end]=[0, ')', then, begin, [x, =, 1], end] ? creep
   Exit: (92) t([0, ')', then, begin, [x, =, 1], end], [')', then, begin, [x, =, 1], end]) ? creep
   Exit: (91) b([x, >, 0, ')', then, begin, [x|...], end], [')', then, begin, [x, =, 1], end]) ? creep
   Call: (91) pRight([')', then, begin, [x, =, 1], end], _73040) ? creep
   Call: (92) [')', then, begin, [x, =, 1], end]=[')'|_73032] ? creep
   Exit: (92) [')', then, begin, [x, =, 1], end]=[')', then, begin, [x, =, 1], end] ? creep
   Exit: (91) pRight([')', then, begin, [x, =, 1], end], [then, begin, [x, =, 1], end]) ? creep
   Call: (91) termThen([then, begin, [x, =, 1], end], _73222) ? creep
   Call: (92) [then, begin, [x, =, 1], end]=[then|_73214] ? creep
   Exit: (92) [then, begin, [x, =, 1], end]=[then, begin, [x, =, 1], end] ? creep
   Exit: (91) termThen([then, begin, [x, =, 1], end], [begin, [x, =, 1], end]) ? creep
   Call: (91) termBegin([begin, [x, =, 1], end], _73404) ? creep
   Call: (92) [begin, [x, =, 1], end]=[begin|_73396] ? creep
   Exit: (92) [begin, [x, =, 1], end]=[begin, [x, =, 1], end] ? creep
   Exit: (91) termBegin([begin, [x, =, 1], end], [[x, =, 1], end]) ? creep
   Call: (91) sentence([[x, =, 1], end], _73586) ? creep
   Call: (92) f([[x, =, 1], end], _73630)
Ԁ   Fail: (93) [0, ')', then, begin, [x, =, 1], end]=[1|_72668] ? creep
   Redo: (92) t([0, ')', then, begin, [x, =, 1], end], _72814) ? creep
   Call: (93) [0, ')', then, begin, [x, =, 1], end]=[0|_72806] ? creep
   Exit: (93) [0, ')', then, begin, [x, =, 1], end]=[0, ')', then, begin, [x, =, 1], end] ? creep
   Exit: (92) t([0, ')', then, begin, [x, =, 1], end], [')', then, begin, [x, =, 1], end]) ? creep
   Exit: (91) b([x, >, 0, ')', then, begin, [x|...], end], [')', then, begin, [x, =, 1], end]) ? creep
   Call: (91) pRight([')', then, begin, [x, =, 1], end], _73040) ? creep
   Call: (92) [')', then, begin, [x, =, 1], end]=[')'|_73032] ? creep
   Exit: (92) [')', then, begin, [x, =, 1], end]=[')', then, begin, [x, =, 1], end] ? creep
   Exit: (91) pRight([')', then, begin, [x, =, 1], end], [then, begin, [x, =, 1], end]) ? creep
   Call: (91) termThen([then, begin, [x, =, 1], end], _73222) ? creep
   Call: (92) [then, begin, [x, =, 1], end]=[then|_73214] ? creep
   Exit: (92) [then, begin, [x, =, 1], end]=[then, begin, [x, =, 1], end] ? creep
   Exit: (91) termThen([then, begin, [x, =, 1], end], [begin, [x, =, 1], end]) ? creep
   Call: (91) termBegin([begin, [x, =, 1], end], _73404) ? creep
   Call: (92) [begin, [x, =, 1], end]=[begin|_73396] ? creep
   Exit: (92) [begin, [x, =, 1], end]=[begin, [x, =, 1], end] ? creep
   Exit: (91) termBegin([begin, [x, =, 1], end], [[x, =, 1], end]) ? creep
   Call: (91) sentence([[x, =, 1], end], _73586) ? creep
   Call: (92) f([[x, =, 1], end], _73630) ? creep
   Call: (93) termIf([[x, =, 1], end], _73674) ? creep
   Call: (94) [[x, =, 1], end]=[if|_73666] ? creep
   Fail: (94) [[x, =, 1], end]=[if|_73666] ? creep
   Fail: (93) termIf([[x, =, 1], end], _73812) ? creep
   Redo: (92) f([[x, =, 1], end], _73856) ? creep
   Call: (93) termIf([[x, =, 1], end], _73900) ? creep
   Call: (94) [[x, =, 1], end]=[if|_73892] ? creep
   Fail: (94) [[x, =, 1], end]=[if|_73892] ? creep
   Fail: (93) termIf([[x, =, 1], end], _74038) ? creep
   Fail: (92) f([[x, =, 1], end], _74082) ? creep
   Redo: (91) sentence([[x, =, 1], end], _74126) ? creep
   Call: (92) t([[x, =, 1], end], _74170) ? creep
   Call: (93) [[x, =, 1], end]=[x|_74162] ? creep
   Fail: (93) [[x, =, 1], end]=[x|_74162] ? creep
   Redo: (92) t([[x, =, 1], end], _74308) ? creep
   Call: (93) [[x, =, 1], end]=[y|_74300] ? creep
   Fail: (93) [[x, =, 1], end]=[y|_74300] ? creep
   Redo: (92) t([[x, =, 1], end], _74446) ? creep
   Call: (93) [[x, =, 1], end]=[z|_74438] ? creep
   Fail: (93) [[x, =, 1], end]=[z|_74438] ? creep
   Redo: (92) t([[x, =, 1], end], _74584) ? creep
   Call: (93) [[x, =, 1], end]=[1|_74576] ? creep
   Fail: (93) [[x, =, 1], end]=[1|_74576] ? creep
   Redo: (92) t([[x, =, 1], end], _74722) ? creep
   Call: (93) [[x, =, 1], end]=[0|_74714] ? creep
   Fail: (93) [[x, =, 1], end]=[0|_74714] ? creep
   Fail: (92) t([[x, =, 1], end], _74860) ? creep
   Fail: (91) sentence([[x, =, 1], end], _74904) ? creep
   Redo: (92) e([>, 0, ')', then, begin, [x, =|...], end], _74948) ? creep
   Call: (93) [>, 0, ')', then, begin, [x, =|...], end]=[<|_74940] ? creep
   Fail: (93) [>, 0, ')', then, begin, [x, =|...], end]=[<|_74940] ? creep
   Fail: (92) e([>, 0, ')', then, begin, [x, =|...], end], _75086) ? creep
   Redo: (92) t([x, >, 0, ')', then, begin, [x|...], end], _75130) ? creep
   Call: (93) [x, >, 0, ')', then, begin, [x|...], end]=[y|_75122] ? creep
   Fail: (93) [x, >, 0, ')', then, begin, [x|...], end]=[y|_75122] ? creep
   Redo: (92) t([x, >, 0, ')', then, begin, [x|...], end], _75268) ? creep
   Call: (93) [x, >, 0, ')', then, begin, [x|...], end]=[z|_75260] ? creep
   Fail: (93) [x, >, 0, ')', then, begin, [x|...], end]=[z|_75260] ? creep
   Redo: (92) t([x, >, 0, ')', then, begin, [x|...], end], _75406) ? creep
   Call: (93) [x, >, 0, ')', then, begin, [x|...], end]=[1|_75398] ? creep
   Fail: (93) [x, >, 0, ')', then, begin, [x|...], end]=[1|_75398] ? creep
   Redo: (92) t([x, >, 0, ')', then, begin, [x|...], end], _75544) ? creep
   Call: (93) [x, >, 0, ')', then, begin, [x|...], end]=[0|_75536] ? creep
   Fail: (93) [x, >, 0, ')', then, begin, [x|...], end]=[0|_75536] ? creep
   Fail: (92) t([x, >, 0, ')', then, begin, [x|...], end], _75682) ? creep
   Fail: (91) b([x, >, 0, ')', then, begin, [x|...], end], _75726) ? creep
   Fail: (90) f([if, '(', x, >, 0, ')', then, begin|...], _66584) ? creep
   Redo: (89) sentence([if, '(', x, >, 0, ')', then, begin|...], _66584) ? creep
   Call: (90) t([if, '(', x, >, 0, ')', then, begin|...], _75858) ? creep
   Call: (91) [if, '(', x, >, 0, ')', then, begin|...]=[x|_75850] ? creep
   Fail: (91) [if, '(', x, >, 0, ')', then, begin|...]=[x|_75850] ? creep
   Redo: (90) t([if, '(', x, >, 0, ')', then, begin|...], _75996) ? creep
   Call: (91) [if, '(', x, >, 0, ')', then, begin|...]=[y|_75988] ? creep
   Fail: (91) [if, '(', x, >, 0, ')', then, begin|...]=[y|_75988] ? creep
   Redo: (90) t([if, '(', x, >, 0, ')', then, begin|...], _76134) ? creep
   Call: (91) [if, '(', x, >, 0, ')', then, begin|...]=[z|_76126]  
 Fail: (91) [if, '(', x, >, 0, ')', then, begin|...]=[z|_76126] ? creep
   Redo: (90) t([if, '(', x, >, 0, ')', then, begin|...], _76272) ? creep
   Call: (91) [if, '(', x, >, 0, ')', then, begin|...]=[1|_76264] ? creep
   Fail: (91) [if, '(', x, >, 0, ')', then, begin|...]=[1|_76264] ? creep
   Redo: (90) t([if, '(', x, >, 0, ')', then, begin|...], _76410) ? creep
   Call: (91) [if, '(', x, >, 0, ')', then, begin|...]=[0|_76402] ? creep
   Fail: (91) [if, '(', x, >, 0, ')', then, begin|...]=[0|_76402] ? creep
   Fail: (90) t([if, '(', x, >, 0, ')', then, begin|...], _76548) ? creep
   Fail: (89) sentence([if, '(', x, >, 0, ')', then, begin|...], _66584) ? creep
false

我认为在调用句子时它显然失败了,但它得到了一个它无法处理的 [[x, =, 1], end] 。我认为显而易见的答案是 [x, =, 1] 是列表的第一个元素,但我不知道如何将该元素传递给句子,以便正确处理事情。我很困惑。

标签: prologgrammardcg

解决方案


代码需要一个平面的终端列表,但你有一个嵌套[x,=,1]在那里。你想要的是

?- sentence([if, '(', x, >, 0, ')', then, begin, x, =, 1, end], X).
X = []
Yes (0.00s cpu, solution 1, maybe more)
No (0.00s cpu)

推荐阅读