bugün Uluslararası programlama yarışması ICPC 2019'un finalleri Portekiz'in Porto şehrinde yapılacak. Yarışmaya ITMO Üniversitesi temsilcileri ve Rusya, Çin, Hindistan, ABD ve diğer ülkelerdeki üniversitelerden diğer ekipler katılacak. Size daha ayrıntılı olarak anlatalım.
icpcnews /flickr/ CC BY / Phuket'teki ICPC-2016 finallerinden fotoğraflar
ICPC nedir?
ICPC öğrenciler arasında düzenlenen uluslararası bir programlama yarışmasıdır. 40 yılı aşkın süredir yapılıyor - ilk final Ben 1977'de. Seçim birkaç aşamada gerçekleştirilir. Üniversiteler bölgelere göre (Avrupa, Asya, Afrika, Amerika vb.) ayrılmıştır. Her biri, özellikle Kuzey Avrasya yarı finalleri olmak üzere ara aşamalara ev sahipliği yapıyor Üniversitemizde gerçekleşti. Bölgesel etapların galipleri finallere katılıyor.
ICPC'de, üç katılımcıdan oluşan ekiplerden bir bilgisayarı (İnternete bağlı olmayan) kullanarak bir dizi sorunu çözmeleri istenir. Böylece programlama becerilerinin yanı sıra takım çalışması becerileri de test ediliyor.
Yarışma sırasında takımlar bir bilgisayar alacak üç kişi için. Ubuntu 18.04'ü çalıştırır ve vi/vim, gvim, emacs, gedit, geany ve kate önceden yüklenmiştir. Programları Python, Kotlin, Java veya C++ ile yazabilirsiniz.
Bir ekip bir sorunu çözdüğünde, bunu kodu değerlendirecek olan test sunucusuna iletir. Katılımcılar makinenin hangi testleri yaptığını bilmiyor. Hepsi başarılı olursa takım bonus puan alır. Aksi halde hata oluşur ve öğrenciler kodu düzeltmeye gönderilir.
ICPC kurallarına göre en çok sorunu çözen takım kazanır. Bu tür birkaç takım varsa, kazanan en küçük ceza süresine göre belirlenir. Katılımcılar çözülen her problem için ceza tutanakları alırlar. Dakika sayısı, yarışmanın başlangıcından görevin test sunucusu tarafından kabul edilmesine kadar geçen süreye eşittir. Takım bir çözüm bulursa, her hatalı pas girişimi için bir yirmi dakika daha ceza alır.
icpcnews /flickr/ CC BY / Phuket'teki ICPC-2016 finallerinden fotoğraflar
Görev örnekleri
Şampiyonanın hedefleri takım koordinasyonu ve konsantrasyonunu gerektirir. Ek olarak bireysel matematiksel algoritmalara ilişkin bilgileri de test ederler. ICPC 2018 katılımcılarına sunulan bir göreve örnek:
Tipografide "nehir" terimi vardır - bu, birkaç metin satırından oluşan kelimeler arasındaki boşluk dizisidir. Belli bir nehir uzmanı (gerçekten) bir kitap yayınlamak istiyor. Tek aralıklı yazı tipiyle yazdırırken sayfada en uzun tipografik nehirlerin "oluşmasını" istiyor. Katılımcıların bu koşulun karşılanacağı alanların genişliğini belirlemeleri gerekiyordu.
Girişte program, metindeki kelime sayısını belirleyen bir n (2 ≤ n ≤ 2) tamsayısını aldı. Daha sonra metin girildi: bir satırdaki kelimeler bir boşlukla ayrıldı ve 500 karakterden fazla içeremezdi.
Çıktıda programın en uzun “nehrin” oluştuğu tarlaların genişliğini ve bu nehrin uzunluğunu göstermesi gerekiyordu.