HLP Hackathon r1 รอบสาม

หลังจากคนเข้ารอบไม่ครบ @hlphackathon ก็จัดรอบเพิ่มครับ รอบนี้บอกว่าโจทย์ง่ายโคตรๆ เลยว่าจะลองสักหน่อย

เห็นโจทย์ปุ๊บตาม step ต้องสิ้นหวังก่อนว่าโจทย์มันยาก แต่ดูๆ ไปแล้วเออ มันยากตรงประมวลผลเวลาซึ่ง Python ทำได้สบายๆ ก็เลยโค้ดๆ ให้มันประมวลผลไปตามลำดับนี้ครับ คือเขียน array แสดงรายการอัตราค่าโทรก่อน แล้วทำ index เบอร์พิเศษที่ใช้เรทพิเศษ ถัดมาให้ประมวลผล call log จับคู่โทร-วาง โดยอยู่ดีๆ ผมได้ความคิดอะไรไม่รู้ ให้อ้างอิงโดยใช้ sha1 ซึ่งก็เกือบจะได้จนรอบ Pro ที่เจอว่ามันโทรหากันหลายๆ รอบได้ เลยต้องมีอีกชุดที่ทำตัวเลขต่อท้าย plaintext ของ sha1

โจทย์อันนี้ผมใช้ดวงเข้าช่วยด้วยครับ คือกด input แล้วบางทีค่ามันจะคลาดไป 0.75 บ้าง 100 บ้าง ซึ่งแก้ง่ายๆ โดยการขอโจทย์ใหม่ซึ่งผมทำทั้งในรอบ Pro และ Godlike ที่กดซ้ำก็ผ่านเรียบร้อยครับ เอาละ มาดูโค้ดกันเลยดีกว่า ผมค่อนข้างจะเขียนกำกับและเหตุผลไว้แล้วนะครับว่าอะไรทำอะไร แต่การเรียก array อาจจะยุ่งเหยิงไปหน่อย

HLP Hackathon 2011 r1

ก็จบไปแล้วนะครับกับรอบแรกของ [HLP Hackathon 2011](http://www.hlphackathon.com) สำหรับโจทย์รอบวันเสาร์ถือว่าอ่านแล้วเข้าใจยากมาก คือมันอธิบายคลุมเครือ ผมนั่งอ่านอยู่หลายรอบกว่าจะเข้าใจ คำสำคัญมันคือสูตรนั่นแหละครับที่ว่า `width*width*4*2` ถ้าใครถอดกลับเป็น width ได้ (มันคือคณิตศาสตร์ม. ต้น `fileSize = width*width*4*2`) ก็แทบจะเรียกได้ว่าทำได้ ส่วนที่เหลือ Python-Imaging (PIL) ทำงานแทนให้เราเกือบหมด

ทีนี้ตอนส่งรอบ Noob เรานั่งอ่านตัว file ที่สองไปทีละไบต์แล้วก็รัน ord มา ซึ่งแน่นอนจะเจอ bytecode แปลกๆ แต่เราพบว่ารันเฉพาะ bytecode ที่มันมีค่าให้หมุนภาพก็ส่งผ่านแล้ว (และทำให้เข้ารอบเลย) ต่อมาก็พยายามจะทำรอบ Pro เลยดัดแปลงต่อ (ผมถึงไม่มีของ noob มาโชว์) โดยอ่าน bytecode จริงๆ จังๆ มี hash แต่เหมือนการจับ hash ผมผิดมันเลยไม่ผ่านระดับ Pro โค้ดที่เหลือก็ได้เท่านี้ครับ

(โค้ดนี้เอาไปรับกับด่าน Noob แล้วจะ error สงสัยผม port มาผิดเพราะตัว if เดิมมันรันในฐานสิบ แต่ตอนนี้มันรันใน string ฐานสอง)

ทีนี้ของข้อวันพฤหัส พ่อไม่ให้นอนดึก ผมเลยรีบเล่นในเวลา 30 นาทีก็เรียกได้ว่าเขียนเสร็จแล้ว แต่มันบั๊ก (โจทย์พวกนี้ถ้าบั๊กผมแก้ไม่ถูกหรอกครับ เหมือนข้อ Pro ตะกี้)

เหมือนจะมีอะไรมากกว่านี้ แต่ลืมๆ ไปละ พอแค่นี้ก่อนแล้วกัน เจอกันเสาร์หน้าถ้าว่าง (มันช่วงสอบ)