1. 주제 : 빠른 소팅 알고리즘 구현.
2. 자료형 : 영어 단어정렬
- ideone 에서 테스트. 그냥 random 으로 생성된 스펠링들로 하는게 어때? 알파벳 소문자만 사용.
- 단어만? 아니면 의미 부분에 해당하는 데이타 포함?
- 최장 길이 영어 단어가 Pneumonoultramicroscopicsilicovolcanoconiosis, 45자니까
한 글자 이상 64글자(null 문자 포함) 이하의 규칙성없는 알파벳을 정렬하는 것으로 하자.
- 5만 단어 정도면 괜찮을 것 같아. (100만이상도 상관없지만 영어단어가 그렇게 많진 않으니까. ideone 에서 메모리를 얼마나 지원해줄까?)
3. 절차 : 토요일 오후 5시 쌍방 속도 공개(msec 측정), 일요일 오후 5시 쌍방 소스코드 공개
4. 상세 : 파일/콘솔 입출력 함수 외에 어떤 함수도 사용 금지. (스트링 클래스도 필요시 직접 구현)
5. 판정 : 처리 경과시간 짧은쪽이 승리. 소스코드의 길이나 메모리 사용량, 실행파일의 크기, 컴파일 시간과 무관.
약속한 시간(오후 5시. 개인사정으로 변경 필요시 금요일 중으로 이글 댓글로 알려야함) 에서 1분 초과시 몰수 게임.
인터넷에서 흔히 검색되는 코드 사용시 애들의 야유를 좀 받을 것임.
입력과 출력시간은 측정하지 않음. 처리 함수를 분리해서 작성하기 바람.
void add_to_dictionary(char* a_word); // 단어 하나 입력 (5만번 돌것임) : stdin 사용 -> freopen 사용가능.
// 단어를 입력받았을 때 미리 소트(또는 입력 순서로 부터 순서가 바뀜) 하면 안됨.
// 입력 단어의 정렬 순서, 밀도 파악에 힌트가 되는 어떤 작업을 수행해서도 안됨.
void sort(); // 이 함수의 실행시간만 측정
void dump_dictionary(); // 5만 단어를 하나씩 개행해서 출력 : stdout 사용 -> 덤프 떠서 정확성 검증할것임
// 단어 출력시 이진탐색을 한다든지 하면 안됨. 그것도 정렬로 간주.
// 즉 sort() 실행후의 단어들은 선형 메모리 공간에서 오름차순이어야 함.
10번 정도 수행시 경과시간 누적 평균으로 판정하면 될듯, 50msec 이내 차이면 비긴것. (시스템 노이즈가 그것보다 클듯)
6. 상벌 : 내가 이기면, 니가 ㅅㅅㅅ 나 나에 대해 시비성 글을 적지 않는다고 약속.
니가 이기면, 피자 10판. 뭐 코세 이겼다는게 자랑이 되려나?
이상.
괜찮다면 일반 랜덤함수 써서 스트링 만들어 주는 코드는 공유할게. seed 값은 갤의 애들한테 고르라고 하고.
(애들이 부른 숫자 다 곱하면 되겠지)
재밌겠다
이거시 프갤의 일기토인가
라딕스소트 흉계가 느껴진다
대문자 소문자 숫자 100만 단어 정도는 해줘야!
그정돈 아무나 하잖아? 그걸 넘는게 문제지.
2만개 넘어가면 갯수는 큰 의미없어 증가 추세 곡선이 결정되니까.
대문자 소문자 숫자 포함해봐야 얼마 안돼. 그리고 영어단어를 정렬을 고른건 내가 아냐.
가장 중요한건 100만개 처리해서 같은 중립 장비에서 테스트 하기가 힘들다는거. ideone 에서 램 몇 메가 안 줄걸?
http://dblack.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다.