用任意语言实现“Lenguaje Hacker“:MoureDev 2023 编程挑战第 1 题(leet / 1337 字符映射转换)完整实战指南
示例工程【免费下载链接】retos-programacion-2023Ejercicios de código semanales en 2023 de la comunidad MoureDev para practicar lógica en cualquier lenguaje de programación.项目地址https://gitcode.com/gh_mirrors/re/retos-programacion-2023点击查看免费下载导读本文围绕 retos-programacion-2023 仓库中 Reto #1 - EL LENGUAJE HACKER 这道Fácil简单难度题目展开完整讲解如何编写一个把自然语言文本转换为 leet也称 1337 或lenguaje hacker的程序并给出题目规定的 26 个字母与 10 个数字的标准映射表。通过阅读本文你将掌握查表 逐字符遍历 大小写归一化 未命中字符原样保留这一通用算法骨架并看到它在 Python、JavaScript、C、C#、Go、Rust、Kotlin、Bash、SQLPostgreSQL/BigQuery等 20 余种语言中的真实实现可用于复现或提交你自己的解法。题目原文与要求解析题目原文ejercicio.md的核心要求如下编写一个程序接收一段文本将自然语言转换为lenguaje hacker即 leet / 1337。该语言的特点是替换字母数字字符。使用 leet 字母表字母和数字进行转换且每次变换采用表中的第一种选项例如用 4 表示 a。题目为 2023 年第 1 周挑战难度标注为 Fácil简单发布于 2023-01-02官方纠错日期为 2023-01-09。从仓库规模看该题吸引了社区大量贡献者仅 Python 就有 276 份解法JavaScript 160 份、Java 96 份、C# 36 份、TypeScript 36 份、Kotlin 33 份覆盖 20 余种编程语言非常适合作为跨语言算法对比的入门案例。关键设计约束从题目描述中可以提炼出三个必须满足的约束逐字符替换对输入文本中的每个字母与数字执行替换而不是对单词整体替换取映射表第一种选项leet 同一种字母往往有多种写法题目明确要求一律使用每种字母的第一种变换例如 a → 4而不是 保留无关字符空格、标点、非字母数字字符如何处理虽未明说但从社区主流实现看均保留原样以保证空格分隔与可读性。标准 leet 映射表题目规定的第一选项综合仓库中 Python、JavaScript、C#、Kotlin、Go、Rust、SQL 等实现的字典可对照 miguelex.py 与 darubiano.sql题目要求使用的完整映射如下原文leet原文leet原文leeta4n^/1LbI3o02Rcp|*3Ed)q(_,)4Ae3rI25Sf|s56bgt77Th#u(_)8Bi1v/9gj,_|w//0ok|xl1yjm//\z2需要特别提醒的坑点大小写映射不一致a→4、b→I3、e→3 是小写字母输出大写形式而 i→1、l→1、o→0 又输出小写。因此实现时不能简单用同一字符的大小写转换来推导必须照表逐条硬编码多字符输出b、c、f、j、k、m、n、p、q、r、u、v、w 等字母的 leet 形态是 24 个字符组成的组合符号如 w → //、m → //\、q → (_,)数字映射数字的 leet 形式多为对应大写/小写字母1→L、2→R、3→E、4→A、5→S、6→b、7→T、8→B、9→g、0→o注意 6 与 9 对应的是小写 b 与 g。通用算法骨架查表 逐字符遍历尽管社区解法语言各异但核心算法高度一致可归纳为四步构建映射字典/表以 26 个字母 10 个数字为键leet 形式为值统一大小写将输入转为小写或查找时对字符做 lower 归一化保证大写输入同样命中映射逐字符遍历对每个字符查表命中则拼接 leet 形式未命中空格、标点、重音字符如 ñ、 等则保留原字符输出拼接结果。以 Python 为例[miguelex.py 的HackerEncode函数def HackerEncode(plainText): leetCode { a: 4, b: I3, c: [, d: ), e: 3, f: |, g: , h: #, i: 1, j: ,_|, k: |, l: 1, m: /\\/\\, n: ^/, o: 0, p: |*, q: (_,), r: I2, s: 5, t: 7, u: (_), v: \\/, w: \\/\\/, x: , y: j, z: 2, 0: o, 1: L, 2: R, 3: E, 4: A, 5: S, 6: b, 7: T, 8: B, 9: g } encryptedText for letter in plainText: if letter.lower() in leetCode.keys(): encryptedText leetCode[letter.lower()] else: encryptedText letter.lower() return encryptedText print(HackerEncode(leet)) # 1337 print(HackerEncode(Mi nombre es Miguelex)) # /\/\1 n0/\/\13 35 /\/\19(_)1313 print(HackerEncode(1234567890)) # LREASbTBgo print(HackerEncode(Hola Mundo!! Esto es una_prueba con caracteres extrañs))注意代码中letter.lower()的双重作用既作为字典键实现大小写归一也保证了未命中字符如空格、!、、ñ、下划线以小写形式原样保留。运行验证Go 版自带测试用例仓库中不少实现自带验证用例。例如 lombervid.go 的main函数内置了 5 组断言直接运行go run lombervid.go即可看到每组的 pass/fail 结果输入期望输出demo)3//\0hacker#43I2H4x0r#AoI2Hello World!#3110 //0I21)!My password is: 17o^DuQn$qNj//\j |*455//0I2) 15: LT0^)()(,)^/$(,)^/,|其中Hello World!一行尤其值得注意输入中的大写 H、W 被正确归一化为小写后命中映射而空格与感叹号被原样保留这正是统一小写 未命中保留策略的直接验证。Rust 版 [lombervid.rs 也提供了完全相同的 5 组断言。多语言实现对比与要点JavaScript / TypeScriptJavaScript 版ACahuiche.js同样使用对象作为映射表利用for...of遍历字符串并做toLowerCase()归一化未命中字符保留原样function leet(texto) { let alfabeto { a: 4, b: I3, /* ...全表... */ 0: o }; let traduccion ; for (let letra of texto.toLowerCase()) { traduccion letra in alfabeto ? alfabeto[letra] : letra; } console.log(traduccion); } leet(Hola Hackers); // #0l4 #4|3I25TypeScript 版[RobTov.ts在对象字面量外加了const leetCode: any类型标注并把遍历改为split()后forEachincludes判断最后以export {}收尾属于可被模块引用的写法。此外 html-js 目录下还有 Rdiaz97.html 这样的浏览器交互版本它通过input输入框 按钮触发hacker()函数用大量if/else if逐字符replace并document.write输出适合在不引入构建工具的场景下快速演示。C / CC 语言没有内置字典kyrex23 的解法kyrex23.c用两个等长数组模拟映射KEYS ABCDEFGHIJKLMNOPQRSTUVWXYZ与按顺序排列的VALUES[]数组通过toupper()归一化后线性查找下标。其注释明确写明了两个工程细节输出缓冲按BUFFER_SIZE * 4分配因为最长的 leet 形态如 //需要 4 个字符避免拼接时缓冲区溢出支持两种运行方式./kyrex23无参数时从 stdin 交互读取./kyrex23 your_string则直接取第一个命令行参数作为输入。C# / Kotlin / PHPC# 版miguelex.cs使用Dictionarystring, string遍历时对char调用ToString().ToLower()作为键查询Kotlin 版miguelex.kt与 Python 版结构几乎逐行对应PHP 版kodenook.php则在函数签名上做了类型约束function leet(string|int $txt): string先str_split((string)$txt)再逐字符拼接同时以declare(strict_types1);开启严格类型模式。三者的共同模式是用语言原生字典类型承载映射表逐字符查表拼接。这也说明该题数据结构选字典、控制流用遍历的解法在命令式语言间几乎可无缝迁移。BashBash 版alevil8022.sh展示了无字典类型环境下如何实现使用关联数组declare -A alfabeto存储映射read -p提示输入用${texto,,}转为全小写后写入临时文件再通过cut -c按字符位置逐个截取并拼接。值得注意其映射表中alfabeto[0]0与社区主流的0→o不同属于贡献者的个性化选择——这也从侧面说明题目只规定了字母的第一种变换数字的变换在社区实现中存在细微差异。SQLPostgreSQL 与 BigQuerySQL 版darubiano.sql是一份非常完整的双引擎实现演示了用数据库函数做字符串转换的思路PostgreSQL 版定义pg_temp.LenguajeHacker(texto TEXT)临时函数用 CTEdiccionario_hacker以VALUES列表构造 36 行字典再用REGEXP_SPLIT_TO_TABLE(texto,)把输入拆成单字符行LEFT JOIN字典后STRING_AGG重新聚合并以COALESCE保证未命中字符原样保留BigQuery 版将字典改为UNNEST([STRUCT(a AS letra,4 AS traduccion), ...])构造配合SPLIT(texto,)拆字符、LOWER()归一化后STRING_AGG聚合。这份文件同时给出了两段可直接执行的完整脚本及示例调用SELECT * FROM pg_temp.LenguajeHacker(Aquí está un texto de prueba...)是用 SQL 解字符串算法题的极佳参考也印证了同一套映射表在关系模型下可以用拆行 → 关联 → 聚合三步等价实现。边界情况与质量要点总结综合社区实现与自带的测试断言实现该题时建议关注以下边界大小写输入通常混合大小写如 Hola Mundo必须做小写归一化后再查表否则大写字符会全部漏匹配空格与标点空格、!, 、_、重音字符如 ñ等不在表中应原样保留保证输出可读且不破坏分词缓冲区/类型安全C 等静态语言要注意 leet 形态最长 4 字符导致输出变长PHP 这类语言可用string|int联合类型声明签名C#/Java/Kotlin 直接拼接字符串即可可验证性参照 lombervid.go 的做法为自己实现附加几组输入-期望输出断言是最简单的自测方式。深入阅读题目说明[Reto #1 - EL LENGUAJE HACKER [Fácil]/ejercicio.md](Retos/Reto #1 - EL LENGUAJE HACKER [Fácil]/ejercicio.md)Python 参考实现python/miguelex.pyGo 带测试用例实现go/lombervid.goRust 带测试用例实现rust/lombervid.rsJavaScript 实现javascript/ACahuiche.jsTypeScript 实现typescript/RobTov.tsC 实现含命令行参数用法c/kyrex23.cSQLPostgreSQL BigQuery实现sql/darubiano.sql浏览器交互版html-js/Rdiaz97.html你可以在仓库对应语言目录下找到更多贡献者解法选一种自己熟悉的语言动手实现并与上述测试用例对照验证。赞分享示例工程【免费下载链接】retos-programacion-2023Ejercicios de código semanales en 2023 de la comunidad MoureDev para practicar lógica en cualquier lenguaje de programación.项目地址https://gitcode.com/gh_mirrors/re/retos-programacion-2023点击查看免费下载相关推荐Mall4j Java 商城系统开源版全览技术选型、多模块架构与快速启动指南Mall4j Java 商城系统开源版全览技术选型、多模块架构与快速启动指南 Mall4j 是一个面向企业电商平台建设的 Java 商城系统源码产品体系本仓示例工程retos-programacion-2023 第 33 题实战用任意语言实现 Tetris 单方块位移与旋转retos programacion 2023 第 33 题实战用任意语言实现 Tetris 单方块位移与旋转 导读 本文以 MoureDev 社区 2023示例工程从按键序列还原文字MoureDev 编程挑战第 30 题 T9 键盘的多语言实现解析从按键序列还原文字MoureDev 编程挑战第 30 题 T9 键盘的多语言实现解析 本文以 MoureDev 社区 2023 每周编程挑战第 30 题「El示例工程上一篇如何在Jellium Desktop中设置最佳音频采样率提升音质的完整指南下一篇【亲测免费】 开源项目 BVH 使用教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

SSH证书登录全攻略:从密钥生成到安全加固的运维实践

SSH证书登录全攻略:从密钥生成到安全加固的运维实践

SSH证书登录(密钥认证)一直是我接手新服务器或者批量管理机器时第一个配置的项目。不管你是刚接触Linux服务器的小白,还是已经用密码登录硬扛了好一阵子的开发者,这套配置基本属于必做的“地基工程”。这篇文章,我从实…

2026/10/15 1:52:07 阅读更多 →
秋招投两个岗位,简历要改哪里?先把同一段项目经历对齐两份岗位要求

秋招投两个岗位,简历要改哪里?先把同一段项目经历对齐两份岗位要求

课程项目不多的时候,投两个岗位最容易犯的错误是把同一段经历扩写成两件事。前端岗位想看到页面和交互,测试岗位想看到检查方法,但这些关注点不同,并不意味着可以给自己增加一段不存在的经历。 我准备的示例全部是虚构资料&#…

2026/10/15 1:51:07 阅读更多 →
二级建造师为什么要考安全员B证?有什么用?

二级建造师为什么要考安全员B证?有什么用?

二建过了之后不是必须要考安全b证。安全b证是做项目负责人必须要的证件,如果考二建是为了企业升级资质,不做项目经理的话,就不需要考安全b证。二建证书-般和b证配套使用,二建人员有b证可以担任项目经理。二建b证的用途是什么&…

2026/10/15 1:51:07 阅读更多 →

最新新闻

成立三个月,Axiom-0 凭什么登顶 RoboCasa365?——一张具身“泛化能力“排行榜,和它背后的路线之争

成立三个月,Axiom-0 凭什么登顶 RoboCasa365?——一张具身“泛化能力“排行榜,和它背后的路线之争

最近具身智能圈有一则消息很提气:总部位于合肥的初创公司第四定律机器人(4Axiom Robotics),其自研的具身智能模型 Axiom-0 登上了国际权威具身评测基准 RoboCasa365 Benchmark,进入公开排行榜的头部行列——多家媒体用…

2026/10/15 2:29:22 阅读更多 →
旭日图实战指南:Davinci平台多层占比可视化落地

旭日图实战指南:Davinci平台多层占比可视化落地

1. 项目概述:为什么旭日图成了数据可视化团队的“新刚需”最近在好几个项目复盘会上,我都被问到同一个问题:“那个环形嵌套结构的图表,叫什么?能不能直接用?”——说的就是旭日图(Sunburst Char…

2026/10/15 2:29:22 阅读更多 →
Meta开源Zurp工具包:用AI代理+Burp Suite破解自家系统,漏洞赏金测试进入人机协作时代

Meta开源Zurp工具包:用AI代理+Burp Suite破解自家系统,漏洞赏金测试进入人机协作时代

当全球顶级科技公司主动把自家系统的大门钥匙递给黑客,事情就变得有趣了。Meta最近做了一件看似疯狂的事:它开源了一个名为Zurp的工具包,专门帮助安全研究人员更高效地“攻击”Facebook、Instagram等自家产品。只不过,这场攻击完全…

2026/10/15 2:29:22 阅读更多 →
Siddhi事件流处理:轻量级CEP引擎实战指南

Siddhi事件流处理:轻量级CEP引擎实战指南

1. Siddhi 是什么?它解决的不是“流计算”这个名词,而是你每天被淹没的数据洪流Siddhi 这个名字第一次出现在我面前时,是在某次处理物联网设备告警风暴的深夜。当时我们部署了上百台边缘传感器,每秒产生近两万条原始事件——温度、…

2026/10/15 2:29:22 阅读更多 →
手机影像参数背后的真相与选购指南

手机影像参数背后的真相与选购指南

1. 为什么手机厂商的影像参数越来越夸张?最近两年,手机厂商在影像参数上的军备竞赛愈演愈烈。"超清四摄"、"亿级像素"、"1英寸大底"等宣传语层出不穷,但很多消费者发现,实际拍照效果并没有参数看起…

2026/10/15 2:29:22 阅读更多 →
Americhem在中国苏州启用全新洁净配混设施

Americhem在中国苏州启用全新洁净配混设施

全球定制聚合物解决方案领导者Americhem于9月28日举行了其位于苏州的全新洁净配混设施启用仪式。此项投资进一步提升了Americhem服务中国、亚太地区以及在该区域开展生产制造业务的全球客户的能力。 该设施专为满足严苛医疗器械应用所需的ISO 13485和cGMP要求而设计&#xff0c…

2026/10/15 2:28:21 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →