Google Code Jam ve ben..

1,5 ay kadar önce Google’ın düzenlediği Code Jam isimli yarışmaya kayıt yaptırmıştım. Yarışmada geçtiğimiz Cumartesi gecesi ön elemeler yapıldı. Aynı gün elektronik devreler sınavım olduğundan tüm 4 soruyu da yanıtlayacak kadar vakit bulamadım ve 4 sorunun 3üne çözüm getirerek, 45 puanla yaklaşık 10 gün sonra başlayacak olan 1. eleme turundaki etaplara katılmaya hak kazandım.

Yarışma ana sayfasına ve dolayısıyla ilgili diğer tüm detaylara http://code.google.com/codejam/ adresinden ulaşabilirsiniz.

Bu yazıda, ön eleme turunda çözmemiz istenen sorular içinde yanıtladıklarımdan ve problem çözümünde kurduğum algoritmalardan bahsedeceğim.

Her bir problemin Small-Set ve Large-Set olmak üzere 2 çeşit girdi seti vardı. Small-Set çözümleri için, çözüm gönderilmek istendediğinde 4dk lık bir zaman aralığında girdi dosyasını download etmem, programa okutmam ve çözümü yaptırmam, son olarak da çıktı dosyası ile kaynak kodumu upload etmem gerekiyordu. Small-Set çözümlerinde hatalı çözüm yapmışsam tekrar deneme şansım mevcut oluyor fakat her çözüm yapmak istediğimde, bir öncekinden farklı, yeni bir input set gönderiliyordu. Large-Set çözümlerinde ise tek bir şansım vardı. Çözüm yap dediğim anda, 8 dakikalık bir zaman çerçevesi içinde giriş dosyasını almam, çözdürmem ve sonucu geri yüklemem gerekiyordu. Eğer bu 8 dakika içinde çözüm yapamazsam o problemin Large-Set’i için 2.bir şansım olmuyordu. Problemi iyice analiz etmeden large set çözümünü yaptırmak istediğimden bir sorunun large-set çözüm hakkını kaybettim mesela. Bunun yanında çıkış dosyaları kesinlikle ve kesinlikle saf text modunda ve saf ASCII tablosu dahilinde karakterler içermek zorunda. 1. problemin çıkışını üretirken bir “NewLine”+”CarriageReturn” problemi yaşadığımdan 4 defa denemek zorunda kaldım. Continue reading