一段摩斯密码里的爱情故事

一段摩斯密码里的爱情故事

关键词: 爱情  密码  摩斯密码 ┊  杂碎类 ┊ 推荐: level4.gif ┊ 来源: 蓝心网 ┊  收藏

  早已被新科技所取代的摩斯密码,近日却在中国的互联网世界里演绎了一段费尽周折的爱情猜谜传奇。一男子向一女子表白,女子却给了一段摩斯密码,以及很少的提示,并表示,破译这个密码,才答应和他约会。男子死活不得求解,又在百度贴吧里将密码贴出以求助网友,最终密码有没有被破解?

 2010052516093186.jpg

 

  在百度的密码吧里,这则已有1668个跟贴,名字为《求救,我已经快想爆了》的帖子里,发帖主人HighnessC说:“最近和一个心仪的女生告白,谁知道她给了一个摩斯密码给我,说解出来才答应和我约会。可是我用尽了所有方法都解不开这个密码。。好郁闷啊。只能求救你们了。”

  “她唯一给我的提示就是这个是5层加密的密码,也就是说要破解5层密码才是答案。”“最终语言是英语。”HighnessC说。此时是2008年1月23日凌晨4点23分。这个帖子很快引起了网友的关注,并且就在23日当天晚上20点02分,注册名字为片羿天使的网友在第207楼解开了谜底。

 

  神秘的摩斯密码

 

“****-/*---- /----*/****-/****-/*----/---**/*----/****-/*----/-****/***--/****-/*---- /----*/**---/-****/**---/**---/***--/--***/****-/”。

 

  这便是爱情摩斯密码的原样。摩斯密码对应的是英文字母和数字。然而,事情显然没有这么简单。不过可以告诉大家的是,楼主最终获得了欣慰的答案,并以喜剧收场。这则由星号、横杠和斜杠的摩斯密码,的确在经过5层转换之后,才拨开乌云见得明月。试想美国人摩斯发明摩斯密码也已是1844年的事情,当时的摩斯应当是无论如何也想不到,他的密码一百多年后竟然以这样的形式出现。

 

   起初先有网友贴出了摩斯密码对照表,然后发现相应密码对应的数字组合和英文字母组合分别是:“4194418141634192622374”和“daiddahadafcdaibfbbcgd”这里面有什么玄机?而此时HighnessC 在网友的建议下,已经“很努力地在套她的话了。”

 

  更有网友深蓝小孩用软件“密码精灵”对这段摩斯密码进行破解,可是结果除了解出倒序数字、代替密码和倒序字母,以及计算出各个英文字母出现的概率后,仍是一无所获。此时已经是23日下午13点37分的事情了,深蓝小孩的帖子并已到第32楼。

 

  可是就在38楼,网友幻者皮卡丘则从摩斯密码对应的数字排列上说:“数字有偶数个,且注意到41组合出现数次。”幻者皮卡丘并在尝试把数字给颠倒过来寻找规律,并且也尝试用数字对应的英文字母组合来破解,但是还是没有找到规律。

 

  进一步的进展

 

有意思吧

 

  紧接着的40楼,网友killing_ill则轻轻提示道:“手机键盘吧”。“手机键盘的话.. 1根本不代表任何意义啊? 难道代表空格? ”心急火燎的HighnessC在紧接着的41楼回复道。可是再往后就是讨论到第68楼,这个摩斯密码还是没有任何进展,68楼的网友巨蟹座的传说还想到了可能和心理学和数学有关。

 

  在后来的帖子里,除了加入新网友再次提及手机键盘,其余的网友给出的答案也五花八门,比如“7481(去死吧你)”,或者“看看你的钱包里有什么”,但是严格来说,这些回答都是猜想,原有的摩斯密码,依然没有一个经得起推敲的合理路径可循。

 

  这个时候,网友ybaba在下午17点36分第115贴上“哈哈”大笑地在上面留下了这么一句话。“大家注意一下这组数字,最大的是数字的范围是1-9,手机上一共有10个数字按键其中0和1不对应任何字母,所以不存在0 而为什么会有1呢?”

 

  “这是仅有的两个偶数编号的4,相对应9和7,你们再看看手机,只有按键9和7才对应4个字母 其它的都只对应3个。” ybaba在自己做了没有结果的推敲后,又留下了这句话。网友若可_hh在第151楼上说:“楼主陷入深深的痛苦之中”。

 

  终于,在晚上18点39分,网友片羿天使在158楼出现,并且表示,她已经完全解出来了,还安慰楼主道:“楼主你好幸福哦。”不过,片羿天使却故意卖了个关子,说迟一点再告诉大家答案,并且提示,的确有代替法,摩斯密码表也的确是人类每天都可能用到的东西。

 

  谜底“I LOVE YOU TOO”

 

有意思吧

 

  片羿天使在下面网友的跟贴催促下,晚上20点02分第207楼再次出现,并且道出了摩斯密码的答案,也给出了解答的步骤,此时这则帖子的跟贴已经到了第7 页。片羿天使从摩斯密码推到数字,从从数字推到了手机键盘和电脑键盘,然后重新排序排列,再倒换,“I LOVE YOU TOO”便水落石出了。

 

  片羿天使将摩斯密码对应的数字“41 94 41 81 41 63 41 92 62 23 74”转换成了手机键盘字母,以41为例,它对应的就是传统手机键盘上的“4”的第一个字母,“94”则是“9”的第4个字母。这样片羿天使得到了第二步的答案:“G Z G T G O G X N C S ” 。

 

  接着,片羿天使又将这些英文字母给转换成了用电脑键盘打出来的字母。片羿天使说“因为QWE的格式是被世人所认可的,也就有可能成为密码的码表。码表 QWE=ABC依次类推。”按照这样的次序,上面的来自于手机键盘的字母,就转换到了第三步答案:“O T O E O I O U Y V L”。

 

  在第四步中,片羿天使用了包括凯撒、乘法等等方法,对第三步几乎可以看出来的答案进行了进一步的解码,最后发现只有栅栏才能读得通。片羿天使将这组字母分成了“O T O E O I”和“ O U Y V L”两排,然后对插重组得到第四步的字母排列:“OOTUOYEVOLI”。

 

  第五步于 是变得最为简单起来,那便是将“OOTUOYEVOLI”倒序排列,即“I LOVE YOU TOO”。片羿天使还肯定楼主有一个非触摸屏手机,而手机键盘应是标准格式。此外,楼主还有一台笔记本或者经常接触的电脑。片羿天使还说,楼主和他女人的关系应是认识很久的那种,而不是一见钟情。

 

  “最后你的推理也完全正确。我真的,太感谢你了。”楼主HighnessC在随后的220楼帖子上说。然后,剩下的事情,除了楼主要向那名女子亲口说出谜底之外,楼主的这个帖子,也已经盖到2月8日第56页1668楼。要不要也去盖一楼?还真是人多力量大,思维也真是玄妙。

本文转自jiahuafu博客园博客,原文链接http://www.cnblogs.com/jiahuafu/archive/2010/05/25/1743694.html如需转载请自行联系原作者


jiahuafu

### 回答1: 以下是用C语言实现摩尔斯密码转换器的示例代码: ``` #include <stdio.h> #include <string.h> void convertToMorse(char ch); int main() { char message[100]; int i; printf("请输入要转换的文本:\n"); fgets(message, 100, stdin); for (i = 0; i < strlen(message); i++) { convertToMorse(message[i]); } return 0; } void convertToMorse(char ch) { switch (ch) { case 'a': case 'A': printf(".- "); break; case 'b': case 'B': printf("-... "); break; case 'c': case 'C': printf("-.-. "); break; case 'd': case 'D': printf("-.. "); break; case 'e': case 'E': printf(". "); break; case 'f': case 'F': printf("..-. "); break; case 'g': case 'G': printf("--. "); break; case 'h': case 'H': printf(".... "); break; case 'i': case 'I': printf(".. "); break; case 'j': case 'J': printf(".--- "); break; case 'k': case 'K': printf("-.- "); break; case 'l': case 'L': printf(".-.. "); break; case 'm': case 'M': printf("-- "); break; case 'n': case 'N': printf("-. "); break; case 'o': case 'O': printf("--- "); break; case 'p': case 'P': printf(".--. "); break; case 'q': case 'Q': printf("--.- "); break; case 'r': case 'R': printf(".-. "); break; case 's': case 'S': printf("... "); break; case 't': case 'T': printf("- "); break; case 'u': case 'U': printf("..- "); break; case 'v': case 'V': printf("...- "); break; case 'w': case 'W': printf(".-- "); break; case 'x': case 'X': printf("-..- "); break; case 'y': case 'Y': printf("-.-- "); break; case 'z': case 'Z': printf("--.. "); break; case ' ': printf(" "); break; default: break; } } ``` 这个程序可以将用户输入的文本转换成摩尔斯电码,并在控制台中输出。用户可以输入任意长度的文本,程序会自动将其转换成摩尔斯电码。 ### 回答2: 摩斯密码是一种将字母、数字和标点符号转换为点(.)和线(-)的密码系统。要用C语言编写一个摩斯密码转换器,我们可以采取以下步骤: 1. 首先,我们需要定义一个摩斯密码表,其中包含字母、数字和标点符号与其对应的摩斯密码。 2. 接下来,用户将输入要转换的字符串,可以是字母、数字和标点符号的组合。 3. 我们使用循环来遍历输入的字符串。对于每个字符,我们需要找到其对应的摩斯密码,并打印或输出到屏幕上。 4. 我们可以使用switch语句来检查字符,并在找到对应的摩斯密码后输出。 5. 输出的摩斯密码可以用点(.)和线(-)表示,我们可以使用printf函数来打印这些字符。 6. 最后,我们可以加入一些用户友好的功能,如提示用户输入要转换的字符串,并在输出摩斯密码后询问用户是否继续转换。 下面是一个简单的C语言代码示例,用于将摩斯密码转换为字符串: ```c #include <stdio.h> #include <string.h> void convertToMorseCode(char character) { switch(character) { case 'A': case 'a': printf(".- "); break; case 'B': case 'b': printf("-... "); break; // 其他字母和符号的转换 default: printf(" "); break; } } int main() { char input[100]; int i; printf("请输入要转换的字符串:"); fgets(input, 100, stdin); for(i = 0; i < strlen(input); i++) { convertToMorseCode(input[i]); } return 0; } ``` 这只是一个简单的示例,只包括了几个字母的转换。你可以在`convertToMorseCode`函数中补充完整的摩斯密码表,并在switch语句中处理其他字符。同时,你还可以根据需要进行扩展和优化。 ### 回答3: 摩斯密码是一种将字母、数字、标点符号等转换成一系列短信号和长信号的编码方式,通过不同长度的信号来区分不同字符。下面是一个用C语言编写的摩斯密码转换器的示例代码: ```c #include <stdio.h> #include <string.h> void convertToMorse(char *string) { int i, j; char *morseAlphabet[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."}; char *morseNumber[] = {"-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----."}; char *morseSymbol[] = {".-.-.-", "--..--", "..--..", "-.-.--", "-..-.", "-.--.", "-.--.-", ".-...", "---...", "-.-.-.", "-...-", ".-.-.", "-....-", "..--.-", ".-..-.", ".--.-."}; for (i = 0; i < strlen(string); i++) { if (string[i] >= 'A' && string[i] <= 'Z') { j = string[i] - 'A'; printf("%s ", morseAlphabet[j]); } else if (string[i] >= 'a' && string[i] <= 'z') { j = string[i] - 'a'; printf("%s ", morseAlphabet[j]); } else if (string[i] >= '0' && string[i] <= '9') { j = string[i] - '0'; printf("%s ", morseNumber[j]); } else if (string[i] == ' ') { printf(" / "); } else { for (j = 0; j < sizeof(morseSymbol) / sizeof(morseSymbol[0]); j++) { if (string[i] == morseSymbol[j][0]) { printf("%s ", morseSymbol[j]); break; } } } } printf("\n"); } int main() { char inputString[100]; printf("请输入要转换成摩斯密码的字符串:"); fgets(inputString, sizeof(inputString), stdin); inputString[strlen(inputString) - 1] = '\0'; // 去掉换行符 printf("转换后的摩斯密码为:"); convertToMorse(inputString); return 0; } ``` 这个摩斯密码转换器使用了3个字符数组`morseAlphabet`、`morseNumber`和`morseSymbol`来存储对应的摩斯密码编码。在`convertToMorse`函数中,通过遍历输入的字符串,根据字符的不同范围,找到对应的摩斯密码编码,并打印输出到控制台。在`main`函数中,首先接收用户输入的字符串,然后调用`convertToMorse`函数来进行转换,并输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值