이 저장소는 KTH의 ICPC 팀 참조 문서인 KACTL을 호스팅합니다. ICPC 스타일 프로그래밍 대회에 사용할 수 있도록 복사하여 붙여 넣을 수 있는 25페이지의 C++ 코드로 구성되어 있습니다.
검색 가능한 최종 버전은 kactl.pdf를, 원시 소스 코드는 content/를 참조하세요.
KACTL 알고리즘은 유용하고, 짧고, 충분히 빠르며, 잘 테스트되고, 관련이 있는 경우 읽기 쉽고 수정하기 쉬워야 합니다. 코드가 수동으로 입력되고 오버헤드만 추가되므로 지나치게 일반적이어서는 안 됩니다. 공간 문제로 인해 매우 일반적이거나 단순한 알고리즘(예: Dijkstra) 또는 매우 흔하지 않은 알고리즘(일반 가중치 매칭)도 제외합니다.
뭔가 빠졌거나, 정리할 수 있거나, 버그를 발견했다면, 문제를 제기하거나 끌어오기 요청을 보내주세요!
KACTL은 그대로 사용할 수 있지만 개인화된 복사본을 만들고 싶다면 쉽게 수정할 수도 있습니다. 특히 표지를 변경하거나 포함할 알고리즘을 직접 선택할 수 있습니다. 공간 문제로 인해 저장소의 모든 알고리즘이 PDF에 포함되지는 않습니다. 색상이 지정된 구문 강조를 활성화할 수도 있습니다.
content/kactl.tex 는 KACTL의 메인 파일로, 편집하여 팀 이름, 로고, 구문 강조 등을 변경할 수 있습니다. 각 장의 내용을 정의하는 각 content/ 하위 디렉터리에서 chapter.tex 파일을 가져옵니다. 여기에는 LaTeX 형식의 소스 코드, 텍스트 및 수학이 포함됩니다. 장에서 코드를 추가/제거하려면 chapter.tex 파일에서 해당 kactlimport 줄을 추가/제거하십시오. 더 나은 정렬을 위해 hardcolumnbreak , columnbreak 또는 newpage 명령을 삽입할 수 있습니다. 그러나 이는 일반적으로 중요한 콘테스트 전에만 수행되고 메인 브랜치에서는 수행되지 않습니다. PDF에 포함되지 않은 알고리즘은 chapter.tex 에 주석 처리되어 있습니다.
KACTL을 빌드하려면 *nix 시스템에서 make kactl (또는 make fast )을 입력하세요. 이렇게 하면 kactl.pdf 업데이트됩니다. (Windows도 작동할 수 있지만 테스트되지 않았습니다.) doc/README 에는 이에 대한 몇 가지 추가 참고 사항이 있습니다.
팁:
make showexcluded 실행하여 기본적으로 제외되는 항목을 확인하세요. 기본 구성은 초보자와 고급 팀을 위한 합리적인 균형을 이루도록 선택됩니다.hash.sh 또는 .vimrc 의 :Hash 명령을 사용하여 생성할 수 있습니다. 해싱은 공백과 주석을 무시합니다. KACTL은 코드를 단축하는 데 도움이 되는 템플릿에 정의된 소수의 매크로/형식 정의와 함께 상대적으로 간결한 코딩 스타일을 사용합니다. 줄 너비는 63자이며 들여쓰기를 위한 탭이 있습니다(PDF에서는 탭 = 공백 2개).
각 알고리즘에는 코드 작성자, 추가된 날짜, 알고리즘 설명, 테스트 상태, 소스, 라이센스 및 시간 복잡성이 포함된 헤더가 포함되어 있습니다.
kactl.pdf는 25페이지 + 표지로 유지됩니다. 때때로 생성된 kactl.pdf가 편의상 저장소에 커밋되지만 너무 자주 커밋되는 것은 아닙니다. 이로 인해 git 작업이 느려지기 때문입니다.
KACTL은 알고리즘 정확성에 대한 높은 수준의 신뢰를 목표로 합니다. 테스트는 온라인 심사위원과 (최신 알고리즘의 경우) 무작위로 생성된 대량의 사례에 대해 출력을 보다 순진한 알고리즘과 비교하는 스트레스 테스트를 통해 수행됩니다. 이러한 테스트는 stress-tests 디렉터리에 있으며 모든 커밋에서 CI와 함께 실행됩니다. CI는 또한 모든 헤더가 컴파일되는지( docs/scripts/skip_headers 의 제외 목록 제외)와 라텍스가 컴파일되는지 확인합니다.
old-unit-tests 에는 약 10년 전에 마지막으로 다루어진 몇 가지 손상된 단위 테스트가 포함되어 있습니다.
경쟁 프로그래밍의 경우 늘 그렇듯이 라이센스 상황은 약간 불분명합니다. 많은 소스 파일에는 라이센스가 표시되어 있지만(우리는 CC0을 사용하려고 합니다) 그렇지 않은 경우도 많습니다. 하지만 아마도 다른 작성자로부터 선의를 추측할 수 있으며, 코드가 배포되지 않기 때문에 많은 경우 허가가 필요하지 않습니다. 다시 추적하는 데 도움이 되도록 소스와 작성자가 소스 파일에 표시됩니다.
인터넷에서 가져온 참조 구현을 제외하고 stress-tests 의 모든 내용은 암시적으로 CC0입니다.