发布于 2026-01-06 1 阅读
0

The 5 hardest code challenges for beginners Hardest Beginner Challenges Challenge Description Analysis Sample Solutions

初学者最难的 5 个编程挑战

最难的初学者挑战

挑战描述

分析

样品溶液

Coderbyte 提供约 100 个简单的代码挑战,非常适合正在学习编程并需要练习的初学者。我们分析了这些挑战的统计数据,找出用户最难获得满分的挑战。最终,我们从所有简单的挑战中筛选出 5 个最难的挑战,并将其列在“简单”部分——这里所说的“简单”是指初学者应该能在 15 到 25 分钟内完成的挑战。

最难的初学者挑战

  • 问号:需要遍历字符串并检查是否满足某些条件。

  • 元音方阵:需要在一个更大的矩阵中找到一个 2x2 的元音方阵。

  • 天平平衡:需要遍历一个砝码数组,以确定天平是否可以完全平衡。

  • 正确路径:需要在 NxN 矩阵中遍历部分完成的路径并完成该路径。

  • 最近敌人 II:需要检查 NxM 矩阵中某些点之间的距离。

其中,用户最难获得满分且花费时间最长的挑战是问号题

挑战描述

接收一个输入字符串参数,判断所有加起来等于 10 的数字对之间是否恰好存在 3 个问号。如果存在,则返回 true;否则返回 false。以下是一些测试用例示例:

"arrb6???4xxbl5???eee5" => true
"acc?7??sss?3rr1??????5" => true
"5??aaaaaaaaaaaaaaaaaaa?5?5" => false
"9???1???9???1???9" => true
"aa6?9" => false

在继续阅读之前,请试着思考一下你会如何解决这个难题。

分析

这个挑战需要多层逻辑才能正确解决,所以一开始很难找到解决方案。它需要遍历字符串,并记录所有和为 10 的数字对的位置。如果找到两个和为 10 的数字,则需要确定这两个数字之间是否存在三个特定的字符。

  • 用 JavaScript 提交解决方案的用户中,有68%没有获得满分。

  • 用 Ruby 提交解决方案的用户中,有35%没有获得满分。

  • 平均而言,一个解决方案需要15-29行代码

样品溶液

下面这个非常简洁优雅的解决方案是由 Coderbyte 上排名第 13 的用户Qlogin用 Python 编写的。

def QuestionsMarks(s):
  qnum = 0
  dig = 0
  has_10 = False
  for ch in s:
    if ch.isdigit():
      if int(ch) + dig == 10:
        if qnum != 3:
          return 'false'
        has_10 = True
      dig = int(ch)
      qnum = 0
    elif ch == '?':
      qnum += 1
  return 'true' if has_10 else 'false'

此外,Coderbyte 上的一位用户还用 Java 实现了一个巧妙的正则表达式解决方案来解决这个问题:

public static String QuestionsMarks(String str) { 

  str = str.replaceAll("[a-z]+","");
  Pattern pattern = Pattern.compile("([0-9])([?])([?])([?])([0-9])");
  Pattern pattern01 = Pattern.compile("([0-9])([?])([?])([0-9])");
  Matcher matcher01 = pattern01.matcher(str);
  Pattern pattern02 = Pattern.compile("([0-9])([?])([0-9])");
  Matcher matcher02 = pattern02.matcher(str);
  Matcher matcher = pattern.matcher(str);

  if (matcher01.find() || matcher02.find()) {
    return "false";
  } else if (matcher.find()) {
    return "true";
  }

  return "false";

}

欢迎在Coderbyte上亲自尝试这些挑战,并在下方评论区分享您对示例解决方案的看法!

本文最初发表于Medium

文章来源:https://dev.to/coderbyte/the-5-hardest-code-challenges-for-beginners-5flc