Repo นี้โฮสต์ KACTL ซึ่งเป็นเอกสารอ้างอิงของทีม ICPC ของ KTH ประกอบด้วยโค้ด C++ ที่สามารถคัดลอกและวางได้ 25 หน้า สำหรับใช้ในการแข่งขันการเขียนโปรแกรมสไตล์ ICPC
ดู kactl.pdf สำหรับเวอร์ชันสุดท้ายที่เรียกดูได้ และเนื้อหา/ สำหรับซอร์สโค้ดดิบ
อัลกอริธึม KACTL ควรมีประโยชน์ สั้น เร็วเพียงพอ ผ่านการทดสอบอย่างดี และหากเกี่ยวข้อง อ่านได้ และแก้ไขได้ง่าย ไม่ ควรเป็นแบบทั่วไปจนเกินไป เนื่องจากมีการพิมพ์โค้ดด้วยตนเองและนั่นเป็นเพียงการเพิ่มโอเวอร์เฮด เนื่องจากปัญหาด้านพื้นที่ เราจึงไม่รวมอัลกอริธึมที่ธรรมดามาก/ธรรมดา (เช่น Dijkstra) หรือไม่ธรรมดามาก (การจับคู่ถ่วงน้ำหนักทั่วไป)
หากคุณรู้สึกว่ามีบางอย่างขาดหายไป สามารถทำความสะอาดได้ หรือสังเกตเห็นข้อบกพร่อง โปรดแจ้งปัญหาหรือส่งคำขอดึง!
แม้ว่า KACTL จะใช้งานได้เหมือนเดิม แต่ก็ง่ายต่อการแก้ไขหากคุณต้องการสร้างสำเนาส่วนตัว โดยเฉพาะอย่างยิ่ง คุณอาจต้องการเปลี่ยนหน้าปก หรือเลือกอัลกอริธึมของคุณเองเพื่อรวม -- เนื่องจากปัญหาด้านพื้นที่ อัลกอริธึมบางอันใน repo ไม่ได้รวมอยู่ในไฟล์ pdf คุณอาจต้องการเปิดใช้งานการเน้นไวยากรณ์สีด้วย
content/kactl.tex
เป็นไฟล์หลักของ KACTL และสามารถแก้ไขได้เพื่อเปลี่ยนชื่อทีม โลโก้ การเน้นไวยากรณ์ ฯลฯ โดยนำเข้าไฟล์ chapter.tex
จากแต่ละ content/
ไดเร็กทอรีย่อย ซึ่งกำหนดเนื้อหาของแต่ละบท ซึ่งรวมถึงซอร์สโค้ด ข้อความ และคณิตศาสตร์ในรูปแบบของ LaTeX หากต้องการเพิ่ม/ลบโค้ดออกจากบท ให้เพิ่ม/ลบบรรทัด kactlimport
ที่เกี่ยวข้องจากไฟล์ chapter.tex
เพื่อการจัดตำแหน่งที่ดียิ่งขึ้น คุณอาจต้องการแทรกคำสั่ง hardcolumnbreak
, columnbreak
หรือ newpage
แม้ว่าโดยปกติจะทำก่อนการแข่งขันที่สำคัญเท่านั้น และจะไม่อยู่ในสาขาหลัก อัลกอริธึมที่ไม่รวมอยู่ใน pdf จะถูกใส่ความคิดเห็นไว้ใน chapter.tex
หากต้องการสร้าง KACTL ให้พิมพ์ make kactl
(หรือ make fast
) บนเครื่อง *nix ซึ่งจะอัปเดต kactl.pdf
(Windows อาจใช้งานได้เช่นกัน แต่ไม่ได้ทดสอบ) doc/README
มีหมายเหตุเพิ่มเติมเล็กน้อยเกี่ยวกับเรื่องนี้
เคล็ดลับ:
make showexcluded
การกำหนดค่าเริ่มต้นถูกเลือกให้มีความสมดุลที่เหมาะสมสำหรับผู้เริ่มต้นและทีมขั้นสูงhash.sh
หรือคำสั่ง :Hash
จาก .vimrc
การแฮชจะละเว้นช่องว่างและความคิดเห็น KACTL ใช้รูปแบบการเขียนโค้ดที่ค่อนข้างสั้น โดยมีมาโคร/typedef จำนวนหนึ่งที่กำหนดไว้ในเทมเพลตที่ช่วยย่อโค้ดให้สั้นลง ความกว้างของบรรทัดคือ 63 ตัวอักษร โดยมีแท็บสำหรับการเยื้อง (tab = 2 ช่องว่างใน pdf)
แต่ละอัลกอริธึมประกอบด้วยส่วนหัวที่มีผู้เขียนโค้ด วันที่เพิ่ม คำอธิบายอัลกอริธึม สถานะการทดสอบ และควรรวมถึงแหล่งที่มา ใบอนุญาต และเวลาที่ซับซ้อน
kactl.pdf จะถูกเก็บไว้ไม่เกิน 25 หน้า + หน้าปก ในบางครั้ง kactl.pdf ที่สร้างขึ้นจะถูกส่งไปยัง repo เพื่อความสะดวก แต่ไม่บ่อยเกินไปเพราะจะทำให้การทำงานของ git ช้าลง
KACTL มุ่งหวังให้มีความมั่นใจในระดับสูงในเรื่องความถูกต้องของอัลกอริทึม การทดสอบทำได้ทั้งบนผู้ตัดสินออนไลน์และ (สำหรับอัลกอริธึมรุ่นใหม่) ด้วยการทดสอบความเครียดที่เปรียบเทียบเอาต์พุตกับอัลกอริธึมที่ไร้เดียงสามากกว่าสำหรับกรณีที่สร้างขึ้นแบบสุ่มจำนวนมาก การทดสอบเหล่านี้อยู่ในไดเร็กทอรี stress-tests
และดำเนินการกับ CI ในทุกคอมมิต CI ยังตรวจสอบว่าส่วนหัวทั้งหมดคอมไพล์ (ยกเว้นรายการยกเว้นใน docs/scripts/skip_headers
) และลาเท็กซ์คอมไพล์แล้ว
old-unit-tests
ประกอบด้วยการทดสอบหน่วยที่เสียหายสองสามรายการ ซึ่งสัมผัสล่าสุดเมื่อประมาณสิบปีก่อน
ตามปกติสำหรับการเขียนโปรแกรมเชิงแข่งขัน สถานการณ์ด้านลิขสิทธิ์จะไม่ชัดเจนเล็กน้อย ไฟล์ต้นฉบับจำนวนมากมีเครื่องหมายลิขสิทธิ์ (เราลองใช้ CC0) แต่หลายไฟล์ก็ไม่มีเช่นกัน ความปรารถนาดีน่าจะมาจากผู้เขียนคนอื่นๆ และในหลายกรณี ไม่จำเป็นต้องได้รับอนุญาตเนื่องจากไม่มีการแจกจ่ายโค้ด เพื่อช่วยติดตามสิ่งต่างๆ ย้อนกลับไป แหล่งที่มาและผู้แต่งจะถูกบันทึกไว้ในไฟล์ต้นฉบับ
ทุกอย่างใน stress-tests
ถือเป็น CC0 โดยปริยาย ยกเว้นการใช้งานอ้างอิงที่นำมาจากอินเทอร์เน็ต