字节青训营之刷题实践选题

71 阅读2分钟

分类:方向三:实践记录以及工具使用-刷题实践选题-功能亮点和刷题实践

为了体验深入剖析 AI 刷题的功能亮点,阐述其对学习的重要性和独特价值,总结 AI 刷题的优势之处,并通过实践案例展开分析相关功能是如何帮助你学习的,这里我们选用中等难度的题目,量化数字的统计为例子。

### 问题描述

小M最近对一种特别的数字产生了兴趣。他称某个数字为“量化数字”,当且仅当这个数字满足以下两个条件:

  1. 该数字能被3整除。
  2. 该数字的所有位数都是相同的数字。

例如,数字666是一个量化数字,因为它能被3整除,并且所有位数都是6

现在给定两个整数LR,你需要统计在LR范围内(包括LR)的所有量化数字,并返回这个数字的个数。

功能亮点

可以看到,marscode的刷题平台有云端编辑器功能,可以写代码、保存代码、运行、以及调试。

6e17150c4a54c688ee65d2a3c6f2d088.png

旁边的AI助手可以给我们思路提示、代码提示和代码检查。功能非常齐全

image.png

以思路提示为例子,它会逐步剖析算法步骤,给出每个步骤的思路。然后再提示完之后,还会给出下一步的提问提示。对于常用的问题,用户只要点击问题即可。例如它在算法过程中提到,需要判断一个数字是否是量化数字。AI考虑到用户可能不会写出这块的代码,因此在生成完结果后,在接下来的任务列表中添加了“如何判断一个数字是否是量化数字”这一个问题。这说明字节的AI代码助手可以对问题和自己的回答进行评估,并且规划下一步可能需要执行的任务。这是大模型训练的一个方向,即对任务进行拆分,规划,回答,评估,然后继续进行规划。这样,大模型可以实现更好的推理效果。

image.png

代码实现

最后,我们在AI的提示下,编写出下列代码,测试通过。

def solution(L: int, R: int) -> int:
    count = 0
    # Define possible "quantified numbers" that have all identical digits within the range [L, R]
    def generate_quantified_numbers(L: int, R: int):
        quantified_numbers = []
        for digit in range(1, 10):  # Digits from 1 to 9
            length = 1
            while True:
                number = int(str(digit) * length)
                if number > R:
                    break
                if number >= L:
                    quantified_numbers.append(number)
                length += 1
        return quantified_numbers

    quantified_numbers = generate_quantified_numbers(L, R)
    # Check each quantified number within the range [L, R]
    for num in quantified_numbers:
        if num % 3 == 0:
            count += 1

    return count


if __name__ == '__main__':
    print(solution(L = 5, R = 125) == 6)
    print(solution(L = 10, R = 300) == 5)
    print(solution(L = 100, R = 999) == 9)