Javascript
String.prototype.answer = function() {
alert (this.charCodeAt (+!"The End of the Universe"));
};
'*'.answer ();
解释:+!”The End of the Universe”的值是0,’*'的 ASCII 码是 42。
console.log ("Douglas Adams".length + "born on".length +
[1,1,0,3,1,9,5,2].reduce (
function(previousValue, currentValue, index, array){
return previousValue + currentValue;
}
)
);
/* [1,1,0,3,1,9,5,2] => March 11, 1952 */
解释:Douglas Adams 是一位英国广播剧作家、和音乐家,尤其以《银河系漫游指南》系列作品出名。这部作品以广播剧起家,后来发展成包括五本书的“三部曲”,拍成电视连续剧。亚当斯逝世后还拍成电影。 除《银河系漫游指南》系列外亚当斯还参加了科幻电视连续剧《神秘博士》的拍摄工作,他写了其中的一些剧本。
alert ((!![]+ -~[])*(!![]+ -~[])+""+(!![]+ -~[]))
解释:[]是个空,![]就是 true,~[]是-1, 于是,表达式就这样出来了。变态!
var ________ = 0.023809523809523808, ____ = 1, ___ = 0, __ = 0, _ = 1;
解释:这个其实是代码混乱的技巧之一,用下划线当变量。你可以参考《如何加密/混乱C源代码》和《6 个变态的C语言 Hello World 程序》。
Shell
echo "what is the universe"|tr "a-z " 0-7-0-729|sed 's/9.//g;s/-/+/'|bc
解释:其中,bc 是一个计算器。tr 是一个字符转换的命令,比如:echo "good" tr "good" "test"
输出 tsst
。也就是说,g-t, o-e, o-s, d-t 的映射,o被映了两次,所以,第二次会覆盖第一次。对于上面的tr "a-z " 0-7-0-7-729
的意思是:abcdefg 分别对应 01234567,h对应-,ijklmno 对应 01234567,p对于2,剩下的包括空格都是9。如果你对 tr 和 sed 和 bc 不熟悉的话,可以 man 一下,关于 sed 你可以看一下我的《sed 简明教程》。
#!/bin/bash
#Vertical Version
echo $((2#100))
echo $((2#10))
#Horizontal Version
echo $((2#000100))$((2#00010))
解释:2#100 的意思就是说,#左边的数说明是“2 进制”,右边的数是二进制数“100”,如 16#ff 就是 16 进制的 ff,也就是十进制的 255。
echo "obase=13;6*9"|bc|figlet
上面的命令输出形式是:
解释:为了使用 figlet 命令,你还要去安装一个figlet(http://www.figlet.org/)这是一个让你画ASCII图的命令。
Python
Windows 下,给你画个图:
import win32api, win32con, win32gui
from time import time, sleep
import os
w = { 1:[(358, 263), (358, 262), (358, 261), (359, 261), (359, 262), (359, 264), (359, 266), (359, 270), (359, 282),
(358, 289), (357, 308), (356, 319), (355, 341), (355, 351), (355, 360), (355, 378), (355, 388), (354, 397),
(354, 406), (354, 422), (354, 428), (354, 436), (354, 438), (354, 439), (354, 440), (355, 440), (356, 439),
(357, 439), (358, 438), (360, 438), (362, 437), (369, 437), (372, 437), (381, 437), (386, 437), (391, 437),
(397, 436), (411, 436), (419, 435), (434, 435), (442, 435), (449, 434), (456, 434), (468, 434), (473, 435),
(480, 436), (483, 436), (485, 436), (487, 437), (488, 437), (488, 438), (488, 439), (487, 440), (486, 440),
(485, 440), (484, 440), (483, 439), (483, 437), (481, 431), (481, 427), (481, 420), (481, 413), (483, 396),
(485, 387), (488, 367), (491, 356), (493, 345), (500, 321), (503, 310), (507, 299), (514, 280), (517, 272),
(520, 266), (523, 260), (524, 258), (524, 259), (524, 261), (524, 265), (524, 269), (523, 275), (522, 289),
(521, 297), (518, 315), (516, 324), (515, 334), (513, 345), (509, 368), (507, 382), (502, 411), (500, 426),
(498, 440), (495, 453), (491, 478), (489, 491), (485, 517), (483, 530), (481, 542), (479, 552), (476, 570),
(475, 577), (474, 588), (473, 592), (473, 595), (473, 597), (473, 600), (473, 601), (473, 602), (473, 601),
(474, 599), (475, 597), (476, 594), (478, 587)],
2:[(632, 305), (634, 306), (636, 309), (639, 314), (641, 319), (645, 330), (647, 337), (649, 353), (649, 362),
(649, 372), (649, 384), (645, 409), (639, 436), (636, 448), (632, 459), (627, 470), (623, 479), (613, 497),
(608, 503), (599, 512), (595, 514), (591, 514), (587, 513), (581, 504), (578, 498), (576, 483), (575, 476),
(575, 469), (579, 454), (582, 447), (591, 436), (595, 432), (600, 430), (605, 429), (617, 432), (624, 437),
(639, 448), (646, 455), (654, 461), (662, 469), (679, 484), (686, 491), (702, 504), (710, 509), (718, 512),
(727, 514), (744, 515), (752, 515), (767, 512), (774, 510), (779, 508), (783, 505), (788, 499), (789, 495),
(789, 486)] }
def d ( x1, y1, x2, y2 ):
win32api.SetCursorPos ((x1, y1))
win32api.mouse_event (win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
win32api.SetCursorPos ((x2, y2))
win32api.mouse_event (win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
sleep (0.01)
def p ( l1 ):
l2 = [""]
l2.extend (l1)
l1.append ("")
l3 = zip (l2, l1)
l3.pop (0)
l3.pop (-1)
for n in l3:
d (n[0][0], n[0][1], n[1][0], n[1][2])
os.startfile ("C:\Windows\system32\mspaint.exe")
sleep (0.5)
win32gui.ShowWindow (win32gui.GetForegroundWindow (), win32con.SW_MAXIMIZE)
sleep (0.5)
for n in w:
p (w[n])
输出形式是这样的:
lambda 表达式:
>>> p = lambda x: x%2!=0 and True<>> sum (p(i) for i in range (0,6))
解释:对 python 的 lambda 表达式或函数式编程不是很清楚的同学可以看一下《函数式编程》。
Java
import java.lang.*;
class answer_to_everything
{
void static main ()
{
String s = "Hitchhiker's Guide to the Galaxy";
String s2 = "Don'tPanic";
String s3 = "The Restaurant at the End of the Universe.";
int arthur_dent = s.length ();
int ford_prefect = s2.length ();
int zooey_deschanel = s3.length ();
int vogon_poetry = arthur_dent + ford_prefect;
System.out.println (" " + vogon_poetry + " " + zooey_deschanel + " " + zooey_deschanel); //in case you're confused, I'm using Zooey to print the big '2', and Vogons to print the big '4'. System.out.println (" " + vogon_poetry + vogon_poetry + " " + zooey_deschanel + " " + zooey_deschanel);
System.out.println (" " + vogon_poetry + " " + vogon_poetry + " " + zooey_deschanel + " " + zooey_deschanel);
System.out.println (" " + vogon_poetry + " " + vogon_poetry + " " + zooey_deschanel);
System.out.println (" " + vogon_poetry + " " + vogon_poetry + " " + zooey_deschanel);
System.out.println (vogon_poetry + " " + vogon_poetry + " " + vogon_poetry + " DA " + vogon_poetry + " " + zooey_deschanel);
System.out.println (" " + vogon_poetry + " " + zooey_deschanel);
System.out.println (" " + vogon_poetry + " " + zooey_deschanel + " " + zooey_deschanel + " " + zooey_deschanel + " " + zooey_deschanel);
}
}
上面这段看上去平淡无奇,但其亮点是那三个 string,这段代码输出:
![](http://dl2.iteye.com/upload/attachment/0094/5965/3dbe6b7e-eded-3163-92cb-4af784a930dc.jpg)
别忘了 Java 也可以混乱代码:
C/C++
#include
int main ()
{
printf ("%d", fprintf ( fopen ("/dev/null","w"),
"so-popularity-contest\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b") );
}
解释:\b是 backspace,fprintf 的返回值是写成功数据的长度。
#include<iostream>
using namespace std;
int main ()
{
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)66<<(char)73<<(char)82;
cout<<(char)84<<(char)72<<(char)32;
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)32<<(char)68<<(char)69;
cout<<(char)65<<(char)84<<(char)72;
cout<<(char)32<<(char)32<<'\n';
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)32<<(char)32<<(char)95;
cout<<(char)95<<(char)95<<(char)32;
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)32<<(char)95<<(char)95;
cout<<(char)95<<(char)95<<(char)95;
cout<<(char)95<<(char)32<<'\n';
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)32<<(char)47<<(char)32;
cout<<(char)32<<(char)32<<(char)124;
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)124<<(char)32<<(char)32;
cout<<(char)95<<(char)95<<(char)32;
cout<<(char)32<<(char)124<<'\n';
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)47<<(char)32<<(char)47;
cout<<(char)124<<(char)32<<(char)124;
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)124<<(char)95<<(char)124;
cout<<(char)32<<(char)32<<(char)124;
cout<<(char)32<<(char)124<<'\n';
cout<<(char)32<<(char)32<<(char)47;
cout<<(char)32<<(char)47<<(char)32;
cout<<(char)124<<(char)49<<(char)124;
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)32<<(char)32<<(char)47;
cout<<(char)50<<(char)124<<'\n';
cout<<(char)32<<(char)47<<(char)32;
cout<<(char)47<<(char)32<<(char)32;
cout<<(char)124<<(char)57<<(char)124;
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)84<<(char)79<<(char)32;
cout<<(char)32<<(char)47<<(char)48;
cout<<(char)47<<(char)32<<'\n';
cout<<(char)47<<(char)32<<(char)47;
cout<<(char)95<<(char)95<<(char)95;
cout<<(char)124<<(char)53<<(char)124;
cout<<(char)95<<(char)95<<(char)32;
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)47<<(char)48<<(char)47;
cout<<(char)32<<(char)32<<'\n';
cout<<(char)124<<(char)95<<(char)95;
cout<<(char)95<<(char)95<<(char)95;
cout<<(char)124<<(char)50<<(char)124;
cout<<(char)95<<(char)95<<(char)124;
cout<<(char)32<<(char)32<<(char)47;
cout<<(char)49<<(char)47<<(char)32;
cout<<(char)32<<(char)32<<'\n';
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)124<<(char)32<<(char)124;
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)32<<(char)47<<(char)32;
cout<<(char)47<<(char)32<<(char)32;
cout<<(char)32<<(char)32<<'\n';
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)124<<(char)32<<(char)124;
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)47<<(char)32<<(char)47;
cout<<(char)95<<(char)95<<(char)95;
cout<<(char)95<<(char)32<<'\n';
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)32<<(char)32<<(char)32;
cout<<(char)124<<(char)95<<(char)124;
cout<<(char)32<<(char)32<<(char)124;
cout<<(char)95<<(char)95<<(char)95;
cout<<(char)95<<(char)95<<(char)95;
cout<<(char)95<<(char)124<<'\n';
return 0;
}
输出形式是这样的:
![](http://dl2.iteye.com/upload/attachment/0094/5971/ddae2961-b9c7-3e9d-ba65-443fcc822e12.jpg)
#include <stdio.h>
#define six 1+5 #define nine 8+1 int main ()
{
printf ("what do you get when you multiply six by nine?\n");
printf ("%i x %i = %i\n", six, nine, six*nine);
}
解释:6 x 9 = 42 ???,如果你知道宏只是做简单的字符串替换的话,你就知道 six*nine 被替换成了1+5*8+1 这个表达式了。
解释:参看原文的这个答案里的 How-To 一节。
Brainf**k
代码混乱自然少不了 brainf**k 语言:(更多的奇葩的编程语言请参考《那些 BT 雷人的编程语言》)
不过,下面这个 BrainF**k 更无聊,所以写在了最佳答案上:
![](http://dl2.iteye.com/upload/attachment/0094/5977/f6622a12-8db8-36ab-b442-78cb2209f06a.jpg)
执行上面的代码,你会得到下面的输出:
再执行上面的代码,会输出:
6*7=42
如果6*9=42 就完美了,就差一步啊……
本文转载自:酷壳博客
9 楼 rex0654335 2014-03-12 18:29
8 楼 夜神月 2014-03-12 13:20
7 楼 guihaiyidao1 2014-03-10 11:18
6 楼 kanme818 2014-03-09 15:58
5 楼 kuchaguangjie 2014-03-09 00:56
4 楼 dohkoos 2014-03-08 16:15
3 楼 freezingsky 2014-03-07 22:02
2 楼 diggywang 2014-03-07 21:50
1 楼 freezingsky 2014-03-07 21:35