Feb 25, 2012

คอนเสิร์ตโนดาเมะ


คราวนี้จัดที่กาดสวนแก้ว ใกล้บ้านขนาดนี้ ยังไงก็ไม่พลาดอยู่แล้ว

Beethoven Symphony No.7
เป็นเพลงแรกที่ถูกนำมาเล่นในคอนครั้งนี้ น่าเสียดายว่าเป็น short version คือ rearrange ให้แต่ละท่อนมีแค่ part ใจความสำคัญแค่ครั้งเดียว ไม่มีการย้อนความซ้ำอีกรอบตามรูปแบบของ symphony โดยทั่วไป และระหว่าง movement ก็เล่น (เกือบจะ) ต่อกันทันทีเลย สงสัยว่าไม่อยากให้ปรบมือคั่นระหว่าง movement? สำหรับตัวเพลงนั้น movement แรกเล่นได้ช้ามาก (น่าจะเป็นไปตามสไตล์ของอาจารย์สมัคร กาใจคำอย่างนั้นเอง?) ทั้งที่น่าจะทำให้กระฉับกระเฉงมากกว่านี้ได้อีกหน่อย พอเข้า movement 2 ก็ขาดซึ่งเสียงแตรมา intro ปลุกใจ ข้ามไปยัง part violin เลย ส่วน movement ที่ 3 และ 4 นั้น ยังขาดความสง่างาม เกรียงไกรอย่างที่มันควรเป็นอยู่ครับ

Beethoven Spring Sonata - Allegro
แต่เพลงที่สองนี้ผมเทใจให้หมดเลยนะ piano ของคุณเรมีย์ นามเทพกับ violin ของอาจารย์อภิรัตน์ ประพันธ์วงศ์เล่นประสานกันได้ลงตัวมาก เสียอย่างนึงคือนักดนตรีไม่ได้ซ้อมถึงขั้นที่ไม่ต้องดู score แล้วจังหวะที่พลิกกระดาษเปิดหน้าถัดไปนั้นเสียงดังมาก คนฮือฮากันใหญ่ (ทำไมก็ไม่รู้)

Beethoven Pathetique Sonata - Andante Cantabile
เพลงนี้ก็เอาใจไปให้หมดเลยเหมือนกันครับ ชอบๆๆ (อ๋อ ผู้เล่นคือคุณเรมีย์คนเดิมครับ) แต่เสียดายว่าตอนใกล้ๆ จบเพลง มีเด็กอายุไม่น่าเกิน 5 ขวบเสียงดังขึ้นมา (ทำไมฟระ คนกำลังอิน) แย่ๆๆ

Gershwin Rhapsody in Blue
แล้วก็กลับมาที่เพลงแบบวงใหญ่อีกครั้ง ก่อนเริ่มเพลงแน่นอนว่าต้องเทียบเสียง เด็กคนนั้นนั่นแหละก็เทียบเสียงไปกับเค้าด้วย (เอ่อ จะว่าไปมันก็ตลกนะ... แต่ตอนนั้นขำไม่ออกกับมารยาทของผู้ปกครองแฮะ) แล้วเด็กคนนั้นก็ส่งเสียงเจี๊ยวจ๊าวตลอดเพลงซะอีก (ทำไมไม่พาลูกกลับบ้านไปเลย?) ส่วนเนื้อหาเพลงนั้นก็ปรกติทั่วไปดีครับ ได้คุณ Soo Hwan Cha มาเล่น piano คู่กับการคอนดักต์ของอาจารย์ชัยพฤกษ์ เมฆรา แต่โดยส่วนตัวแล้ว เพลงนี้ผมหลับแฮะ.. (เฉยๆ กับเพลงกึง Jazz กึ่ง Classic เป็นทุนเดิมอยู่แล้ว)

Rachmaninoff Piano Concerto No.2
นับได้ว่าเป็นไฮไลท์ของงานเลยทีเดียวกับเพลงนี้ แต่ผมว่าฝีมือ piano ของคุณ Atsuko Seta ยังไม่แกร่งกล้าพอที่จะฝ่าฟันทะเล orchestra ไปได้แฮะ หลายๆ ครั้งที่เสียง piano ของเธอนั้นโดนกลืนหายไปในพายุอันหนักหน่วง หนำซ้ำ แม้ว่าพายุร้ายจะได้สงบลง เธอกลับไม่สามารถฉายสายรุ้งสวยงามทั้งสองวงได้ ที่สำคัญ เธอจำโน้ตผิดไป 1 ห้อง (อีกแล้ว) ครับ ทางฝั่ง orchestra ก็เลวร้ายไม่แพ้กัน มีท่อนนึงที่เครื่องเป่าเกือบจะทำเพลงล่มเพราะหายไป 2 ห้อง และเฟรนช์ฮอร์นเล่นเสียงดังเกินไปด้วย -___-"

แต่โดยรวมก็ถือว่า คุ้มกับบัตรราคานักศึกษาครับ ยิ่งถ้ารู้ว่าวง orchestra เป็นวงเยาว์ชนที่อาศัยแค่ซ้อมช่วงเย็นด้วยแล้ว น่าจับตามองจริงๆ ว่าถ้าเราตั้งวง orchestra เป็นเรื่องเป็นราว น่าจะไปได้ไกลกว่านี้มากเลยนะ

Feb 16, 2012

ซ้อม CodeJam


ช่วงนี้ซ้อม CodeJam อยู่ หวังว่าจะได้เสื้อ Google มาใส่เล่น (โดน @lewcpe ยั่วให้อยากแข่ง) เลยว่าจะจดรายระเอียดเอาไว้หน่อย เผื่อว่าใครอยากจะลงเล่นแย่งชิงเสื้อไปด้วย อิอิ

การเขียนโปรแกรมแก้โจทย์:
- ใช้ภาษาอะไรก็ได้ ขอแค่มี compiler เวอร์ชันฟรีให้กรรมการเอาไว้ทดสอบก็พอ (Mathematica อด)
- ส่วน editor/ide จะใช้อะไรก็ได้ อันนี้ฟรีสไตล์เลย
- แต่ระบบคิดคะแนนคือโหลด test case มารันในเครื่องตัวเอง แล้วส่งคำตอบกลับไป ไม่ใช่รันที่ฝั่ง server ปิดบัง test case
- ดังนั้น test case ที่ให้มาก็จะมี time out เพื่อป้องกันการที่เราโหลด test case มาศึกษานั่นเอง
- และเวลาส่งคำตอบ ต้องแนบไฟล์โปรแกรมของเราไปด้วย

คำถามแต่ละข้อ:
- ในหนึ่งคำถาม จะมี test case ให้ 2 ชุด (ง่ายกับโหด)
- อ่านโจทย์ + เขียนโปรแกรมให้เสร็จก่อน แล้วค่อยโหลด test case
- test case ข้อง่ายเมื่อโหลดมาแล้ว มีเวลา 4 นาทีในการหาคำตอบ และส่งข้อมูลกลับไปให้ตรวจ
- ส่งคำตอบผิดไป ทางโน้นจะบอกว่าผิด แต่ยังให้ส่งใหม่ได้เรื่อยๆ จนกว่าเวลา 4 นาทีจะหมด
- ถ้าเวลาหมดก็ต้องโหลด test case ชุดใหม่มาคิด
- เมื่อส่งคำตอบที่ถูกต้องไปแล้ว ถึงจะโหลด test case แบบโหดมาทำได้
- test case โหดให้เวลา 8 นาที แต่จะไม่บอกตอนแข่งว่าถูกหรือผิด แถมคราวนี้เวลาหมดแล้วหมดเลย (ระวังให้ดี)

ในหนึ่งรอบต้องเจอ:
- แต่ละรอบจะมีคำถามให้ 3 ข้อ เรียงจากคะแนนน้อยไปมาก (อาจจะถือว่าเรียงง่ายไปยากด้วย)
- ถ้าคิดว่าทำไม่ทันทั้ง 3 ข้อ ควรเก็บข้อแรก (ง่ายสุด) แล้วข้ามไปเก็บข้อสุดท้ายเลย จะได้คะแนนเยอะกว่าเก็บข้อแรกกับข้อที่สอง
- แต่ถ้าคิดจะทำข้อสุดท้ายด้วยการ recursive - brute force ไม่พึ่ง dynamic programming ทำใจได้เลยว่าผ่านแค่ test case แบบง่ายเท่านั้น
- เพราะฉะนั้น จะเขียน algorithm ธรรมดาเก็บ test case แบบง่ายทั้งหมดก่อน (อย่างรวดเร็ว) แล้วค่อย optimize เพื่อลุย test case โหดก็ได้

รอบที่แข่งขัน:
- รอบ qualification ให้เวลา 24 ชั่วโมง แต่ถ้าจะจริงจังกับเสื้อ ควรทำรอบนี้ให้เสร็จใน 2 ชั่วโมง เพราะคำถามง่ายมาก
- เมื่อผ่าน qualification แล้ว ก็จะพบกับรอบที่ 1 ซึ่งมีให้เลือกเล่น 3 รอบย่อย
- จะแข่งรอบย่อยกี่รอบก็ได้ ขอแค่ผ่านรอบย่อยอันใดอันหนึ่งก็พอแล้ว (เข้ารอบประมาณรอบย่อยละ 1000 คน)
- รอบย่อยของรอบที่ 1 จะเริ่มโหดขึ้นมาบ้างแล้ว ควรเก็บให้ได้อย่างน้อย 2 ข้อเต็มๆ (เวลาแข่งประมาณ 2.5 ชั่วโมง)
- ถ้าไม่มีปัญหาอะไร ก็จะได้ผ่านเข้าไปแข่งรอบที่ 2
- รอบนี้จะยากขึ้นมาอีกระดับเลย เก็บได้ข้อนึงเต็มๆ กับอีกข้อที่ผ่านแค่ test case ง่ายก็มีสิทธิ์ได้เสื้อแล้ว
- จะผ่านเข้ารอบที่ 3 ได้ต้องติด 500 อันดับแรก ส่วนถ้าจะหวังเสื้อก็ติด 1000 อันดับแรก

เอาให้ได้ถึงแค่นี้ก่อน ถ้าติดถึงรอบ 3 มหาโหดจริงจะมาเขียนต่อ (ตอนนี้หวังแค่เสื้ออย่างเดียว)

Feb 9, 2012

การศึกษาไทย

ออกตัวก่อนว่าผมไม่ได้เรียนสายคอมฯ โดยตรง แต่ด้วยความที่ชอบคอมพิวเตอร์อยู่บ้าง ก็อยู่คลุกคลีกับมันบ่อยๆ

เรียกว่าเป็นความโชคดี (หรือโชคร้ายกันแน่) ของผมเอง ที่ไม่ได้เริ่มจากภาษา C/Java อย่างที่คนเรียนสายนี้มักจะทำกัน แต่ไปเริ่มกับภาษาชั้นสูงเลยอย่าง Python/JavaScript ทำให้ผมไม่ค่อยรู้เรื่องรู้ราวอะไรกับการศึกษาในมหาวิทยาลัยของสายนี้เท่าไหร่

แถมไอ้ตอนที่ผมเรียนรู้เอง ก็ไม่ได้ค่อยๆ เรียนค่อยๆ สร้าง tool แต่ละอย่างตามที่สอนในห้องอีก อยากได้อะไรก็ถาม Stack Overflow เอาเป็นที่แรก พวก tool ต่างๆ ก็เลยไม่ค่อยได้เขียนเอง import lib เข้ามาใช้เป็นประจำ

มันเลยทำให้ผมโคตรไม่เข้าใจว่า ถ้าจะรับค่าตัวเลข 0-6 แล้วส่งคืนเป็นวันอาทิตย์-เสาร์ ทำไมต้องเขียน if-else เพื่อตรวจเอาเองด้วย ทั้งๆ ที่เราก็มี strptime-strftime เอาไว้ให้ใช้อยู่แล้ว...

แล้วข้อสอบก็ออกให้ตรวจสอบ leap year ผมก็เขียนไปอย่างนี้ (ข้อสอบเป็นภาษาอื่น ไม่ใช่ Python)
def is_leap(year):
    if not year%400 or (year%100 and not year%4):
        return True
    else:
        return False
ปรากฏว่าอาจารย์ไม่ตรวจให้ เพราะผมไม่ได้ใช้ nested-if-else อย่างที่สอนในห้อง!!



วันนี้ซ้อมโจทย์ CodeJam เล่นๆ แล้วก็คิดว่า เอ่อ! โจทย์หยั่งงี้แหละ ที่มันควรเอาไปออกเป็นข้อสอบ

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

สรุปแล้ว ผลการสอบของการศึกษาไทยมันบอกแม่งอะไรวะ?

Feb 2, 2012

Inception ส้นตีน

(ไม่ได้ด่าหนัง Inception นะครับ) วันนี้เห็นน้อง @srakrn อัพเรื่องตรรกะส้นตีนแล้วคิดถึงที่พี่ @lewcpe เคยเขียนไว้เช่นกัน

ส่วนตัวผมคิดว่ามีอีกอย่างที่แม่งโคตรส้นตีนมากๆ คือเอาความคิดตัวเองเป็นใหญ่ อะไรไม่เห็นไปในทางเดียวกับตัวเองต้องปิดกั้น เซนเซอร์ ห้ามแสดงความเห็น แล้วก็แม่งเอาความคิดตัวเองฝังหัวเข้าไป มึงไม่ทำอย่างกูมึงผิด ห้ามเถียง

... ก่อนจะบอกว่าประชาธิปไตยๆ มึงเคยเข้าใจคำว่าสิทธิและเสรีภาพมั้ยวะ?

อีกนานมั้ยกว่าเราจะเรียนรู้ว่า แม้จะไม่เห็นด้วยกับความคิดของอีกฝ่ายเลยแม้ซักนิดเดียว แต่เราก็จะไม่ปิดกั้นห้ามอีกฝั่งทำสิ่งนั้นๆ ตราบใดที่มันไม่ได้ไปขัดแย้งปิดกั้นเสรีภาพของคนอื่นๆ

ส้นตีนเถอะครับ