从易到难,6个代表性编程问题,你敢挑战吗?(附解答方案)


全文共3790字,预计学习时长11分钟

图源:Unsplash

我们的时代,是直面挑战的克难时代,每个人都有每个人的难题。

 

前不久,罗振宇在“2019-2020时间的朋友跨年演讲”中提到:直面挑战、躬身入局者 皆为我辈。

 

他在演讲中借鉴曾国藩曾讲过一个故事,来解释他所提出的说法。

 

这个故事的大概内容是:两个挑重担的人相遇在南方农村狭窄的田埂上,谁都不愿意让路,这时候来了一个旁观者,自己跳到了水田里,对其中一位说,来,把担子交给我,我替你挑一会儿,你侧身过去。

 

这个世界上有多少事情看似根本无解,其实只缺一个契机,就是你自己把自己放进去,置身其中。”

 

作为程序员,编程既是我们的武器,也是我们的伙伴,既是一个挑战,也是一次机遇,它来帮助我们解决问题,同时也推动我们不断训练、提高自己的能力。

 

本文共列出6个编程问题,它们来自几个包含编程问题的网站。此清单中的问题是根据解决的难易程度进行排序的——也就是说,第一个问题是最容易解决的,而第六个问题是最难解决的。你能解决所有问题吗?

 

文末提供了使用PHP解决这些问题的方案。可以选择自己喜欢的编程语言来解决这些问题。

 

祝你顺利解决这些问题,编程愉快!

 

挑战

 

1.  加减

 

从HackerRank提供的一个相对简单的问题开始。这项挑战可以视作热身。

 

 

2.  两数求和

 

这是一个LeetCode提供的挑战,其评级为“容易”。

 

 

3.  最大回文串乘积

 

此问题由Project Euler提供,它是公认的比较容易解决的问题之一。目前有超过455,000人解决了该问题。

 

以下是问题的描述:

 

 

4.  寻找不同的幂数

 

这是来自Project Euler的另一个挑战。这比上一个问题难一些。大约有100,000人解决了此问题。

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个基本的代码框架,您可以根据自己的需求进行修改和完善: ```java import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Scanner; public class ChengYuGame { private static final String CHENGYU_COMMON_FILE = "chengyu_common.txt"; // 常用成语文件名 private static final String CHENGYU_FULL_FILE = "chengyu_full.txt"; // 全量成语文件名 private List<ChengYu> commonChengYuList; // 常用成语列表 private List<ChengYu> fullChengYuList; // 全量成语列表 public ChengYuGame() { commonChengYuList = new ArrayList<>(); fullChengYuList = new ArrayList<>(); } // 加载成语列表 public void loadChengYuList() { try { // 加载常用成语列表 BufferedReader commonReader = new BufferedReader(new FileReader(CHENGYU_COMMON_FILE)); String line; while ((line = commonReader.readLine()) != null) { String[] fields = line.split(","); if (fields.length == 3) { String chengYu = fields[0]; String chengYuPinYin = fields[1]; String chengYuGushi = fields[2]; ChengYu cy = new ChengYu(chengYu, chengYuPinYin, chengYuGushi, ChengYu.DifficultyLevel.EASY); commonChengYuList.add(cy); } } commonReader.close(); // 加载全量成语列表 BufferedReader fullReader = new BufferedReader(new FileReader(CHENGYU_FULL_FILE)); while ((line = fullReader.readLine()) != null) { String[] fields = line.split(","); if (fields.length == 3) { String chengYu = fields[0]; String chengYuPinYin = fields[1]; String chengYuGushi = fields[2]; ChengYu cy = new ChengYu(chengYu, chengYuPinYin, chengYuGushi, ChengYu.DifficultyLevel.MEDIUM); fullChengYuList.add(cy); } } fullReader.close(); } catch (IOException e) { e.printStackTrace(); } // 对全量成语列表按照度评分进行排序 Collections.sort(fullChengYuList, new Comparator<ChengYu>() { @Override public int compare(ChengYu o1, ChengYu o2) { return o1.getDifficultyLevel().compareTo(o2.getDifficultyLevel()); } }); } // 开始游戏 public void startGame() { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("请选择游戏模式(1-娱乐模式,2-困模式,0-退出):"); int mode = scanner.nextInt(); if (mode == 0) { break; } List<ChengYu> chengYuList; if (mode == 1) { chengYuList = commonChengYuList; } else { chengYuList = fullChengYuList; } Collections.shuffle(chengYuList); // 打乱顺序 int score = 0; boolean success = true; for (ChengYu cy : chengYuList) { System.out.println("请回答以下成语的下一个成语:" + cy.getChengYu() + "(度:" + cy.getDifficultyLevel().getName() + ")"); String answer = scanner.next(); if (!cy.isCorrectAnswer(answer)) { System.out.println("回答错误,游戏结束!"); success = false; break; } else { score++; } } if (success) { System.out.println("恭喜您完成了游戏,得分:" + score); } } scanner.close(); } public static void main(String[] args) { ChengYuGame game = new ChengYuGame(); game.loadChengYuList(); game.startGame(); } } class ChengYu { private String chengYu; private String chengYuPinYin; private String chengYuGushi; private DifficultyLevel difficultyLevel; public ChengYu(String chengYu, String chengYuPinYin, String chengYuGushi, DifficultyLevel difficultyLevel) { this.chengYu = chengYu; this.chengYuPinYin = chengYuPinYin; this.chengYuGushi = chengYuGushi; this.difficultyLevel = difficultyLevel; } public String getChengYu() { return chengYu; } public String getChengYuPinYin() { return chengYuPinYin; } public String getChengYuGushi() { return chengYuGushi; } public DifficultyLevel getDifficultyLevel() { return difficultyLevel; } // 判断回答是否正确 public boolean isCorrectAnswer(String answer) { String lastChar = chengYu.substring(chengYu.length() - 1); String firstChar = answer.substring(0, 1); return lastChar.equals(firstChar); } // 成语度等级 public enum DifficultyLevel { EASY(""), MEDIUM("中"), HARD(""); private String name; DifficultyLevel(String name) { this.name = name; } public String getName() { return name; } } } ``` 以上代码实现了一个成语接龙游戏,包含常用成语和全量成语两种模式,根据度评分随机出题,并且判断回答是否正确,最后输出得分。您只需要根据自己的需求修改成语列表的文件名和成语度评分的规则即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值