写一个 ancestors
补全 ancestors:从提交 c 出发,顺着父提交把能走到的提交全收集起来(包含自己)。 输出 main 能走到几个。
⚠️ 两条分支各追溯几个
用你写的 ancestors,把 main 和 feature 各能走到几个提交拼起来输出(main 在前,用 / 隔开)。
在分支上提交之后,指针怎么动
你在 feature 上提交了一次,feature 这个指针【0】。
这时候另一条分支呢
你在 feature 上提交之后,main 这个指针【0】。
两条分支同时往前走,图会长成什么样
两条分支都各自提交了几次之后,提交图【0】。
⚠️ 两条分支怎么算"真的分开了"
说两条分支"已经分叉",指的是【0】。
只在 main 上的提交有几个
接着用集合相减。运行下面这段程序: def ancestors(g, c): seen = set() st = [c] while st: x = st.pop() if x in
两边独有的加起来是多少
这个数叫"分叉距离"——两条分支各自往前走了多远。运行下面这段程序: def ancestors(g, c): seen = set() st = [c] while st: x
写一个 only_on
补全 only_on(g, a, b):返回能从 a 走到、但从 b 走不到的那些提交。 输出 feature 独有的提交有几个。
⚠️ 两边各有几个独有的
用你写的 only_on,把 main 独有的个数和 feature 独有的个数拼起来输出(main 在前)。