Syntax Highlighter 테스트

Miscellaneous 2009. 9. 10. 10:36 posted by jz-

됩니까됩니까?

헤헤헤

http://neodreamer.tistory.com/248

여기서 알려준대로 따라해봤는데 전 잘 안되더군요.

직접 업로드 했는데 상대경로 images가 잘못된 것 같은 느낌?-_-; head태그에서 css 파일들을 못찾더라구요.

그렇다고 Syntax Highlighter 개발사이트가 호스팅해주는 스타일시트의 링크를 거는 두번째 방법을 시도하니, 페이지 로드가 사알짝 길고

그래서 제 블로그의 /images/의 절대경로를 찾아서 그걸로 바꿔버렸습니다. 잘되는거 같네용

그냥 주위분들한테 물어볼걸 그랬나 싶기도 합니다-_-; chpie가 메신저에 없길래...



그리고 클립보드에 복사하는 옵션을 활성화시키려면 아래를 header에 SyntaxHighlighter.all(); 위에 추가하면 됩니다.
		SyntaxHighlighter.config.clipboardSwf = '업로드한경로/clipboard.swf';

요건 뭔지 모르겠습니다. 그냥 소스보고 따라서 씀.ㅋㅋ
		SyntaxHighlighter.config.ruler = true;




아래는 SynHigh 설치 기념으로 올려보는 Google CodeJam 2009 Qualification Round A번 문제 푼 소스입니다.
(http://code.google.com/codejam/contest/)

문제 자체가 정규표현식이라던데 무식한 me는 못알아보고 걍 코딩 ㅜㅜ







// AlienLanguage.cpp 

#include 
#include 
#include 

#define EX( msg )		do { printf( "%s\n", msg ); result = EXIT_FAILURE; goto _end; }while(0)
#define LINELEN			0x1000


bool IsWordInPossibleCase( char *dicword, char *misinterpreted, int L );


int main( int argc, char **argv )
{
	FILE *fp = NULL;
	FILE *output = NULL;

	int result = 0;
	char *line = NULL;			// buffer to read each line

	char **dic = NULL;

	int L;						// length of words
	int D;						// words count
	int N;						// question cases

	int i, j;

	int count;

	if( argc != 2 )
		EX( "need argument : inputfile" );

	fp = fopen( argv[1], "rt" );
	if( fp == NULL )
		EX( "file not found" );

	output = fopen( "output.txt", "wt" );
	if( output == NULL )
		EX( "file write error" );

	line = (char*)malloc( LINELEN );				// "(ab)b(bc)" length not specified
	if( line == NULL )
		EX( "malloc" );

	// read L, D, N
	// is input trustable?
	if( fscanf( fp, "%d %d %d\n", &L, &D, &N ) != 3 )
		EX( "error in input file" );

	// alloc dic
	dic = (char**)malloc( D * sizeof(char*) );
	if( dic == NULL )
		EX( "malloc" );

	memset( dic, 0, D * sizeof(char*) );

	// alloc dic -> second ptr
	dic[0] = (char*)malloc( ( L + 1 ) * ( D + 1 ) );
	if( dic[0] == NULL )
		EX( "malloc" );

	memset( dic[0], 0, ( L + 1 ) * ( D + 1 ) );

	for( i = 1; i < D; i ++ )
	{
		dic[i] = dic[0] + ( ( L + 1 ) * i );
	}


	// read dictionary
	for( i = 0; i < D; i ++ )
	{
		if( fscanf( fp, "%s\n", line ) == NULL )
			EX( "error in input file" );

		strncpy( dic[i], line, L );

	}



	// now count each cases.
	for( i = 0; i < N; i ++ )
	{
		if( fscanf( fp, "%s\n", line ) == (int)-1 )
			EX( "error in input file" );


		count = 0;
		for( j = 0; j < D; j ++ )
		{
			if( IsWordInPossibleCase( dic[j], line, L ) == true )
				count ++;
		}

		// output
		printf( "Case #%d: %d\n", i + 1, count );
		fprintf( output, "Case #%d: %d\n", i + 1, count );

	}


_end:

	if( dic != NULL )
	{
		if( dic[0] != NULL )
			free( dic[0] );

		free( dic );
	}

	if( fp != NULL )
		fclose( fp );

	if( output != NULL )
		fclose( output );

	if( line != NULL )
		free( line );

	return result;

}







bool IsWordInPossibleCase( char *dicword, char *misinterpreted, int L )
{
	bool result = true;
	int indexdicword;
	int indexmisint;
	bool found;
	int lengthmisint;


	lengthmisint = strlen( misinterpreted ); 


	for( indexdicword = 0, indexmisint = 0; indexdicword < L && indexmisint <= lengthmisint; indexdicword ++, indexmisint ++ )
	{
		// misinterpreted[indexdicword] has parenthesis
		if( misinterpreted[indexmisint] == '(' )
		{
			// check if "(abc)" has "a"
			found = false;
			for( indexmisint ++; misinterpreted[indexmisint] != ')'; indexmisint ++ )
			{
				if( misinterpreted[indexmisint] == dicword[indexdicword] )
				{
					found = true;
					break;
				}
			}
			// not found
			if( found == false )
			{
				result = false;
				goto _end;
			}

			// let indexmisint point after ')'
			while( misinterpreted[indexmisint] != ')' &&
				   indexmisint < lengthmisint )
				   indexmisint ++;

		}

		// misinterpreted[indexdicword] doesn't have parenthesis
		else
		{
			if( dicword[indexdicword] != misinterpreted[indexmisint] )
			{
				result = false;
				goto _end;
			}
		}
	}


_end:

	return result;

}