豆包MarsCode刷题指南&多米诺骨牌题目及答案打卡day1

275 阅读3分钟

1.进入链接(需要登陆) 多米诺骨牌 - MarsCode

2.使用指南(选择题目,编写程序,运行结果)

image.png 3.使用提示(!)

可以提供思路,如例1多米诺骨牌: 首先我们可以让AI助手把繁琐冗长的题目简化一下:

image.png

然后,我们需要一定的思路,整体和细节都可以详细的询问AI助手:

image.png

image.png


以下是对每个步骤思路的细化:

1. 创建数据结构来表示骨牌状态:
    - 我们选择使用一个列表来存储每个骨牌的状态。列表中的每个元素对应一个骨牌,初始时,所有元素都设置为 0,表示骨牌竖立。
    - 当遇到字符 'L' 时,将对应位置的元素设置为 1,表示骨牌向左倒;遇到 'R' 时,设置为 -1,表示骨牌向右倒。

2. 遍历输入字符串更新骨牌状态:
    - 从输入字符串的第一个字符开始,依次处理每个字符。
    - 根据字符 'L'、'R' 或 '.' ,相应地更新列表中对应位置的骨牌状态值。

3. 计算每个骨牌左右倒下的骨牌数量:
    - 对于列表中的每个骨牌位置 i :
        - 从位置 i - 1 开始向左遍历,遇到状态为 1 的骨牌就增加左边倒下的骨牌计数,直到遇到状态不为 1 的骨牌停止。
        - 从位置 i + 1 开始向右遍历,遇到状态为 -1 的骨牌就增加右边倒下的骨牌计数,直到遇到状态不为 -1 的骨牌停止。

4. 判断骨牌是否力平衡保持竖立:
    - 比较每个骨牌左右倒下的骨牌数量。
    - 如果数量相等,将该骨牌在列表中的状态重新设置为 0,表示保持竖立。

5. 统计并输出保持竖立的骨牌数量和位置:
    - 遍历骨牌状态列表,统计状态为 0 的骨牌数量。
    - 同时,将状态为 0 的骨牌位置记录下来。
    - 先输出保持竖立的骨牌数量。
    - 如果数量不为 0 ,再输出保持竖立的骨牌位置,每个位置之间用空格隔开。

我们发现这个思路是很清晰明了的,接下来就是手动完成代码,和AI辅助完成代码的过程,并且这个是没有答案的,只有自己反复修改以达到学习的过程。所以说豆包刷题平台还是很有用的。 以下是解题代码,思路如上


def pushDominoes(dominoes):
    charArray = list(dominoes)
    i = 0
    while i < len(charArray):
        if charArray[i] == '.':
            left = i - 1
            right = i + 1
            while right < len(charArray) and charArray[right] == '.':
                right += 1
            i = right

            leftChar = 'L' if left == -1 else charArray[left]
            rightChar = 'R' if right == len(charArray) else charArray[right]
            left += 1
            right -= 1

            if leftChar == 'R' and rightChar == 'L':
                while left < right:
                    charArray[left] = 'R'
                    charArray[right] = 'L'
                    left += 1
                    right -= 1
            elif leftChar == 'R' and rightChar == 'R':
                while left <= right:
                    charArray[left] = 'R'
                    left += 1
            elif leftChar == 'L' and rightChar == 'L':
                while left <= right:
                    charArray[left] = 'L'
                    left += 1

        i += 1

    return ''.join(charArray)

def solution(num, data):
    
    tmp = pushDominoes(data)
    res = []
    index = 1
    for item in tmp:
        if item=='.':
            res.append(index)
        index+=1
            
    result =  '0' if len(res)==0 else str(len(res))+':'+str(res).replace('[','').replace(']','').replace(' ','')
    print(result)
    return result

if __name__ == "__main__":
    #  You can add more test cases here
    print(solution(14, ".L.R...LR..L..") == "4:3,6,13,14" )
    print(solution(5, "R....") == "0" )
    print(solution(1, ".") == "1:1" )