Advent Of Code Kılavuzu
Bu yazıyı Bilgisayar Kavramları Topluluğu için hazırladım. Topluluğa üye olmak için linke tıklayabilirsiniz.
Advent Of Code Nedir?
2015 yılından beri, her yıl 1 Aralık’tan 25 Aralık’a kadar her gün 2 parçadan oluşan bir puzzle yayınlanıyor. Bunlar, istediğiniz herhangi bir programlama dilinde çözülebilen, çeşitli beceri seviyelerine uygun küçük programlama bulmacalarından oluşan bulmacalar. Bu da katılım için bilmeniz gerekenlerle ilgili küçük bir giriş kılavuzu. Tüm detaylı bilgiler için siteyi keşfetmenizi ve about kısmını mutlaka okumanızı öneririm.
Trivia: Advent of Code advent calendar konseptinden esinleniyor. Hikayesine bakabilirsiniz :)
Nasıl Oynanır?
Bu yıl AoC deneyimi 12 gün sürecek. Yani 1 Aralık’tan 12 Aralık’a kadar her gün bir bulmaca açılacak.Bulmacalara Advent Of Code sitesinde ücretsiz bir hesap açarak ulaşabilirsiniz. 2025’in ilk bulmacası Türkiye saatiyle 1 Aralık 08:00’da gelecek ve ondan sonra 12 gün boyunca her gün aynı saatte gelmeye devam edecek.
Yapmanız gereken günün sorusunu detaylıca okuyup problemi anlamak. Bulmacalar bir hikayeye anlatısı şeklinde geliyor. Fakat hikayeden soyutlanan bir problem oluyor.
Her problem için de bir input veriyorlar size. Problemi çözen kodu yazdıktan sonra input’u vererek cevabı üretiyorsunuz. Sadece elde ettiğiniz cevabı bekliyorlar sizden, herhangi bir kod, çözüm yolu vs. göndermiyorsunuz. Bu yüzden istediğiniz, aklınıza gelen herhangi bir yöntemle çözebilirsiniz.
Her günün bulmacası iki parçadan oluşuyor. İlk kısmı çözünce ikinci kısım açılıyor. Aynı input ile ikinci kısmı da çözerseniz günün yıldızlarını toplamış oluyorsunuz.
Örnek bir bulmaca
Tamamen örnek olan bir bulmaca örneği koyuyorum. Çözüm mantığını böylece anlayabilirsiniz.
Soru: Noel Baba’nın oyuncak fabrikasında, hediye paketleme bandı biraz bozulmuş durumda. Bandın üzerindeki her kutunun ağırlığı bir sayı ile temsil ediliyor. Noel hediyeleri müfettişi olarak senin görevin, oyuncak fabrikasi tüm kutuların toplam ağırlığını hesaplayıp rapor etmek.
Soruyu çözmeye hazır olduğunda, inputu buradan indirebilirsin:
5 8 3 4
Kutuların toplam ağırlığı kaçtır?
Genelde yukardaki gibi (tabii ki çözmesi on saniyeden fazla süren) sorular geliyor. Input listesi de böyle veriliyor.
Bu soruyu çözmek için hikayeyi elersek elimizde kalan soyutlanmış problem:
Verilen bir sayı listesinin toplamını bulun.
Arka planda kod editörünüzü açacak, bir dosyadan veri okuyup listedeki elemanları toplayacak ve sonucu yazdıracak olan bir kodu, istediğiniz dilde istediğiniz şekilde yazıyorsunuz. Bulduğunuz son sayıyı (20) sitedeki cevap alanına yazıyorsunuz.
İkinci aşamada da soruyu güncelliyorlar. Örneğin "Noel Baba, ağırlığı sadece 10’dan fazla olan hediyeleri rapora eklemek istiyor, yeni toplamı bulun.”
Burada da kodunuzu duruma uygun şekilde güncelleyip yeni cevabı yazıyorsunuz.
Not: inputlar herkese farklı geliyor, o yüzden herkesin cevabı farklı oluyor.
Seviyeme uygun mu?
Advent of Code tam olarak bir programlama seviyesi gerektirmiyor. Aslında gereken en büyük beceri problemleri anlayıp soyutlayabilmek ve çözüm üretebilmek. Bunu yaptıktan sonra çoğu bulmaca en temel programlama konseptlerini bilen birisi tarafından çözülebiliyor. Tabi eğer rekabetçi olarak katılım sağlıyorsanız, çözüme ne kadar hızlı ulaştığınız, dolayısıyla ne kadar iyi kod yazabildiğiniz fark yaratmış oluyor.
Geç kalmış olsanız da sorular bir kez açıldıktan sonra (her gün bir tanesi) istediğiniz zaman geriden de olsa yetişebilirsiniz. Her gün aynı vakitte tamamlamak zorunda değilsiniz, bazı sorular sizin için daha uzun sürse bile yetişmek için bolca vaktiniz var.
Genel İpuçları
- Bulmacaları çözmeye başlamadan önce mutlaka hikayesinden bağımsız soyutlanmış bir hale getirin. İşi çok kolaylaştırıyor.
- Verilen asıl input’u denemeden önce bulmaca içindeki örnek input ile kodunuzu çalıştırın. Küçük bir veri seti olduğundan hataları görmek ve debuglamak çok daha kolay oluyor.
- Her bulmaca iki kısım oluyor demiştik. Genelde ikinci kısım, ilk kısmın biraz değiştirilmiş hali oluyor. İlk kısmı bunu göz önünde bulundurarak modüler ve değişime açık şekilde çözmeye çalışabilirsiniz. Böylece ikinci kısım geldiğinde kodunuzu baştan yazmak yerine sadece küçük değişikliklerle çözebilirsiniz.
- Takılırsanız ilgili gruplarda topluluklarda ipuçlarına bakabilir, yardım alabilirsiniz.
- Bu yılın sorularını beklerken geçen yılların sorularına bakabilir ve çözebilirsiniz. Yarışma için güzel bir momentum kazandıracaktır.
Bilgisayar Kavramları Topluluğunda Advent Of Code - 2025
2025 Advent of Code’u bilgisayar kavramları topluluğu olarak kendi aramızda eğlenceli bir mini- hackathon olarak değerlendireceğiz.
Bilgisayar Kavramları Topluluğuna özel bir lider panomuz var. 12 gün boyunca katılım sağlayarak siz de yarışabilirsiniz.
Katılmak için yapmanız gerekenler:
- Advent Of Code sitesinde üyeliğinizi oluşturun
- Bulmacalar yayınlanmadan önce "Yazılım/Programlama" grubunda oda giriş kodu paylaşılacak.
- Bu kodu kullanarak oluşturulan özel odaya giriş yapın.
- Bundan sonra her gün yeni gelen bulmacayı çözüp cevaplarınızı siteden girmeniz yeterli. Sitede otomatik lider panosu ve puanlama sistemi çalışıyor olacak.
- Sıralamanız çözdüğünüz bulmaca sayısına göre belirlenecek. Eşitlik durumundaysa cevabını önce göndermiş olan öne geçecek.
- Bulmacalar bittiğinde biz de kazananımızı öğrenmiş olacağız 😎
Önemli not: Bulmacalar sırasında yapay zekadan yardım almamanızı önemle rica ediyoruz. Yapay zekanın problem çözme becerisini öğrenmek istemiyoruz. Kendi aramızda, adil ve eğlenceli bir süreç istiyoruz. Projenin sitesinden alıntı:
Advent of Code bulmacalarını çözmek için yapay zeka kullanmalı mıyım? Hayır. Bir arkadaşınızı sizin adınıza spor salonuna gönderirseniz, güçlenmeyi bekler misiniz? Advent of Code bulmacaları, insanların çözmesi için ilgi çekici olacak şekilde tasarlanmıştır; yapay zekanın bir bulmacayı çözüp çözemeyeceği dikkate alınarak değil. Bir yapay zeka prompt verme pratiği yapmak istiyorsanız, bunu göz önünde bulundurarak tasarlanmış başka yerlerde kesinlikle daha iyi egzersizler olacaktır.
Okuduğunuz için teşekkürler. Konuyla ilgili ekleme, düzeltme yapmak ya da tartışmak isterseniz memnuniyetle karşılık veririm.