CodingTour
ARTS #180

Algorithm

本周选择的算法题是:Maximum 69 Number

规则

You are given a positive integer num consisting only of digits 6 and 9.

Return the maximum number you can get by changing at most one digit (6 becomes 9, and 9 becomes 6).

Example 1:

Input: num = 9669
Output: 9969
Explanation: 
Changing the first digit results in 6669.
Changing the second digit results in 9969.
Changing the third digit results in 9699.
Changing the fourth digit results in 9666.
The maximum number is 9969.

Example 2:

Input: num = 9996
Output: 9999
Explanation: Changing the last digit 6 to 9 results in the maximum number.

Example 3:

Input: num = 9999
Output: 9999
Explanation: It is better not to apply any change.

Constraints:

  • 1 <= num <= 104
  • num consists of only 6 and 9 digits.

Solution

impl Solution {
    pub fn maximum69_number (num: i32) -> i32 {
        let mut i = 10;
        while num - num % i > 0 {
            i = i * 10;
        }
        while i / 10 > 0 {
            i = i /  10;
            if num / i % 10 == 6 {
                return num + i * 3;
            }
        }
        num
    }
}

Review

Carbon language design

通读了遍,文档还在更新中,比如 Co-routines、Lambdas 之类的部分还没有。

Carbon 是以现有的生态系统(C++)为基础构建的语言,语法简单,快速、易于编程,由于 C++ 的生态问题,没有人能控制得了 C++,没有大公司可以告诉开发者未来会怎样,这给了 Carbon 生成的土壤,期待 Carbon 早日出现杀手级应用。

Tip

https://wangchujiang.com/reference/ 这个「速查」网站不错,涵盖的领域很丰富

Share

软件开发的过程和建房子差不多,在简单结构上犯错,其惩罚也不过是一点时间,但如果是 “地基” 不行,糟糕的设计所引发的后果更严重。

“地基” 强调的是在需求之外,要更多关注开发者的体验和长期效率,并越早开始做实质性的改进越好。它通常是由脚手架、基础设施、工具、代码架构、门户或索引组成,但未来可能更多是以一体化的平台的形式呈现,三个逻辑:

  1. 通过面向开发者的平台实现改善开发者的体验从而减少心智负担和重复的工作
  2. 平台不强迫使用特定的工具或流程,它的本意是为了让开发者更容易构建和交付软件
  3. 平台即产品,它要以自助方式为开发者提供服务,减少 “协作”

一个平台必须要让它的用户觉得像使用他们的笔记本电脑或互联网一样重要,它不只是你所做的事情的一部分,而是它支持你所做的一切。