Her aralık ayında dünyanın dört bir yanında geliştiriciler aynı şeyi yapar: sabah kalkar, o günün bulmacasını açar ve çözer. Advent of Code, Eric Wastl'ın 2015'ten beri hazırladığı bir programlama bulmacası etkinliği. Ücretsiz, herhangi bir programlama diliyle çözülebiliyor ve her bulmaca küçük bir hikâyenin parçası. Algoritma pratiği yapmak, yeni bir dil öğrenmek ya da sadece eğlenmek için iyi bir bahane.
Nasıl işliyor?
- Her gün bir bulmaca: Bulmacalar 1 Aralık'ta başlıyor ve her gün bir yenisi açılıyor. 2025'in kurallarına göre bulmacalar ABD Doğu saatiyle gece yarısı, yani Türkiye saatiyle sabah 08.00'de açılıyor.
- İki parça: Her bulmacanın iki bölümü var. İlkini çözünce ikincisi açılıyor; ikinci bölüm genelde aynı problemi daha büyük ya da biraz farklı biçimde soruyor ve ilk çözümünün ne kadar iyi tasarlandığını sınıyor.
- Kişisel girdi: Her katılımcı aynı soruyu kendi girdisiyle çözüyor. Cevabını siteye yazıyorsun, doğruysa yıldız kazanıyorsun. Kodun hiçbir yere gönderilmiyor; hangi dili kullandığın sana kalmış.
2025'te ne değişti, 2026'da ne bekleniyor?
On yıl boyunca her aralıkta 25 bulmaca vardı. 2025'te etkinlik kısaldı: sitedeki açıklamaya göre bulmacalar yine 1 Aralık'ta başladı ama aralığın ortasında bitti. Aynı yıl, hızlı çözenleri sıralayan küresel liderlik tablosu da kaldırıldı; gerekçe, tablonun yarattığı stres ve sağlıksız rekabetti. Arkadaş grupları için özel liderlik tabloları (private leaderboard) ise devam ediyor.
2026 etkinliğinin ayrıntıları bu yazıyı yazdığımız Ekim ortasında henüz açıklanmadı. Geçen yılın düzenine bakarak 1 Aralık'ta başlamasını bekleyebilirsin; kesin bilgi için adventofcode.com'u takip et.
Yapay zekâ meselesi
Bulmacaları bir yapay zekâ modeline çözdürmek mümkün. Sitenin kendi cevabı ise net: "Arkadaşını senin yerine spor salonuna gönderirsen güçlenmeyi bekler misin?" Bulmacalar insanların çözmesi için tasarlanmış. Advent of Code'un sana kazandıracağı şey yıldızlar değil, bir problemi parçalara ayırma ve doğru veri yapısını seçme alışkanlığı. Takıldığında yapay zekâdan çözümü değil, bir ipucu ya da bir kavramın açıklamasını istemek daha öğretici.
Nasıl hazırlanırsın?
Advent of Code'a özel bir hazırlık gerekmiyor, ama birkaç şey işini kolaylaştırır:
- Dilini seç. Hızlı başlamak istiyorsan en rahat olduğun dil. Yeni bir dil öğrenmek istiyorsan bu iyi bir fırsat; ilk günlerin bulmacaları bir dilin temel yapılarını öğrenmek için ideal.
- Girdi okumayı hazırla. Her gün ilk iş girdi dosyasını okuyup satırlara, sayılara ya da bir ızgaraya çevirmek. Bunun için küçük bir yardımcı fonksiyon yaz, her gün yeniden yazma.
- Örnekle test et. Her bulmacada küçük bir örnek girdi ve beklenen cevap veriliyor. Kodunu önce bununla dene; örnek doğruysa gerçek girdiye geç.
- Temel araçları hatırla. Sözlük (hash map), küme, kuyruk, iki boyutlu ızgaralar, özyineleme ve graf aramaları (BFS) bu bulmacalarda sık çıkıyor.
- Eski yılları dene. 2015'ten bu yana bütün bulmacalar sitede duruyor. Aralık gelmeden birkaç tanesini çözmek ısınmak için iyi.
Tek başına değil, birlikte
Advent of Code'un en keyifli yanı başkalarıyla çözmek. Özel bir liderlik tablosu kurup arkadaşlarını davet edebilirsin; tablonun kurallarını (hangi diller, yapay zekâ kullanımı) grup kendisi belirliyor. Daha da iyisi, bulmacayı çözdükten sonra başkalarının çözümüne bakmak: aynı problemin beş farklı dilde, beş farklı yaklaşımla nasıl çözüldüğünü görmek, bulmacanın kendisinden daha öğretici olabilir.
Birkaç kural öneriyoruz:
- Çözümleri, bulmaca açıldıktan sonraki gün paylaşın ki herkes kendi denemesini yapabilsin.
- Herkes kendi hızında gitsin. Bir günü kaçırmak sorun değil; bulmacalar etkinlik bittikten sonra da sitede kalıyor.
- Hız değil, anlaşılır kod öne çıksın. "En kısa çözüm" yarışından çok "en okunur çözüm" sohbeti öğretir.
re:make'te bu aralık Advent of Code'u birlikte çözmek istiyoruz: Hub'daki sohbette bir oda ve topluluğa özel bir liderlik tablosu açacağız, pazar buluşmalarında da haftanın bulmacalarını konuşacağız. Her pazar 15.00'te buluşuyoruz; üye olmadan da gelebilirsin. Yeri ve saati burada.
Bir sonraki not düştüğünde haberin olsun.