Google Code Jam 2013 – Qualification Round 1C

ตกรอบทั้งแผ่นดิน :\ rank 2691

รอบนี้เหมือนจะง่ายเลยครับ ก็

Consonants

ข้อนี้ให้ string มา แล้วจะมีพยัญชนะติดกันหลายๆ ตัว ถามว่ามี substring ที่มีพยัญชนะติดกันมากกว่า n ตัวกี่ substring

(substring คือส่วนใดส่วนหนึ่งของ string ตั้งแต่ 1 ตัวข้ึนไป และ substring เขียนเหมือนกันแต่เป็นคนละตัวได้ถ้าตัดมาจากคนละท่อนกัน คือจุดเริ่มต้นหรือจุดสิ้นสุดเป็นคนละจุด)

ผมใช้วิธีโง่ๆ อีกแล้วคือหาก่อนว่ามี substring ที่ตรงตามเงื่อนไขที่ตำแหน่งไหนบ้าง พอได้ครบแล้วก็หา substring ทั้งหมดแล้วหาว่ามีส่วนใดส่วนหนึ่งของ substring ที่พบในตอนแรกมั้ย ถ้ามีก็ดูว่าครบตาม n ตัวก็ให้ผ่านได้

ข้อนี้ large ไม่ทันครับ ไฟล์มัน 4MB มีข้อดัก 5 ข้อที่ string น่าจะหลายล้านตัว (เปิดไฟล์มา sublime ผมค้าง หน้าจอมีแต่ rrrrrrrrrrrrrr)

Pogo

ผมคิดว่ามันง่ายนะ แต่ผมไม่รู้เรื่องนี้

ให้หาเส้นทางจาก (0,0) ไปจุดที่กำหนด (อาจจะตำแหน่งติดลบได้) เดินทะแยงไม่ได้ โดยเดินครั้งแรกจะไปในทิศทางนั้น 1 จุด ครั้งที่ 2 ไป 2 จุด ฯลฯ ห้ามเกิน 500 ก้าว และข้อใหญ่ต้องตอบวิธีที่สั้นที่สุดเท่านั้น

The Great Wall

ข้อนี้นี่อ่านแล้วยาวแต่สนุกดีครับ

กำแพงเมืองจีนยาวในแนวแกน x จาก -อนันต์ – +อนันต์ ถูกเผ่าต่างๆ โจมตีเข้ามาในแต่ละวัน โดยมีการกำหนดค่าเผ่าดังนี้

  • วันแรกที่เข้าโจมตี
  • จำนวนครั้งที่เข้าตี
  • ตำแหน่งที่เข้าตี (range)
  • ความแรงของการโจมตี
  • วันต่อๆ ไปที่เข้าตี (จะเข้าโจมตีทุกๆ n วัน ตามค่านี้ จนกว่าจะครบจำนวนครั้ง)
  • ระยะทางที่เผ่าเคลื่อนที่ไปในการโจมตีครั้งต่อๆ ไป
  • ความแรงในการโจมตีครั้งต่อๆ ไป (จะลดหรือเพิ่มตามค่านี้ตลอดทุกการโจมตี)

ตอนแรกไม่มีกำแพงอยู่ เมื่อถูกโจมตีแล้วกำแพงในส่วนที่ถูกโจมตีนั้นจะถูกยกขึ้นให้สูงเท่ากับความแรงของการโจมตี ต่อมาเมื่อมีการโจมตีซ้ำ ถ้าจุดใดจุดหนึ่งในช่วงที่เข้าตีมีความสูงน้อยกว่าความแรงการเข้าตีให้ถือว่าการโจมตีนี้สำเร็จ และยกกำแพงใหม่ให้สูงขึ้นเท่ากับความแรงการโจมตีครั้งนี้ ทั้งช่วงที่เข้าตี (ยกขึ้นหลังหมดวันแล้วเท่านั้น ถ้ามีการโจมตีอื่นๆ อยู่ยังไม่ยกขึ้น)

ข้อนี้กลับมาได้ใช้ class อีกแล้วครับ ผมไม่แน่ใจว่า x position มันติดลบได้มั้ย เลยเขียน class ที่รองรับตำแหน่งติดลบได้ด้วย แล้วก็ยังมีระบบ rebuild queue อีกด้วย

ตอนแรกผมเขียน generator (function __iter__) ไว้สร้างการเข้าตีทั้งหมด แต่ผมพบว่าเวลาจะโค้ดผมน่าจะไล่ไปดูว่าวันนี้ใครจะตีบ้าง ก็ควรจะ generate ของแต่ละวันมาน่าจะดีกว่า เลยเขียน atk_day ซึ่งก็ต้องบวกลบเลขกันนิดนึง

สิ่งที่พลาดนานที่สุดในข้อนี้คือ range ครับ ผมนึกว่ามันคือ [0, 2] แต่จริงๆ มันคือ [0, 2) (ตำแหน่งที่ 2 ไม่มีการเข้าตี) แล้วก็มี test case ตัวอย่างที่ผิดด้วย แต่คำตอบมันถูก ทำผมเสียเวลา debug แต่พอแก้ได้ปุ๊บก็ทำถูกได้ก่อนเค้าประกาศแก้ไขโจทย์

เช่นเดียวกัน ข้อ large ข้อนี้รันไม่ทัน นั่งเช็คๆ ดูเหมือนว่าแค่ generate attack for tribes on everyday ก็ไม่ทันกินแล้ว :3

[FCC 29] The Walking Dead

The Walking Dead นี่เป็นเกมนอกสายตาผมมากๆ เลย จนกระทั่งมันจบแล้วผมรู้สึกเริ่มโดนสปอยเรื่อยๆ ซึ่งปกติผมจะไม่แคร์นะ แต่พอมันมีคนโวยวายว่าทำไมสปอยหลายๆ คน ประกอบกับว่ามันคือ Telltale Game ด้วยก็เลยเตรียมตัวสอย (แต่จากราคาเนี่ยผมก็นานอยู่เหมือนกันกว่าจะหาราคาที่ลงได้ รู้สึกผมจะกดมา $12 ที่ GamersGate ตอนนี้มันเหลือ $10 แล้ว)

TWD เป็นเกมแบบ interactive fiction คือไม่ใช่เกมยิงซอมบี้แบบ Left4Dead แต่เป็นเกมที่เน้นบทของเกม และก็ออกเป็นตอนๆ ทุกสองเดือน ซึ่งทั้งสองอย่างนี้เป็นสูตรสำเร็จของ Telltale Game ที่ประสบความสำเร็จมาแล้วตั้งแต่ Sam & Max, Tales of Monkey Island

เรื่องของ The Walking Dead เริ่มต้นที่ Lee Everett ถูกส่งเข้าซังเตด้วยคดีฆ่าชู้ แต่ทว่ารถตำรวจนั้นกลับชนกับ Walker (คำเรียกซอมบี้ในเกมนี้) ตกข้างทาง ตำราจก็กลายเป็นซอมบี้ Lee ปีนเข้าไปในรั้วบ้านใกล้ๆ และได้พบกับ Clementine เด็กสาวที่อยู่คนเดียว พ่อแม่ไปเที่ยว Savannah Lee เลยตัดสินใจพา Clementine ไปด้วย

ตัวเกมนำเสนอโดยมี “Previously on The Walking Dead” ก่อนทุกตอนเพื่อสรุปความในตอนที่ผ่านมา และจบตอนจะมี Next time on The Walking Dead แนะนำตอนต่อไป คล้ายๆ กับ TV Series ทั่วไป

เกมนี้ปรับจากเกมเก่าๆ ของ Telltale ค่อนข้างมาก เปลี่ยนระบบควบคุมใหม่ (หลังจากเปลี่ยนรอบแรกใน Tales of Monkey Island) มีระบบแนะนำซึ่งปิดได้ซึ่งแก้จากปัญหาการ pixel hunt โดยถ้าเอาเมาส์ไปวางใกล้ๆ จุดที่โต้ตอบได้จะมีจุดขึ้นมาให้เห็น และหากเลือกบทสนทนาที่มีผลต่อเกมก็จะขึ้นข้อความแจ้ง

ปัญหาของเกมนี้คือบั๊กเยอะมากครับ เรื่องกราฟฟิคที่บางจุดกล้องจับไปในโมเดลบ้าง โหลดฉากไม่ทันบ้าง แอนิเมชั่นการหยุดเดินที่หยุดไปเลย อันนี้เป็นปกติของ TTG อยู่แล้ว อาจจะเป็นเพราะความเป็น episodic ของมันที่ทำให้เทพได้แต่ตอนแรกๆ แต่ว่าปัญหาร้ายแรงที่สุดคือเซฟหาย ซึ่งผมไม่เจอ แต่ก็เจออาการหน่อยๆ คือเล่นตอน 4 จบแล้วแต่เซฟบอกอยู่ตอน 2 พอกดเล่นตอน 4 มันก็เล่นฉากจบให้ดูอีกทีก็เล่นต่อได้

นอกจากนี้ยังมีปัญหากับจอยอีกด้วย คือต้องต่อจอยก่อนเปิดเกมเท่านั้นถึงจะ detect และถ้าใช้ Windows 8 จะต้องเอา dxinput.dll ของ Windows 7 ไปลงถึงจะใช้จอยได้ (ส่วนบนแมคก็ลง driver แล้วอาจจะเล่นได้ แต่ผมมีปัญหากับ Android File Transfer ที่ทำให้ดึงจอยออกแล้วคอมรีบูทเลยไม่ได้เล่นในแมค)

เกมนี้เป็นเกมที่ผมเล่นแล้วไม่อยากเล่นที่สุดเท่าที่เคยเล่นเกมมา มันไม่ใช่เกมไม่สนุก แต่เพราะเกมมันเล่นแล้วเครียด เมื่อทุกคนอยู่ระหว่างความเป็นความตาย ไม่ใช่แค่ซอมบี้ที่น่ากลัวเท่านั้นแต่คนเป็นๆ ก็อันตรายไม่แพ้กัน ผมเว้นนานมากระหว่าง EP2, EP3 ก็เพราะเหตุนี้

คะแนน: 9/10

ถ้ามันไม่มีบั๊ก ถ้ากราฟฟิคมันทันสมัยกว่านี้มันจะได้ 10 (model คนเกมนี้โอเคครับ แต่ model, texture ฉากนี่ยังกะสมัย Half-Life 2 แค่แสงสวยๆ มุมกล้องดีๆ กลบ)

คำแนะนำ: ผมให้เกมนี้เป็นรอง To The Moon แต่ในคลาสนี้แล้วมันยังอยู่ในขั้น “ห้ามพลาด” นี่คือเกมที่ unique เฉพาะตัว ไม่ใช่เกมจากหนังกากๆ ทั่วไป ไม่ใช่เดินยิงตู้มๆ excuse plot

ความยาก: QTE เกมนี้บางจุดใช้จอยเลื่อน cursor ไปไม่ทัน ถ้าใช้เมาส์ผมว่าน่าจะเล่นจบได้สบายๆ


ท่อนต่อไประวังสปอยครับ จะเป็นตัวเลือกการตัดสินใจในเกมของผม