研究华容道论文
研究华容道论文
华容道就是曹操逃跑的一个地方
这是四大名著《三国演义》里面的一个小地名是 赤壁之战 曹操 败退时被关羽 拦截的地方 但是关羽因为曹操的恩情而放掉了曹操……再有就是由此后人发明的一款智力游戏也叫《华容道》非常棒!
呵呵 我也听累 人的
给个分 把 苦啊
华容道已经被研究过多年,也总结了许多关口的走法,为让各位喜欢华容道的朋友少走弯路,我把一些走法整理出来,与大家分享。
下面的走法沿用L.E.Hordern的记录方法,即在多数情况下只要指明走哪一个棋子就够了,只有少数情况下才指明如何走。这时用以下符号来表示。L向左;R向右;U向上;D向下;!只走一格;#必须拐弯(指最小棋子)。没有这些符号时,表示直走,到头为止(一格或两格)。棋子编号见图1。当然,这只是指出了如何过关,大家也不必死记硬背这些步骤,关键要从此研究出过关的必要条件,而达到通关的目的。
(1) 横竖皆将
6 4 5 7 # 9 6 8 3 5 7 9 L 2 A 7 5 1 7 L A 2 4 5 9 L 4 5 8#3 1 9 L 4 5 8#3 1 9 L 4 5# 2A 9 # 4 1 3 6 8 5 2 A 9 7 4 3 5 8 6 D 3 A 9 1 7 4 3 1 2 2 6R 5# 8# A 9 1 7 4 3 1 A 9 1 7 2 6 8 5 A 9 3 4 2 6 5 # A
(2)守口如瓶之一
5 7L 2 A 1 3 6 4 1 A 2 7# 9 8 4 1 6 #4 1 6 5 #7 9 5 6 #1 4 7 # 9 5#2 A 7 #9 4 1 8 6 D 5 2 A 7 3 9 1 5 6 7 1 4 D 1 A 7 1 3 9 1 4 2 8 R 5 #6#A 7 1 3 9 1 4 A 8 3 2 8 6 5 A 7 1 9 2 8 5#A
(3)守口如瓶之二
7#9 8 6 #3 1 A 2 4 7 R 2 A 1 3 6 #8 9 7#4 A 5 6 #8 9 7 # 8 9 3 6# 51 6 U 5 1 A 4 81 2U 8 1 1 7 9 3 5 2#8 7 # 4 A 2#8 5 3 9 1 7 4 A 2 6 8 3 7 1 9 5 D 3 9 2 1 6 8 3 5 4 9 R 1# 7# A 2 1 6 8 3 5 A 2 1 6 4 A 7 1 A 2 3 8 4 9 1#A
(4)层层设防之二
9 L8#4 2 A 1 3 5 2 4 8 9 6 7 2 5 3 1 L,A 4 5 2 7 6 9 8 2 7 6 # 7 8# 7 9 3 6 # 5 8 #4 A 6# 5 3 8 9 2 4 A 6 1 5 8# A 6 1 1 5 8 3 4 7 2U 9 7 2 A 6 1# 4 A 6 3 2 6# 7 9 A 1#3 2 8 5 3 1 A 9 7 1# A 4 3 2 # A 1 6# 8 A 1 4 3 1# 4 3 9 7 8 6 D A 6 2 1 4 3 9 7 6 8 A 9 7 8 #A
(5)Top secret
7 5 3 2 1 4 6 7 L A 1#4 6 7 1 1 3 5 9 8 A 1 4 2 5 3# 4 7 R 6 2 4 1 A 8 9 3 D 5 1 4 2 7 U 6 U A 1 3 9 8 3 D 1 D A 7D 6D 2 5 4 9 8 3 1 A 9 8 1#A
(6)三军联防
6 7 4 3 7# 3 4 2 1 A 7 5 8 4 6 9# 6 4 8 3 9 L 2 1 A 5# 3 8 9 U 4 6 2 1 A5 7
3 9# A 1 2 4 6 8 9 A 1 2 4 6 9# A 3 7 5 1 2 4 6 9 8 A 4 6 8#A
(7)堵塞要道
5 9 6 7 4#2 A 3 #7 5 6 9 8 4 2 D A 3 1 7 5 6 9 8 4 2 D A 1 3 D 7 5 6 9 8 4 2 A 9 8 2#A
(8)水泄不通
9 7 6 8 9 U 7 6 5 4 8 9 U 5 4 9 A 1 3# 8 A 1 2 9 1# 4 5 A 3# 21# 4 5 6 7 A 5 4 1# 2 3 #5 4 2 1 9 D 3 8 5 4 A 7 6 1# 9 3 8#5 4 A 1 9 6 7 1 9 D A 4 5 2 8 3 U 6 7 9 1 A 6 7 1#A
(9)四路进兵(原文 67步,11 66步)
A 4 3 #2 A 4 3 #1 5 2 #7 6 A 3 #1 2 #7 6 9 8 A 6 7 2 0#1 3 #6 7 1 2 5 D 3 4 6 7 A 8 9 2# 5 3 4# 6 7 A 2 5 9 8 2 5 D A 7 6 1 4 3 U 9 8 5 2 A 9 8 2# A
华容道问题用计算机求解,一般采用广度搜索的方法,其原理很简单,就是把下一步可能有的走法全部算出来,比如第一步有五种走法,将这五种走法的下一步走法分别算出来,可能会有三十步,在继续将这三十步走法的下一步走法分别算出来,可能会更多,以此类推,直到达到目标状态(曹操在出口位置)为止。
在解华容道的问题上,我觉得有两个问题比较棘手。
其一、算法的效率。
其二、获得最优解法。
我是这样解决的:
1、 要提高算法的效率,首先要知道算法的瓶颈在什么地方,在得出每一个状态(走完一步各个棋子的位置)都要和前面的状态进行比较,以保证不重复,随着步数的增多,状态数会大幅度增加,这是,和前面的状态比较这一过程成了整个算法的效率。解决的办法,从两个地方着手,其一,增加每一步比较的速度。在程序中,用5*4的数组表示一个状态,这样,每一次比较要比较二十个数,因为数组中每个数定义从0-7,用三个二进制位可以表示,3*20=60位,用一个64位数就可以表示(有的资料说用四个字节就可以,我实在想不出来),这样每次比较一个64位数就可以了。其二、减少比较的状态,这是提高效率的关键。比较的时候不要和前面所有的状态都进行比较,只要和前两步的所有状态进行比较就可以了。经过以上的优化,在解横刀立马时,大约需要一,两秒钟就可以了,(我的机器,赛扬1.1OC1.46)。
2、 获得最优解法,比如横刀立马是81步,这里的一步指移动一个棋子,可以把一个卒子向一个方向移动两格,或者卒子拐弯移动两格,或者一个将向一个方向移动两格(横将横着移,竖将竖着移)都是一步。获得最优解法的关键是把下一步可能有的走法全部算出来,不能遗漏。我是根据空格来算走法的的,分三种情况:
① 、卒子拐弯移动,如果有连着两个空格(横向的),则如果在它的上面或下面(有四个位置)有卒子的话,那么可以拐弯移动,有四种走法。如果两个空格是竖向的,那么,空格的左右如果有卒子,也可以拐弯移动,也有四种走法。
②、向一个方向移动两格,这里可能出现的情况有:卒子向一个方向移动两格,横将横着移两格,竖将竖着移两格
③、考虑向一个方向移动一格的情况,这里情况很多,我不一一列举了。
以上的算法很麻烦,很大一部分程序用来写这个了,如果大家有更简单的,可以告诉我,但一个原则,必须把所有的走法全部考虑。
另外,说一下我在写程序时的小插曲。程序快写好时,运行时发现,每解一次,内存使用会增加7,8兆,后来发现分配的内存每释放导致的,其实在函数中也就分配了几十个字节,由于被重复调用,最后泄漏的内存就很可观了,以后使用指针分配内存可要注意了,(C用malloc,C++用new),一定要释放,弄不好,^@^。
程序用dev-C++ 4.9.9.0(可以从网上下,只有十多兆)编译通过,因为dev C++没有框架等东西,所以界面直接用window API写的。生成的可执行文件很小,68 K。另外,在程序中可以自定义布局,用5*4数表示。其中0-空格,1-卒子,2到6 将,7曹操。
最后附上所有的源代码。
程序为:
#include <string>
#include <windows.h>
#include "HRD_Calculate.h"
char str[80];
PAINTSTRUCT pa;
HDC hdc,memdc;
RECT rect;
HBITMAP hbit;
HBRUSH hbrush;
HPEN hpen;
POINT point;
hrd_calculate hrd; // User declarations
int current_step;
unsigned __int8 display_node[5][4];
/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
/* Make the class name into a global variable */
char szClassName[ ] = "WindowsApp";
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd; /* This is the handle for our window */
MSG messages; /* Here messages to the application are saved */
WNDCLASSEX wincl; /* Data structure for the windowclass */
/* The Window structure */
nce = hThisInstance;
assName = szClassName;
dProc = WindowProcedure; /* This function is called by windows */
= CS_DBLCLKS; /* Catch double-clicks */
= sizeof (WNDCLASSEX);
/* Use default icon and mouse-pointer */
= LoadIcon (NULL, IDI_APPLICATION);
m = LoadIcon (NULL, IDI_WINLOGO);
r = LoadCursor (NULL, IDC_ARROW);
nuName = NULL; /* No menu */
xtra = 0; /* No extra bytes after the window class */
xtra = 0; /* structure or the window instance */
/* Use Windows's default color as the background of the window */
kground = (HBRUSH) COLOR_BTNFACE;
/* Register the window class, and if it fails quit the program */
if (!RegisterClassEx (&wincl))
return 0;
/* The class is registered, let's create the program*/
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"华容道", /* Title Text */
WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
544, /* The programs width */
375, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);
/* Make the window visible on the screen */
ShowWindow (hwnd, nFunsterStil);
/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
/* Translate virtual-key messages into character messages */
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}
/* The program return-value is 0 - The value that PostQuitMessage() gave */
return ;
}
/* This function is called by the Windows function DispatchMessage() */
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int initx=20,inity=20,grid=50,interspace=3,arc=25;
int i,j,m=0;
char s[100];
switch (message) /* handle the messages */
{
case WM_CREATE:
{
CreateWindow("BUTTON","解题",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,350,150,100,
30,hwnd,(HMENU)1000,((LPCREATESTRUCT) lParam)->hInstance,NULL);
CreateWindow("BUTTON","自定义布局",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,350,90,100,
30,hwnd,(HMENU)1001,((LPCREATESTRUCT) lParam)->hInstance,NULL);
CreateWindow("EDIT","27732773144115510660",WS_CHILD|WS_VISIBLE|ES_NUMBER|WS_BORDER,350,50,165,
20,hwnd,(HMENU)1002,((LPCREATESTRUCT) lParam)->hInstance,NULL);
GetClientRect(hwnd,&rect);
hdc=GetDC(hwnd);
memdc=CreateCompatibleDC(hdc);
hbit=CreateCompatibleBitmap(hdc,,);
SelectObject(memdc,hbit);
hbrush = (HBRUSH) GetStockObject(WHITE_BRUSH);
SelectObject(memdc, hbrush);
//hpen = (HPEN) GetStockObject(BLACK_PEN);
//SelectObject(memdc, hpen);
ReleaseDC(hwnd,hdc);
///////////////////////////////////////
display_node[0][0]=GENERAL1;
display_node[0][1]=CAOCAO;
display_node[0][2]=CAOCAO;
display_node[0][3]=GENERAL2;
display_node[1][0]=GENERAL1;
display_node[1][1]=CAOCAO;
display_node[1][2]=CAOCAO;
display_node[1][3]=GENERAL2;
display_node[2][0]=GENERAL3;
display_node[2][1]=GENERAL5;
display_node[2][2]=GENERAL5;
display_node[2][3]=GENERAL4;
display_node[3][0]=GENERAL3;
display_node[3][1]=SOLDIER;
display_node[3][2]=SOLDIER;
display_node[3][3]=GENERAL4;
display_node[4][0]=SOLDIER;
display_node[4][1]=BLANK;
display_node[4][2]=BLANK;
display_node[4][3]=SOLDIER;
break;
}
case WM_TIMER:
{
if(current_step<)
current_step++;
else
{
current_step=0;
KillTimer(hwnd,1);
Sleep(2000);
}
for( i=0;i<5;i++)
for( j=0;j<4;j++)
display_node[i][j]=[current_step].state[i][j];
InvalidateRect(hwnd, NULL, 0);
break;
}
case WM_COMMAND:
if(HIWORD(wParam)==BN_CLICKED)
switch (LOWORD(wParam))
{
case 1000:
{
//hrd= new hrd_Calculate;
ate(display_node);
if( Node())
{
sprintf(s, "解题成功!\n\n解题深度:%d 节点数:%d", ,odes);
MessageBox(hwnd,s,"华容道",MB_OK);
Step();
current_step=0;
SetTimer(hwnd, 1,700, NULL);
}
else
{
sprintf(s,"此局无解") ;
MessageBox(hwnd,s,"华容道",MB_OK);
}
break;
}
case 1001:
{
GetDlgItemText(hwnd,1002,str,80);
for (i=0;i<5;i++)
for(j=0;j<4;j++)
{
display_node[i][j]=(int)(str[m])-0x30;
m++;
}
InvalidateRect(hwnd, NULL, 1);
break;
}
}
break;
case WM_PAINT:
{
hdc = BeginPaint(hwnd,&pa);
PatBlt(memdc, 0, 0, , , PATCOPY);
//Draw
for (i=0;i<5;i++)
for(j=0;j<4;j++)
{
if (display_node[i][j]==SOLDIER)
RoundRect(memdc,inity+j*grid+j*interspace,initx+i*grid+i*interspace,
inity+(j+1)*grid+j*interspace,initx+(i+1)*grid+i*interspace,arc,arc);
if (display_node[i][j]>=GENERAL1 && display_node[i][j]<=GENERAL5)
{
if (i<4)
if (display_node[i][j]==display_node[i+1][j])
RoundRect(memdc,inity+j*grid+j*interspace,initx+i*grid+i*interspace,
inity+(j+1)*grid+j*interspace,initx+(i+2)*grid+(i+1)*interspace,arc,arc);
if (j<3)
if (display_node[i][j]==display_node[i][j+1])
RoundRect(memdc,inity+j*grid+j*interspace,initx+i*grid+i*interspace,
inity+(j+2)*grid+(j+1)*interspace,initx+(i+1)*grid+i*interspace,arc,arc);
}
if (display_node[i][j]==CAOCAO)
if (i<4 && j<3)
if( display_node[i+1][j+1]==CAOCAO)
RoundRect(memdc,inity+j*grid+j*interspace,initx+i*grid+i*interspace,
inity+(j+2)*grid+(j+1)*interspace,initx+(i+2)*grid+(i+1)*interspace,arc,arc);
}
//////////////////////////////////
BitBlt(hdc,0,0,,,memdc,0,0,SRCCOPY);
EndPaint(hwnd,&pa);
break;
}
case WM_DESTROY:
{
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
DeleteDC(memdc);
DeleteObject(hbit);
break;
}
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
///HRD_Calculate.h 的程序写法
/////////////////////////////////////////////////
//华容道解法1.0.0.1
//此解法可得出最优解
//横刀立马 81步
//最后修改时间 2004.9.22 晚上
//
/////////////////////////////////////////////////
#include "HRD_Calculate.h"
hrd_calculate::hrd_calculate()
{
//申请状态表空间
first= new s_node[MAX_NODES];
}
hrd_calculate::~hrd_calculate()
{
delete[] first;
}
void hrd_calculate::NodeToSNode(node * pnode,s_node* psnode)
{
int i,j;
__int8 hgeneral=8,vgeneral=9;
node * tnode= new node;
*tnode=*pnode;
for( i=0;i<5;i++)
for( j=0;j<4;j++)
{
if (tnode->state[i][j]>=GENERAL1 && tnode->state[i][j]<=GENERAL5)
{
if (j<3)
if (tnode->state[i][j] == tnode->state[i][j+1])
{
tnode->state[i][j]=hgeneral;
tnode->state[i][j+1]=hgeneral;
}
if(i<4)
if(tnode->state[i][j] == tnode->state[i+1][j])
{
tnode->state[i][j]=vgeneral;
tnode->state[i+1][j]=vgeneral;
}
}
}
for( i=0;i<5;i++)
for( j=0;j<4;j++)
{
if(tnode->state[i][j]==hgeneral) tnode->state[i][j]=HGENERAL;
if(tnode->state[i][j]==vgeneral) tnode->state[i][j]=VGENERAL;
}
psnode->prior=(s_node *)pnode->prior;
psnode->state=0;
psnode->ext_state=0;
for( i=0;i<5;i++)
for( j=0;j<4;j++)
{
psnode->state += pnode->state[i][j];
psnode->ext_state += tnode->state[i][j];
if (!(i==4 && j==3)) psnode->state = psnode->state<<3;
if (!(i==4 && j==3)) psnode->ext_state = psnode->ext_state<<3;
}
delete tnode;
}
void hrd_calculate::SNodeToNode(s_node* psnode,node * pnode)
{
__int64 temp,s;
s = psnode->state;
pnode->prior=(node*)psnode->prior;
for(int i=4;i>=0;i--)
for(int j=3;j>=0;j--)
{
temp = s & 0x0000000000000007;
pnode->state[i][j]= temp ;
s = s >>3 ;
}
}
void hrd_calculate::OutputStep()
{
node * outfirst,* outlast,*p;
outfirst=&out[0];
outlast=outfirst+(depth);
p=outlast;
while ( p>=outfirst)
{
SNodeToNode(last,p);
last=last->prior;
p--;
};
}
bool hrd_calculate::SearchNode()
{
int nextnodes;
node * tnode=new node;
int total;
while(true)
{
nextnodes=0;
table[depth+1]=(unsigned int)(last+1);
for ( ;search<=current_last ; search++)
{
SNodeToNode(search,tnode);
tnode->prior=(node *)search;
total=SearchOneNode(tnode);
nextnodes +=total;
if (total==SUCCESS)
{
delete tnode;
return true;
}
}
if (nextnodes==0)
{
delete tnode;
return false;
}
depth++;
current_last=last;
}
}
int hrd_calculate::AddNode(node c)
{
s_node *p;
s_node *snode=new s_node;
if (depth<=3) p=first;
else p=(s_node*)table[depth-1];
NodeToSNode(&c,snode);
for (;p<=last;p++)
if (p->ext_state== snode->ext_state)
{
delete snode;
return ADD_NO_NODE;
}
//加入节点
last++;
last->prior=snode->prior;
last->state=snode->state;
last->ext_state=snode->ext_state;
totalnodes++;
delete snode;
if ([3][1]==CAOCAO && [4][2]==CAOCAO )
return SUCCESS;
else
return ADD_ONE_NODE;
}
void hrd_calculate::InitState(unsigned __int8 state[5][4])
{
//设定初始状态
node initnode;
=0; //没有上一步
for(int i=0;i<5;i++)
for(int j=0;j<4;j++)
[i][j]=state[i][j];
////////////////////
NodeToSNode(&initnode,first);
////////////
last=first;
search=first;
current_last=first;
depth=1;
totalnodes=1;
table[0]=0;
table[depth]=(unsigned int)first;
}
int hrd_calculate::SearchOneNode(node *c)
{
int i,j;
int next_nodes=0;
node t;
for(i=0;i<5;i++)
for(j=0;j<4;j++)
{
if (c->state[i][j]==BLANK)
{
///////////////////////////////////////////////////////////////////////////////
//直走两步
if (j<3)
{
if (c->state[i][j+1]==BLANK)
{
if (j>0)//左边兵右移两格
{
if (c->state[i][j-1] == SOLDIER)
{
t=*c; =c->prior;
[i][j-1]=BLANK;
[i][j+1]=SOLDIER;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
if (j<2)//右边兵左移两格
{
if (c->state[i][j+2]==SOLDIER)
{
t=*c; =c->prior;
[i][j+2]=BLANK;
[i][j]=SOLDIER;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
if (j==2)//左边将右移两格
{
if (c->state[i][j-1]>=GENERAL1 && c->state[i][j-1]<=GENERAL5 && c->state[i][j-1]==c->state[i][j-2])
{
t=*c; =c->prior;
[i][j]=c->state[i][j-1];
[i][j+1]=c->state[i][j-1];
[i][j-1]=BLANK;
[i][j-2]=BLANK;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: next_nodes++;
}
}
}
if (j==0)//右边将左移两格
{
if (c->state[i][j+2]>=GENERAL1 && c->state[i][j+2]<=GENERAL5 && c->state[i][j+2]==c->state[i][j+3])
{
t=*c; =c->prior;
[i][j]=c->state[i][j+2];
[i][j+1]=c->state[i][j+2];
[i][j+2]=BLANK;
[i][j+3]=BLANK;
switch (AddNode(t))
{
case SUCCESS: return SUCCESS;
case ADD_ONE_NODE: n
关于四大名著的论文 1000字左右的
必然的做法是首先要作几部古典名著的主导思想和主题意蕴的比较。
依笔者浅见,《红楼梦》的主导思想是启蒙的个人自由主义,而其主题意蕴则是在混沌生活中极力追求真善美的人生境界以及这种追求不可能达到的悲怆和幻灭。《红楼梦》的这一思想核心达到了中国古代文学史上最高峰的思想认识水平,建立在对写作当时所有社会思想进行深刻总结批判的基础之上,是中国文学史上从未出现过的新思想的结晶。从书中可以看出,在中国思想史上最为重要的三大家道、儒、佛的思想,作者都有深刻的认识,采撷了其中的精华。至于其它一些思想文化知识,更有不同程度的吸收,说明了作者文化根底的浑厚广博。然而,从这一思想核心自身来看,它的新颖进步却又是前所未有的。它不但是人们常说的资本主义萌芽思想,而且可以说是人类自古就有并且只有人类才有的对于自由的超越性追求意识的突出表现。这在今天也是有意义的,符合人类整体进步的思想主流。《红楼梦》的主导思想可以称为"人学"。《三国演义》的主导思想,是尊刘抑曹以及天道循环的维护正统的儒家学说,可以称为"政学"。它的主题意蕴与主导思想是基本一致的:在一治一乱的天道循环中维护正统王朝统治和封建传统观念。《水浒传》的主导思想是对于人民群众进行教化的"灭心中贼&q uot;的封建伦理观念,可以称为"地学"。它的主题意蕴是:教化人民群众在官逼民反的状况下还要坚持替天行道的思想观念。而《西游记》的主导思想似乎偏向于道教的自由自在,可以称为"天学"。但是,笔者在思想深处却又不能这样简单地认定。
经过一段时间的思考, 笔者认为《西游记》的主导思想不属于道学--从各种思想学派比较来看是中国人真正的思想根源。当然,这本书确实具有道学道教思想的极大因素。 一是孙悟空的本领是从道学道教得来的道术。孙悟空遍寻学问,四方求学,最后是在道家那里得到了真本领。二是《西游记》存在着道学的思想观念,例如灭人欲、存天理等。主人公孙猴子根本不像猪八戒那样要一个异性作押寨夫人,或者追求一种爱情。三是对于天宫的封建意识即儒家维护的那种秩序和佛教宣传的那一套极尽讽刺挖苦之能事但却又无法选择以致于无可奈何地认可,然而此书没有怎么非议嘲笑道教本体--尽管有对于假道学、真魔怪的揭发和斗争。四是以道教的术语及认识作为全书的基本结构思维,充满了道教的数理观念,如孙悟空有十万八千根毫毛,一个筋斗有十万八千里,如意金箍棒有十万八千斤等。不过,深入研读就可以发现,本书对道学仅仅是一种尊重和借用,而且是敬而远之、避之唯恐不及的,犹如对待佛教如来的神权统治和玉皇大帝的王权统治。道学虽然对个体生命及其发展抱有一定的慈悯之心,但是道学师傅却又宣布和徒弟孙悟空断绝关系,警告徒弟如果暴露师傅的名字就将给予毁灭性的无情惩罚。因而,孙悟空与道学的绝决是明显的。他和道学再无联系,更谈不上发展传播。所学也只是道学的皮毛之术,而不是其博大精深的内涵。他的行为本质不是道学提倡的任其自然的无为而为的行为。即使是孙悟空所学的道学,也不是传统意义上的维护秩序的正统道教。中国宗法意识的大而化之的真正的原始道学,是民间的、隐藏的,由孙悟空的师傅、又如鬼谷子等修养极深的学问家所传袭。而且,他们是超然隐遁、威严无情、广大无边的。对孙悟空这样一个农村学子的态度很可探究。他们对各种关系如现实政治以及外国关系的处理,与老君的官方招安的道教不同。官方道教一点也不排斥肉欲在内的物欲,精研房中术。官方道学维护传统秩序,协助镇压动乱造反的社会势力,协调各种统治阶级的政治关系,不是像孙悟空的师傅那样明知故犯地教练出一个破坏秩序的大闹天宫的动乱因子。更何况,孙悟空改换门庭,最终公开地投到了佛教的门下,拜唐僧为师,这就离道学道教更远了。
那么,能不能从孙悟空最终皈依佛教这一点就说明此书的主导思想是佛教的呢?不能。佛教思维和神通的广大,是孙悟空所无可奈何地承认的,但是他--折射出作为中国知识分子之一的作者的思想意识--并不服膺佛教。佛教的严格等级制度,是孙悟空非常厌恶的。他进行了傲慢辛辣的讽刺,矛头直接对准最高佛祖如来及其帮手观世音菩萨。佛教唯利是图、维护王权的虚伪本质,书中也进行了犀利的揭发。尽管唐僧师徒经历了九九八十一难的取经险途,管理经文的佛门弟子竟然还要索贿,而最高佛祖还以历史上的传教事例来包庇纵容。再从本性上说,孙悟空不习惯这种制度的束缚,念念不忘的是花果山野的山大王以及农庄自给自足的生活(这时已经不再存在反抗王权的思想意识了)。孙悟空存在着回归山野的农民田园意识。这与中国人根深蒂固的家乡观念是一脉相承的。他只是不得已而在各种强大压力下皈依佛教而已。作者的思想意识正是如此。由政治的实践的抗争失败无奈之下转向了思想意识上深层的不满。一个圈子兜转回来,思想和生命已经趋向消极。中国大多数的知识分子都只能是这样的。?
非儒,非佛,非道,那么也许是个别人所说的资本主义萌芽形态的个人主义(无人性的人欲的平等的)吗?非也。个人主义,是建立在人的生理欲望的基础上的。而孙悟空则非常奇特,尽管似乎深明大理,理解他人私生活,却毫不以男女情爱为念。他云游四海,从来不想追求那种古今中外都有的异性爱。他模糊地存在一个念头,像猴子一样依样学人,只想钻进一个热闹去处。天宫在他看来便是一个游玩的好地方,并在那里像花果山一样称为大王。与该书同时产生的明代几部文学著作如冯梦龙的三言二拍相比,孙悟空这个形象没有那种情性、那种凡俗。倒是有一种小集体即中国传统的家庭宗族所特有的高高在上、庇护属下的仁爱,可谓盗亦有道。那么究竟是什么思想在做主导呢?
《西游记》的主导思想
《西游记》究竟以一种什么思想意识来作为主导呢? 答曰:是一直没有得到重视的一种中国早就存在的、被道儒法等思想流派所掩盖的流氓无赖意识。这种思想意识,在作者笔下有意无意地折射了出来。
首先, 孙悟空的奋斗一生是追求传统的个性的高超、自由、尊严,然而终于被压抑和扭曲的一生,这是自古以来大多数农村痞子的人生历程,还是历史的中国的一个缩影。 孙悟空靠着泼皮胆量坐上了宗法自然村的家长地位。接着,他依靠求学得来的道家的一些法术,要钻进最高统治阶层中去,结果只是被愚弄蒙骗,当上了喂养马匹的最下层科员。得知真相后,他怒不可遏,反下天庭,又靠着法术,争上了看似较高但却没有实权的政治协商委员式的政治地位,号称"齐天大圣"。但"大圣"也要受到森严等级制度和实力当权派的歧视,因为一个小小的搅乱宴会的过失,便被整个传统规范世界定为重点打击对象,沦为整个世界秩序所共同诛伐的罪犯。最后,由统治秩序的精神教育文化维护集团--佛教招为"保安处长",取得"斗战胜佛"的职称。孙悟空不但到头来仍然不是统治的最上层,而且没有了一开始追求的那种无压抑的最高尊严,陷入一种如戴紧箍咒一样心态的等级秩序的黑洞中去。经过五百年漫长无望的重压,为了生活处境的改变--主要也出于现实中的孤独无助和思想上的悲观失望,竟然完全不顾自尊地归降了佛教师傅。这是职业性出路的投师,而不是自然本性的投师,更不是理想追求的投师。困境即降,没有什么主义可以坚持,不是流氓无赖意识是什么。中国人自两晋以来的思想轨迹不正是这样吗?!在中国封建中央集权专制下,恶性封闭式的一治一乱循环不已。国人产生不出代表新的生产关系的社会萌芽,找不到思想和现实的出路,只好皈依了广大无边的佛教。东汉时传入中国的佛教并没有传播开来。但是,汉代封建大一统社会崩溃以后的几百年动乱分裂,使得中国人更多地接受了佛教,到了唐代就几乎成了国教。孙悟空不过是历史的中国人的一个缩影而已。
《西游记》可以说是一部相当数量中国人的生长史、闯荡史。他们以政治自由为其明显目的,以出国为其终点,不甘心而又甘心地沉沦下去。而在近几百年来,这一部分人"政路"不通即成教民,投西方去也,在外国得寄终身而又失去本身或大道。不断地受到歧视和欺骗,不停地怀疑、批评和嘲笑,但还是屈膝投降外来势力(只是对本国的政治对手没有服软)。而外来的佛教等宗教强大集团对中国的态度从根本上来说是要"教化"即夺心的,就像压迫孙悟空的五指山一样,对中国政府则采取了威压下进行扶植的态度。知识分子中于是产生了真诚信服的"愚氓"唐僧,当然也有更多的高级知识分子像《西游记》的作者一样保持着高超姿态,怀疑、讽刺、叹服、探讨和吸收都兼而有之。而孙悟空则是只有一些谋生之术、不肯信服但被威服的一般社会下层人员。他也找不到更好的途径。这个有着中小学文化程度和精练术数的乡村野小子,闯荡一生,最终没有实现自己朦胧的目标,没有逃脱缺少正确人生和社会理想思想主导因而投向西来宗教的命运。
其次,孙悟空正和真正的流氓无赖一样不愿接受任何约束。人所具有的社会性难不倒他,在小集体中他占据了王位。自然规律也难不倒他。他学会了高深的法术,在闫王殿中大展威风,勾去生死薄中的阳寿限制。对等级制度的反叛只是为了自己不可一世的自傲而不是大同或者理想社会的实现。他大闹天宫,叫嚣"皇帝轮流做,明年到我家"。他对佛教祖师,冷嘲热讽。对政治秩序蛮横地不服和蔑视,企图取而代之却不照这种统治的路子来。他对佛教采取了从实用角度的利用,同时又怀疑和嘲讽。参加取经队伍纯粹为了自身的"劳改""正果"。估计他在成佛后也不会丢失昔日在天宫中的散漫本性和浪荡作风。
再次,这种流氓无赖意识是客观存在的,其实出自于人性的本能。佛洛伊德认为,每个人都有这样的本能,经常发泄并主宰着行为:侵略性,扩张性和唯我独尊。总是显得超人一等、逞强霸蛮的街头痞子孙悟空是这样,有猴气、猴性、野性的大人物也是这样。这种本能中的流氓无赖意识,是小气狭隘的、阴狠短见的,但同时又建立在追求人在世界上的无限自由所必然具有的心理基础上。当然,这种本能所主宰的意识应在超我理性的辩证统一中逐渐失去主导作用,最终被更高理想的人生目标所支配。看来,孙悟空远远没有达到如此"成佛"阶段。
最后,与上述相联,流氓无赖意识是没有明确的最终目的的,只是追求最高统治地位--其实只是名义上的纯粹本性上的个人出人头地的一种本能要求而已。一味破坏的流氓无赖意识不是切切实实的战略战术。孙悟空空有夺取最高权力的叫嚷和蠢动,却没有按照封建正统的等级制的道路夺天下的理性及行为。他不以道为己任而以术为本,重术不重道,不以道对万物。流氓无赖正是这样的,他们是"道"所无法控制的混乱因子,对世界只破不立,对所学所宗只有皮毛之见,猴屁股一样坐不下来进行切实研究,更无创建,无修行。五百年的囚禁中,也只是图一个解脱,满足不甘寂寞的虚荣心。
由上述可以看出,《西游记》的主导思想是流氓无赖意识。即是说,作者吴承恩是带着也许自己都没有确认的流氓无赖意识进行创作的。不过,要在这里多说一句。这种流氓无赖意识,在笔者的笔下并不是纯粹的贬意。如果进一步说的话,它的根源是生命本能意识;它是生命本能意识在社会历史上不断表现和积累而成的一种国民性以及人性。这就是下面所说的流氓无赖意识的根源。
流氓无赖意识的根源
《西游记》的流氓无赖意识具有深刻的社会原因,有着悠久深厚的中国封建农业经济基础,有着广大的社会群体基础和绵绵不绝的思想基础,同时真切地反映了作者的心态思想和生命状态及其人生历程。从孙悟空身上,反映出了中国社会数千年历史都存在的特定组成部分--流氓无产阶级。特别值得我们参考的是,这个阶级的政治特性在毛泽东的《中国社会各阶级的分析》一文中有所分析。该文特别对"流民无产者"和"流氓无产阶级"(其实主要是流氓知识阶级)进行了分析。毛泽东,其实一切新社会的创立者都是一样的,都利用这个阶级的革命性,而警惕和制约其破坏性。孙悟空正是流氓无赖意识的集中表现,是中国社会历史特定阶层阶级的象征。
首先,我们来看《西游记》的流氓无赖意识的社会群体基础。
一是专心钻研政治并从事政治、不事生产、不搞生产力研究的知识分子(形成了教育越多越动乱的中国教育公式)。百家争鸣,都要游学,游士们都以说服君主为中心的政治人物为唯一人生目的。很少人以研究中国社会实质上的突变为人生奋斗目的。孟尝君养士三千,看来只是对现实政治斗争起到了一定的作用。李世民喜欢的"尽入吾彀中的科举",是以社会稳定即李唐王朝永保统治权为目的的。一到科举实行的时候,普天下便有秩序地游走着这种考取功名利禄的知识分子。历代统治者或者争夺者都要争取这部分"斗争性极强"、生命力旺盛的人。他们或者帮助宦官外戚,或者帮助军阀,或者自成军阀夺天下。夺得最高地位的刘邦(管理知识分子)的流氓意识,非常值得研究但却一直被忽视其代表性。中国传统思想中的霸道和王道及相互结合,都从流氓无赖意识中产生。自汉代以后的所谓儒教人物,在《儒林外史》可以看到集中反映:口是心非,满嘴里仁义道德,满肚子男盗女娼,行为低贱阴恶,--全都属于流氓无赖心态。社会的强权统治和管理权的争夺,使得老子和庄子发出了"道可道,非常道"、"盗亦有道"、"窃国者候"的愤怒谴责和无奈叹息。在《水浒传》中,高俅和宋江目的都是相同的,只不过机遇和能力的不同罢了。贫民之子李逵一旦长成便苦尽甘来,凭着流氓无赖的本性在日常生活中即靠威压众人过活,到了夺取权力的时候更是丧心病狂地滥杀一气,终于争到了"不事生产(刘邦语)"的政治地位。他们都不是真正的农民即"事生产者",是"不事生产者"之间的无情倾轧,是对"事生产者"的剥削、迫害或残害,即吃人者。"读万卷书,行万里路"的知识分子,以政治为最高目的,四处流浪,寻找门径。也有人因为爬不上去而只能从事艺术创作,成就了文化事业,反映和表现这种流氓无赖意识。吴承恩就是这样。应该说明,中国大一统的社会需要这种人,就连人类社会也需要这种极为活跃的因子。不少英雄人物也有这样的游民出身和生存经历,夏禹便是如此。?
二是由于不搞计划生育而不断地循环地产生的流民流寇。历代农民,在封建家族观念支配下盲目地大量生育,社会也没有任何限制,往往在一个王朝初期还极力鼓励生育。于是,很快就以几何倍数地惊人数目涌现了富余闲散人员,大大超出了生产能力的增长,造成了经济的困境。加上,政治混乱,土地本来就日益见少而又无法限制土地兼并。失业者越来越多。这些人成为市井流氓,或者散兵游勇。阿q便是这样的可怜的人。于是,结成宗教式谋生团体如帮会势力。终至于啸聚山林,再遇到天灾人祸的导火索,正好燃起熊熊大火。历次农民起义,都是由于中国社会的这一恶性症状所促成的。整个社会于是停滞不前,待到战争及动荡削减了人口,降低了原有矛盾的刺激性,社会便在新王朝的统治下休养生息,进入又一轮生育--膨胀--危机--战争--安定的怪圈。有学者对此进行了研究,人数达到一定倍率时,社会就要动乱。三国时期,五千万人被战争夺走三千万生命。而到了封建统治最为完善的乾隆年间,中国人口一下子达到了四亿。社会时时处处都像坐在火山口上。他们的生存意识和斗争意识达到极限。太平天国便成为封建社会末期最大的一次社会动乱。
可以说,《西游记》的流氓无赖意识的社会群体基础就是中国自古就有的流氓无产阶级。这个阶级具有极大的可塑性、灵活性和创造性,一无所有也就无所畏惧,这就又具有极大的破坏性,能够造成社会结构的崩溃。孙悟空存在着这些人的特性。
接着,我们来看《西游记》的流氓无赖意识的思想根源。第一层次的论述中已经包含了这一部分的内容。简要地说,《西游记》的流氓无赖意识起源于人的本能意识,继之明显地起源于中国道家及百家学说,然而从实践来看应该说起源于民间和历史所有的中国人的流氓无赖意识。孙悟空的历程,同样可以说是人生历程的象征。孙悟空具有人的本性。少年时对人生的目的产生了迷茫,纯粹为了感官的乐趣而游玩。青年时人生从感性阶段发展到理性阶段,但也从鲜活走向僵化。上升交游,四方求学,打破死限,醉生梦死,扯旗造反,失败坐牢,悔过求经,终于从思想上接受"招安",不再有引人注目的行为、思想和追求,从此做了护法的"保卫处长"。几乎每一个人都要经过这样的历程,从怀有一种大而迷茫的志向到最后几乎都失落,最终在现实中被理性化地泯灭。生命就是痛苦,最痛苦的是人生最终价值破灭的痛苦!孙悟空所接受的理性化的道家思想,在其发展中曾经蜕变为墨家和武侠,主张个人英雄主义,纵横天下,替天行道,为所欲为。孙悟空何尝不是"路见不平,拔刀相助"的游侠!从古到今的中国社会到处都有这种思想意识。生存的艰辛使得国人如此短视和低贱。活下去,是最大的真理。
就连作者心态也是这样的。作者只有经历了失落、迷茫、不平、空虚的追求历程,深明中国社会的思想真谛,才能写出这样的著作来。
揭示 《西游记》的流氓无赖意识的现实意义
揭示《西游记》的流氓无赖意识,对于我们今天的现实生活有着深刻的意义。中国人的流氓无赖意识根深柢固,绵延不绝,遍及九州,只要看一看现实生活就可以确认这一点。稍有阅历的人都知道,到处充斥着流氓无赖意识。管理人民的官场,贿赂贪污比比皆是。而下层社会,盗窃抢劫令治安成为司空见惯的最大问题。生意场上,欺诈赖账的人不以为耻,反以为荣。以流氓无赖意识为主导来行事的人是不讲什么人格、精神的。他们不怕人看轻,品格低劣下贱,心地阴恶狠毒。不过,在表面上,他们却深得奸诈的真传,满口里是仁义道德,无情地指责攻击他人。自古以来的中国普通人就缺少一种"君子"的风度和心胸。就连文学艺术中也在盛行"痞子小说"(尽管作者会是在一种过激心态下说的反话,但"我是流氓我怕谁"的骂街确实风行全国,道出了人们的心声)和武侠小说(动不动就要指斥和打击他人而不是宽容他人)。建立在落后经济基础和陈旧思想基础之上的中华民族群体的生活和精神是不容易彻底改变的,尽管也在发生着渐变。
如此说来,流氓无赖意识正是改造国民精神的一个焦点。在这一点的变革上,以提高人的精神层次、美化人的精神世界为目的的文学应该起到独特的作用。鲁迅先生一生致力于对于国民性的深刻剖析,希望国人树立新的国民性。文学应当改造中国人心底处深藏的流氓无赖意识--"流氓鬼"。不能让这种低级生命存在的需要和阶段就像精神胜利法一样的流行精神病再来操纵中国人的灵魂。文学应该让中国人树立一种新的人生意识,那就是传统早就有过而被长期封建专制所压抑和扭曲的民族魂:自强不息,开拓进取,克己奉公,包容博大。让新的中华大道树立起来,这就是个性的自由全面的发展。利用现代民主政治为平等个性的发展提供社会科学条件;利用高科技基础上的商品经济为人们建立"衣食足而知荣辱"的生活基础。既有社会正当约束的认可如计划生育政策,又有个体创造的极限发展。像孙悟空那样的盲动,不能再继续下去了。《西游记》是在中国文学史上唯一一部通篇塑造主人公的长篇小说。由此,笔者希望产生新的中华大道所主导的孙悟空形象。
《西游记》这样一部哲理小说,作为中国人漫长发展过程中一段思想意识历程的记录,有待于学者的进一步探讨。
进入深秋,早上略显凉寒。10月12日上午9时,面对众多《水浒》爱好者,主持人傅光明研究员首先说:提起《水浒传》中的人物,大凡熟悉《水浒》的读者都能连名带号地随口说出一连串名字,像豹子头林冲、花和尚鲁智深、智多星吴用、玉麒麟卢俊义、古上蚤时迁、矮脚虎王英、一丈青扈三娘、浪子燕青、行者武松、神行太保戴宗,等等。但要说最核心的人物,而且又引起褒贬争议的人物,恐怕就要属宋江了。今天的《品读水浒传》,就请北京师范大学中文系教授、博士生导师张俊先生为我们《话说“及时雨”宋江》。
大家好!宋江是《水浒传》贯彻始终的主角,也是小说的第一号人物,同时他又是争议最多的一个人物,现从以下四个方面谈谈我的水浒传》一百零八将每人都有一个绰号,如智多星吴用、黑旋风李逵、豹子头林冲等等,而宋江却有几个绰号。宋江,表字公明,绰号黑宋江、孝义黑三郎、及时雨、呼保义等,现以绰号出现前后次序予以讲解。
1、孝义黑三郎:这是从宋江对待家庭关系而讲的。宋江处理家庭关系是以孝义为本,特别对他的父亲,其他不详述了。
2、及时雨:主要说他仗义疏财、接济他人、周济朋友,在《水浒传》中有25次这样的叙述,这在一定程度上表现了宋江的英雄本色。
3、呼保义:直到今天我们还不能做出圆满解释,据考证与宋代一个官名有关,大多学者认为这个绰号反映了宋江对朝廷的态度。
二、如何评价宋江的一生?
在评价《水浒传》中,对宋江这个人物看法并不一致。最早评价的要数金圣叹,他说宋江是下等人,贬斥得很厉害。宋江自己也说:貌黑身矮,出身小吏,文不能安邦,武不能服众,手无缚鸡之力,身无寸箭之功(《水浒传》六十八回)。说明宋江还有自知之明。说实话,我并不喜欢宋江,但我们评价宋江要从作品实际和理性出发,不以个人的好恶来断是非。现我从宋江的家庭出身、文化教养、职业这三方面来分析他。
1、宋江的出身、职业对他思想、性格、生活道路的影响。
小说在宋江出场时介绍说,他和宋太公(宋江之父)在村中务农,守些田园过活,在郓城县做押司,他刀笔精通,吏道纯熟;……。
宋江自幼读儒家书,受传统教育,走入社会在县衙中做押司(小吏),刀笔精通。他的出身经历和性格,使他了解和体验百姓的痛苦,有正义感,养成一种办事谨小慎微、随机应变,喜欢玩权术。因为他在官府任小吏,他懂法,有遵守法度的习惯。宋江到梁山泊以后,他处理问题比较周全,有人说他虚伪、玩权术,这是他处理问题的一种手段。如俘获霹雳火秦明,让位卢俊义等。他犯罪后衙门给他戴上枷,别人把枷打开时,他说不能,这是国家的法度。
2、宋江上梁山前是一位仗义英雄,义放晁盖,当法与义发生矛盾时,宋江就不顾法度了。他对梁山的事业有一定的贡献,他为了梁山好汉在忍无可忍的情况下杀了阎婆惜。
3、宋江上梁山后,成为义军的首领。他自己说在文武方面并无过人之处,为什么还能当梁山泊的首领呢?这是由于宋江有以下优势:仗义疏财,在江湖中有一定的号召力;关怀兄弟,兄弟遇难设法相救;有一定的组织和军事指挥才能,如三打祝家庄战役,他注意总结经验,从调查虚实入手,又拆散祝家庄与其他二家联盟等。
4、受招安以后,宋江成为了一个朝廷的忠臣。他的思想是为国家出力,保人民平安。晁盖死后,宋江将“聚义厅”改为“忠义堂”,这对起义军来说是一件重要的事情,是《水浒传》中宋江的一大关键。受招安以后把梁山上的“替天行道”大旗改为“顺天护国”,他也由起义军首领走到服从朝廷的顺臣。这时,宋江的思想是:我是热爱国家的,皇帝代表国家,朝廷不负我,我不负朝廷。他不听吴用等好汉的劝阻,去征起义军领袖方腊,打得十分惨烈。
5、悲剧的结局。宋江带领众人征方腊以后,原本的108位好汉还剩下27个,其余的不是牺牲就是出走了,而朝廷并不信任他,对他加害致死。宋江临死前,唯恐李逵再次造反,让李逵喝药酒被毒死。
宋江一生是曲折的,先是仗义英雄,梁山首领,招安后成为朝廷忠臣,最后是悲惨的结局。
在《水浒传》第32回,说到招安起初是武松先提出的,宋江表示同意。历史上关于招安的记载是有其事,但不过100字左右,而小说有相当的发挥,情节也写得很具体。
在《大宋宣和遗事》中就有招安的记载,在民间传说故事中也有宋江等人招安的内容。 这与宋江矛盾的性格有关。一方面他是仗义英雄,义军首领,一方面又想报效朝廷,忠君安民。但宋江想招安是一贯的,不像武松虽然开始由他提出的,但宋江提出要招安时,武松第一个站出来反对。而宋江执意招安以报效朝廷,死而后已。
关于《水浒传》第39回,宋江题反诗:心在山东身在吴,飘蓬江湖谩嗟吁。他时若遂凌云志,敢笑黄巢不丈夫。我认为这是他醉酒后信手而题,并不代表宋江的真实思想。
金圣叹把《水浒传》从一百二十回改为七十回,期间对原文作了大量的改动,包括对小说的增、删、改,应该说他对《水浒传》的传播有功,也有过。 宋江是《水浒传》里一个非常有争议的人物。多少年来人们对他的评价褒贬不一,但我们痛恨宋江,批判宋江的同时,我们不得不承认:宋江是《水浒传》中最为成功,最具代表性的人物之一,是一个留有很大空间任后人评说的人物。
听众对张教授的演讲极以热烈的掌声,最后主持人傅光明研究员说:听了张俊先生精到的剖析,能否使我们对宋江这个矛盾、复杂的人物形象多一分理性的思考和理解。不过,无论你是以怎样的主观情感对宋江或褒或贬,或爱或恨,说他是打着仁义旗号的机会主义者,动机不纯的义军首领,出卖梁山投靠朝廷的投降派,还是具有革命者气质的农民领袖,但有一点是不可否认,他是中国古典文学人物画廊里一个异常成功的艺术形象。
说说“华容道”的由来与相关!
“诸葛亮智算华容,关云长义释曹操”,是世人皆知的一个故事,《三国演义》中的重点篇章。小说写赤壁战前,诸葛亮算定曹操必败走华容,且夜观天象,曹操不当身亡,考虑到曹操与关羽有恩,于是派关云长把守华容道,留个人情与关羽做。小说又写曹操果然由乌林向华容道败退,并在途中三次大笑诸葛亮、周瑜智谋不足,未在险要处暗设伏兵。然而,一笑笑出赵子龙,多亏徐晃、张郃二人双敌赵云,才使曹操得以逃脱;二笑笑出张翼德,又是张辽、徐晃二将抵挡张飞,使曹操再次脱险;三笑非同小可,笑出了关云长,且又在有一夫当关之险的华容狭路上,加之曹军几经打击,此时已无力再战,无奈,曹操只得亲自哀求关羽放行,关羽念旧日恩情,义释曹操,使曹操得以回到江陵。
《三国演义》的上述描写,并非全是凭空之笔。曹操从赤壁败退,走的确实是华容道,但并没有关羽;曹操在途中确曾大笑,但不是三次,而是一次;曹操笑的也不是诸葛亮与周瑜智谋不足,而是笑刘备虽有计谋却迟缓;曹操笑后确也出现了敌情,但已无惊无险。
据《三国志》记载,曹操在赤壁中了周瑜的火攻之计,索性又一把火烧掉所剩战船,率军经华容向江陵一路败退。孙刘联军则水陆并进,尾随曹军,紧追不舍。
其实,当时曹操虽然战败,但面临的形势并不十分严峻。因为在赤壁交锋之前,是曹操强大,孙刘弱小,孙权和刘备首先考虑的是如何挫败曹操的强大攻势,使曹操不得渡过长江,以保全自己的势力范围,或保证自己不被曹操消灭掉,在胜负未卜的情况下,他们没有也无力抽出部分兵力去在曹操可能败退的路线上去设伏。所以,曹操在败退的路上,虽后有追兵,却前无伏军。可是,在通向华容的道路上,却遇到了难以想象的困难。
《三国志·武帝纪》裴松之注引《山阳公载记》说:曹操战船被烧,率军从华容道步行而归。华容道上一片泥泞,根本无法通行,加之那天又刮大风,行走更加艰难。于是曹操下令,命羸弱之兵割草垫路,大军才得以通过,而羸兵被人马践踏,深陷泥中,死亡无数。眼看大军就要全部通过华容道,曹操不由哈哈大笑。诸将本已狼狈不堪,见曹操大笑,十分不解,问曹操为何发笑。曹操说道:“刘备的才智与我不相上下,但他的计谋总要晚我一步;假使他早派快马至华容道放火,我等必全军覆没了。”曹操话音刚落,接探马报刘备追兵在后面开始顺风点火。但曹操大军已通过华容道,奔江陵而去。
《三国演义》写曹操三次大笑,笑出三个英雄,是为了表现曹操虽奸诈,但不如诸葛亮神机妙算;写关羽在华容道义释曹操,是为了表现关羽知恩图报、义重如山的人格,均系作者欲神化诸葛亮与关羽二人的演义之笔,并非史实。
曹操在夺取荆州后,马不停蹄,率领二十多万 水陆大军顺江东下。计划一举消灭刘备和孙权,实现统一全国的宏愿,可是他被胜利冲昏了头脑,骄傲轻敌,结果被孙刘联军火烧赤壁,仓惶溃逃,败走华容道。(史无此事,仅以《三国演义》论)
什么叫华容道呢?据《资治通鉴》注释中的说法,就是“从此道可至华容也”。这里所说的华容,当然是指华容县城。华容道也就是赤壁战争中曹军逃入华容县界后向华容县城逃跑的路线 。古华容县城在现监利县城以北约60里的周老咀附近。如果从曹操屯兵的地方乌林到曹操逃跑的目的地南郡划一条直线,华容城正好在这条直线的中心。曹要逃回江陵,走华容县城是最捷径的路线。而且当时华容县城附近有曹军的粮草仓库,便于撤退中的将士补充草。
由于这一带有古代的沼泽湖泊阻隔。从乌林到华容城没有直路可走。曹军只能沿江向西溃逃,进入华容县境之后,再向西北折奔华容县城。这样就必须涉过大泽边上的一片沼泽地带。根据县志记载,曹操逃到太平桥时,人马陷入泥泞之中,不得不扔掉马鞭,下马步行,这里尚有“曹鞭港”古地名。曲鞭港到毛家口二十里路,“地窄路险,坎坷难行”,曹军“遇泥泞,道不通。”乃令兵士砍芦苇、蒿草填路,“赢兵为人踏藉,陷泥中,死者甚众”。
南宋大诗人陆游在乾道六年(1170年)曾经坐船经过这一带。他写道:“自是复无人居,两岸葭苇弥望,谓之百里荒”。舟人云:“自此陂泽深阻,虎狼出没。未明而行,则挽夫多为所害”。距曹操兵败960年之后,华容道一带尚且如此荒凉,曹军当时的艰辛狼狈之状,就可想而知了。
华容道真正得到开发是从元代开始的。今日的华容道,已根本看不见昔日的荒凉,而是绿树成荫,道路两侧良田万顷。稻谷飘香,荷花吐艳。傍晚,袅袅炊烟腾空而起,呈现出一派平原水乡风光.
秋七月,公南征刘表。八月,表卒,其子琮代,屯襄阳,刘备屯樊。九月,公到新野,琮遂降,备走夏口。公进军江陵,下令荆州吏民,与之更始。乃论荆州服从之功,侯者十五人,以刘表大将文聘为江夏太守,使统本兵,引用荆州名士韩嵩、邓艾等。益州牧刘璋始受征役,遣兵给军。十二月,孙权为备攻合肥。公自江陵征备,至巴丘,遣张□救合肥。权闻□至,乃走。公至赤壁,与备战,不利。于是大疫,吏士多死者,乃引军还。备遂有荆州、江南诸郡。〈三国志 卷一 魏书一 武帝纪第一 〉
从先主就刘表。表卒,曹公定荆州,先主自樊将南渡江,别遣羽乘船数百艘会江陵。曹公追至当阳长阪,先主斜趣汉津,适与羽船相值,共至夏口。孙权遣兵佐先主拒曹公,曹公引军退归。先主收江南诸郡,乃封拜元勋,以羽为襄阳太守、荡寇将军,驻江北。先主西定益州,拜羽董督荆州事。羽闻马超来降,旧非故人,羽书与诸葛亮,问“超人才可比谁类”?亮知羽护前,乃答之曰:“孟起兼资文武,雄烈过人,一世之杰,黥、彭之徒,当与益德并驱争先,犹未及髯之绝伦逸群也。”羽美须髯,故亮谓之髯。羽省书大悦,以示宾客。〈三国志 关张马黄赵传〉
***********************************************************
一. 游戏简介
华容道,古老的中国游戏,以其变化多端、百玩不厌的特点与魔方、独立钻石棋一起被国外智力专家并称为“智力游戏界的三个不可思议”。它与七巧板、九连环等中国传统益智玩具还有个代名词叫作“中国的难题”。华容道游戏取自著名的三国故事,曹操在赤壁大战中被刘备和孙权的“苦肉计”、“火烧连营”打败,被迫退逃到华容道,又遇上诸葛亮的伏兵,关羽为了报答曹操对他的恩情,明逼实让,终于帮助曹操逃出了华容道。游戏就是依照“曹瞒兵败走华容,正与关公狭路逢。只为当初恩义重,放开金锁走蛟龙”这一故事情节,通过移动各个棋子,帮助曹操从初始位置移到棋盘最下方中部,从出口逃走。不允许跨越棋子,还要设法用最少的步数把曹操移到出口。曹操逃出华容道的最大障碍是关羽,关羽立马华容道,一夫当关,万夫莫开。关羽与曹操当然是解开这一游戏的关键。四个刘备军兵是最灵活的,也最容易对付,如何发挥他们的作用也要充分考虑周全。“华容道”有一个带二十个小方格的棋盘,代表华容道。棋盘下方有一个两方格边长的出口,是供曹操逃走的。棋盘上共摆有十个大小不一样的棋子,它们分别代表曹操、张飞、赵云、马超、黄忠和关羽,还有四个卒。“华容道”有几十种布阵方法,如“横刀立马”、“近在咫尺”、“过五关”、“水泄不通”、“小燕出巢”等等玩法。棋盘上仅有两个小方格空着,玩法就是通过这两个空格移动棋子,用最少的步数把曹操移出华容道。这个玩具引起过许多人的兴趣,大家都力图把移动的步数减到最少。
历经中外科学家姜长英、藤村幸三郎、清水达雄、马丁加达纳等几十年的努力,游戏解法已由六十多年前的87步减少至81步。
相关歇后语
曹操败走华容道--走对了路子
曹操败走华容道--不出所料
曹操败走华容道——兵荒马乱
二. 华容道游戏的历史
游戏华容道的故事来源是三国演义中关云长义释曹操。但是这个游戏的起源,却不是一般人认为的是“中国最古老的游戏之一”。实际上它的历史可能很短。
姜长英在他所著《科学思维锻炼与消遣》中说,“估计它的历史只不过有几十年。从前人的笔记中没有发现有玩具华容道的记载。”姜先生自己是在1943年夏第一次看到这个玩具。目前所见到关于华容道最早的文字记载就是姜先生1949年出版的《科学消遣》。
据西北工业大学林德宽教授说,他在1938年在陕西省城固县的乡下见过小孩玩用纸片做的华容道。
20世纪50年代,苏州师大的许莼舫先生的《趣味数学》详细分析了华容道游戏,给出了100步的解法。
文革期间,华容道游戏已经相当流行。
2002年崔乐泉所著《忘忧清乐——古代游艺文化》中对中国古代种种游戏玩具作了介绍,其中有七巧板可九连环,却没有华容道。
由此可见,在没有新的历史资料发现之前,华容道的历史不超过几十年的说法是可信的。
华容道游戏属于滑块类游戏,就是在一定范围内,按照一定条件移动一些称作“块”的东西,最后满足一定的要求。滑块类游戏究其起源,最早的可以说是中国古代的“重排九宫”。那应该是产生于出现河图洛书的时代,有数千年历史。1865年,西方出现“重排十五”游戏,特别是萨姆.洛伊德在1878年推出“14-15”游戏,风行一时。此后,各种各样的滑块类游戏不断涌现。哈代()发明三角旗游戏并在1909年取得专利。再往后,法国出现红鬃烈马游戏。可以设想,这个游戏传到中国,本土化成为华容道游戏。
最早系统研究游戏华容道的是苏州大学数学教授许莼舫先生。1952年,他在《数学漫谈》中对这个游戏作了详细的分析,总结出8条规则。这8条可以归纳为以下4点:
1,四个小兵必须两两在一起,不要分开;
2,曹操,关羽,大将移动时前面应有两个小兵开路;
3,曹操移动时后面还应有两个小兵追赶;
4,以下三种状况,其中各块都可局部(不妨碍其他地方)任意移动。
在此基础上,许莼舫提出了100步解法。下就是许先生的解法,可能由于初始状况的不同,这里只需要98步。
后来,美国一个律师托马斯.莱曼(Thomas )发现一个新的解法,由加德纳公布在1964年3月《科学美国人》上,有81步,称加德纳解法。
游戏华容道有不同的开局,根据5个矩形块的放法分类,除了5个都竖放是不可能的以外,有一横式,二横式,三横式,四横式,五横式。下面举几个例子。
研究华容道游戏,除了其历史外,至少有以下几个问题:
1,有多少种开局;
2,判断有解;
3,给出最优解;
4,计算机求解。
因此,华容道是个数学游戏,可以锻炼人的思维,让人的思维更活跃。
国内国外都有一些华容道的爱好者研究者。姜长英先生1985年发起组织“华容道研究会”,他们有了不少结果。特别是原北京工业学院副院长齐尧的网络研究,可以说完全解决了华容道游戏方法。他研究了一横式华容道的各种关键状态共54图,找出其间关系,画出关系图。于是任何一横式华容道都可以经少数几步到达某一个关键状态,其解法也就给出了。对二横式,三横式,四横式,他也都画出了关系图。
用计算机解决华容道游戏, 上有这样的说法:“笔者编制的软件HRDE的贡献是成功地实现了一种系统搜索(Systematic searching)算法,它能在较短时间内,对用户摆放的任何一种布局判断是否有解。如果有解,则解出它的最少步法。然后,它会在屏幕上用动画方式移动棋子以显示它的运算方法。也可以用一连串的图形来静止地显示每一步的走法,便于用户仔细地观察研究。一般情况下,在已经很普及的IBM486计算机上解一道题仅需要一两分钟,在较慢的286计算机上则大约需要十几分钟。根据它的算法的原理可以肯定,它推导出的结果是绝对可信的。也就是说,它所解出的走法一定是该布局的最少步法。 ”
华容道游戏又有很多发展,在国内外产生了很多类似的游戏。如推箱子游戏。
推箱子游戏出现在计算机中最早起源于1994年台湾省李果兆开发的仓库世家,又名仓库番,箱子只可以推, 不可以拉, 而且一次只能推动一个, 胜利条件就是把所有的箱子都推到目的地 。现在网上有很多种推箱子游戏。
来自百度词条
华容道的解法的思路是什么?
华容道最常见的有七种排列方式。主要是要让关羽给曹操让条道路,也就是让关羽带着那四个小卒跑到曹操的上面或者下面去,这样曹操就可以通行了。更多的是需要你自己研究。
记得采纳啊
上一篇:论文答辩复查
下一篇:毕业论文用例描述