7. Geleneksel Programlama Yarışması - ODTÜ

0
FZ
ODTÜ Bilgisayar Topluluğu diyor ki: Ülkemizde programlamacılığın gelişmesine, GNU/Linux'un yaygınlaşmasına ve bilgisayar bilimcilerini bir araya getirmeye katkıda bulunmak, eğlenirken öğrenmek ve kazandırmak için yarışmamız üzerine düşen görevi başarıyla gerçekleştiriyor.

Bu sene yedincisini gerçekleştirdiğimiz yarışmamıza katılım hiç zor değil. Tek yapmanız gereken ön eleme sorularını çözerek 15 Nisan 2004 günü saat 23:59'e kadar bize göndermek. Sorular üzerinde istediğiniz kadar düşünebilirsiniz. Çözüm yolunu bulduktan sonra yazacağınız C veya C++ dillerindeki programınızı sınayarak bize gönderebilirsiniz. Üstelik başvuruda bulunmak için tüm sorulara çözüm bulmak zorunda değilsiniz.

Görüşler

0
bio
"Ülkemizde programlamacılığın gelişmesine, GNU/Linux'un yaygınlaşmasına ve bilgisayar bilimcilerini bir araya getirmeye katkıda bulunmak, eğlenirken öğrenmek ve kazandırmak" için C veya C++ bilmek mi gerekiyormuş? Diğer diller "ülkemizde programlamacılığın gelişmesine, GNU/Linux'un yaygınlaşmasına ve bilgisayar bilimcilerini bir araya getirmeye katkıda bulunmak, eğlenirken öğrenmek ve kazandırmak" misyonuna hizmet edemez miymiş? Yoksa jüride başka dil bilen kimse yok muymuş?
0
lifesdkver0_1
eger "gercekten" linux kullansan ve uzerinde geli$time yapmaya cali$san c/c++ dillerini bilmenin nasil gerekli oldugunu anlardin. onlar da zaten "sadece bu dilleri bilen, linuxun yayginla$masina ve programcılığa hizmet etmiş olmaktadır " dememektedirler. katkiyi bu $ekilde yapmaktalar ve yari$ma formatini da c/c++ cercevesinde belirlemekteler. zaten yari$mada onemli olan da algoritma. yani sen bunu ba$ka bir dilde cozdukten sonra, c'ye aktarman hic de zor olmayacaktir. eger c/c++ bilmiyorsan da bunlari ogrenmek icin iyi bir firsat.

benim yari$ma ko$ullarindan ho$uma gitmeyen tek $ey, yari$manin sadece uni. ogrencilerine acik olmasi. kodlama yari$masi olarak, bildigim kadariyla Turkiye'de sadece ODTU CClub tarrafindan duzenlenen bu yari$ma var. ama eminim ki 15-25 ya$ arasinda olup universiteye gitmeyen; ama sular seller gibi C yazan insanlar var . onlarin varligini bilmek acisindan, yari$ma onlara da acik olmaliydi diye du$unuyorum.
0
bio
eger "gercekten" linux kullansan ve uzerinde geli$time yapmaya cali$san

Gerçekten ya da yalandan, ben Linux kullandığımı ve üzerinde geliştirme yapmaya çalıştığımı mı söyledim? Nerede?

c/c++ dillerini bilmenin nasil gerekli oldugunu anlardin.

Öyle mi? Bana 1 paragrafı geçmeyecek şekilde bunun gerekliliğini anlatabilir misin?

Mesela neden Perl ile çok kolay yapılabilecek işleri C/C++ ile yapmak gerekir?

Neden yeni başlayan bir programcı Java gibi object oriented programlamayı çok daha hızlı öğrenebileceği bir dil yerine C++'ta memory management ile uğraşarak demoralize olsun?

Neden Linux/BSD sunucu üzerinde web uygulamaları geliştirmeyi amaçlayan biri C ile CGI yazmaya kassın da PHP ya da JSP ile daha üretken olmasın?

Amaca göre araç seçmek yazılım geliştirme disiplininin en önemli (ama en çok gözardı edilen) ögelerinden biridir. "M$ sucks, Linux r0cks", "C'den başka dile gerek yok aga", "kahrolsun Intel, yaşasın Apple" gibi yaklaşımlar projelerinizi uzatır, batırır, karar vereni işten attırır vs. Hatta bir counter-argument ile bitirelim; ne demişler, "nobody has ever get fired for choosing Microsoft"
0
junkie
SanIrIm beLirLi bir diL iLe yarI$manIn sInIrLandIrILmasI gerekLiydi. Zira yarI$maya katILan eserLerin oLcuLebiLir bir performans kriteri iLe birbirLerinden ayrILmasI soz konusu. Sadece dogru sonuc degiL, dogru sonucun en optimum cozumu de sanIrIm onem kazanacaktIr. Optimum kod en koLay aynI playformda

kodun_caLI$ma_zamanI X kuLLanILan_kaynak

oLarak cok guzeL oLcuLur.

3 soru soruLacakmI$ sanIrIm. Emin oLun dogru sonuc buLan cok ki$i oLur. Bu noktada diger kriterLer onem kazanacaktIr.

BeLki bu diL Java, PerL, PHP, Biferno,Prolog oLabiLirdi... Ama C/C++ seciLmi$. Ekibin takdiridir. -Amaca gore arac seceLim - diyorsanIz, bence zaten gereken yapILmI$. popuLer, kokLu ve aLt seviye eri$ime izin veren diLLer seciLmi$ Kİ yarI$macI gereken yerde C++ yazsIn string iLe ugra$masIn, gereken yerde C yazsIn, gereken yerde de asm{} bassIn hIzLansIn. AYNI donanIm kuLLanILacak ise, donanImIna gore derLesin.. vs vs.. [CaLI$tIrILabiLir kodLar yarI$acak imi$]

LAKİN : Sorun oLan $udur ki, yarI$ma anInda $oyLe kararLar vermek gerekmesin. - Bu aLgoritma daha iyi ama Perl iLe yazILdIgI icin daha yava$, yok efendim bu kod agIr memory kopyaLama i$Lerini asm{} icinde yapmI$ ama aLgoritma kotu. Bu boyLe oLsa, o oyLe oLsa daha iyi oLurdu.. Teyzemin bIyIkLarI oLsa idi daha iyi oLurdu vs... - Tahmin ediyorum ki Dil sInIrLamasInIn sebebi budur. Yoksa biri cIkar der ki, ben bunu donanIm iLe cozdum. aL sana devre. Input bura output bura.

Daha derine iniLmesini dogru buLmuyorum.
0
bio
İlgisi bile yok. Aynı dilde de birbirine göre farklı avantaj/dezavantajları olan kodlar yazılır. Bu yarışmadaki soruları C ile ikişer algoritmayla çözelim, biri çok hızlı ama bellek canavarı; diğeri yavaş ama embedded systemlarda bile çalışabilir olsun. Hangisi kazanacak? Elbette ki jüri takdir hakkını kullanacak; kullanılacak dili kısıtlamakla bundan kurtulunmuyor.

Zaten juriye gerek olmasa, compile edilir çalıştırılır, hangisi hızlıysa, hangisi az memory kullanıyorsa o birinci olurdu. Algoritmanın güzelliği değil mi önemli olan?

Sınırlar zaten konulmuş: Linux üzerinde çalışacak. Yani "donanımla çözdüm" falan zaten devre dışı. Ama Linux üzerinde tek compiler varmış gibi bir kısıtlama anlamsız. Dediğim gibi, dili kısıtlayınca seçim de kolaylaşmıyor. Bence tek sebep jüri üyelerinin yetkin olduğu ortak dilin C/C++ olmasıdır.

Benim itirazım C/C++ bilmeyen, ama iyi programcı olan/aday olan gençlerin yarışma dışında kalması. Ha, sanki bu yarışma çok mu önemli? Değil... Maksat tartışma olsun.

İlgisiz not: Mesela asm{} koymaya izin verilecek mi? Ya bütün programı tek bir asm bloğunda yazarsam? O zaman C ile mi yazmış sayılacak? Ya da ben Java'yı native compile edip, sonra disassemble edilmiş halini koyarsam asm bloğuna??? Zaten sen de "istediği yerde asm{} bassın" dedikten sonra "memory kopyaLama i$Lerini asm{} icinde yapmI$ ama aLgoritma kotu. Bu boyLe oLsa, o oyLe oLsa daha iyi oLurdu.. Teyzemin bIyIkLarI oLsa idi daha iyi oLurdu vs" diyerek kendinle çelişmişsin.
0
sundance
Kesinlikle katılıyorum biraderim. Mesele jürinin C/C++ üzerine yetkin olması bence de. Asıl problem buna C/C++ programlama yarışması dememeleri, öyle deseler eyvallah diyecek bir şey yok. Ama C/Python/Perl/Ruby diyerek bile kısıtlasalar katılımı o iş için çok sağlam jüri gerekir. Bu kısıtlamayı kaldırıp pseudo-op code ile algoritma geliştirme deseler, bu sefer de hem katılacak adam doğru düzgün bulamazlar hem de programlama yarışması olmaz.
0
junkie
'Aynı dilde de birbirine göre farklı avantaj/dezavantajları olan kodlar yazılır. Bu yarışmadaki soruları C ile ikişer algoritmayla çözelim, biri çok hızlı ama bellek canavarı; diğeri yavaş ama embedded systemlarda bile çalışabilir olsun. Hangisi kazanacak?'

Tabii ki GNU/Linux sistem uzerinde daha verimLi oLan kazanacak.

'Sınırlar zaten konulmuş: Linux üzerinde çalışacak. Yani donanımla çözdüm falan zaten devre dışı. Ama Linux üzerinde tek compiler varmış gibi bir kısıtlama anlamsız.'

SanIrIm siz de burada kendiniz iLe ceLi$iyorsunuz. CompiLer iLe iLgiLi de sInIr var. gcc yada g++ kuLLanILabiLecek.

'Mesela asm{} koymaya izin verilecek mi?'

Platform tanImLarIndan anLadIgIm kadarI iLe evet.

'O zaman C ile mi yazmış sayılacak?'

HayIr. o zaman 'o pLatformda, o pLatform icin' yazILmI$ oLacak.

'...diyerek kendinle çelişmişsin.'

HayIr. bahsettigim ozeL durum oLayI sizin inceLediginiz $ekLi iLe eLe aLdIgImIzda yapacagImIz tartI$maLara ornektir.

yarI$macILar 'DERLENMI$ KODLARI ILE' yarI$cakLar imi$. dikkatinizi cekiyorum.

Te$ekkurLer.
0
bio
Tabii ki GNU/Linux sistem uzerinde daha verimLi oLan kazanacak.

"Verimli"nin tanımı nedir? Bu bağlamda, başka bir dille yazılmasına karşı argümanlarınıza ne oldu (diller arasındaki bellek kullanımı, performans vs farklılıkları gibi detaylara dalmamak için dili sabitlemişlerdi hani)?

SanIrIm siz de burada kendiniz iLe ceLi$iyorsunuz. CompiLer iLe iLgiLi de sInIr var. gcc yada g++ kuLLanILabiLecek.

Compiler'dan kastım zaten başka dillerin compiler'larıydı; değişik C compiler'lar değil. Yani "Linux'ta (atıyorum) Pascal compiler yokmuş gibi GCC'ye mahkum etmişler" anlamında.

'Mesela asm{} koymaya izin verilecek mi?'

Platform tanImLarIndan anLadIgIm kadarI iLe evet.

'O zaman C ile mi yazmış sayılacak?'

HayIr. o zaman 'o pLatformda, o pLatform icin' yazILmI$ oLacak.


O zaman "C/C++ ile yazılmalıdır" şartını nasıl sağlayacaklar asm'e izin verirlerse?

yarI$macILar 'DERLENMI$ KODLARI ILE' yarI$cakLar imi$. dikkatinizi cekiyorum.

Derlenmiş kod ile yarışacaklarsa neden C/C++ şartı vardır?
0
erenbali
Bu tartisma en son ne zaman gecti biliyorum ama ben yeni goruyorum. Yarismayi duzenleyen Odtu Bilgisayar Toplulugunun bir zamanlar ki baskani ve hala aktif bir uyesi olarak yanitliyorum.

Ilk once neden sadece universite ogrencileri sorusunu yanitlayayim. Mezunlari ve master,doktora ogrencilerini katmak olmadi. lisans ogrencileri bir doktora ogrencisiyle yarismaktan cekinebiliyor. Lise ogrencilerinin neden katilmadiginin belirli bir sebebi yok, ileri ki senelerde belki olabilir. Universite ogrencisi olmayanlari da ancak bir yas siniriyla yarismaya katabiliriz, bu da toptan konsepti degistirmek anlamina gelse de bu konu tartisilabilir...

Neden sadece c/c++ sorusu cok geliyor.
Bizim sorularimiz tamamen bir problemi en optimal (ya da en optimale yakin) zaman ve hafiza kullanarak cozen algoritmalar istiyor, aranan sey yazilim gelistirme turunden bir sey degil. Cozumleri kontrol etmenin tek yolu da, zaman ve hafiza kullanimini sinirlamak, ya da yarismacilarin kodlarini birbirlerine gore sinamak.

Bir zamanlar ben de yarismaya en azindan Java, Pascal gibi dillerin katilmasini onermistim. Fakat genelde sorularimizda "programinizin 5 saniye icinde calismasi" turunden gereksinimler var. Fakat ornegin Java'nin kaba bir tahminle C'den 7 kat yavas calistigini vs dusundugunde, ayri iki ildeki kodlarin birbiriyle yaristirilmasinin mumku olmadigini gorduk. Ustelik yarisma finalinde zaman siniri da olunca, bir Prologda kod yazan insanin muthis avantaji olacaktir. Hem zaten IOI gibi benzer konseptteki uluslararasi yarismalarda da sadece C/C++ kullaniliyor.

Ozetlemek gerekirse, biz yarisma jurisi olarak gelen kodlari, compile edilmis hallerine test datalar yollayip sonuclarina bakarak degerlendiriyoruz. Bu islem hicbir insiyatif kullanamadan tamamen otomatik olarak yurutuluyor. Bu yetkin oldugunu dusunen bir jurinin, senin programin 70 puanlik seninki 30 puanlik dedigi bir yarisma degil. Hal boyle olunca,bu isin programlama dilini sinirlamaktan baska bilinen bir yolu yok. Yine de onerilerinizi bekleriz.

Yarismamiz henuz 8. senesinde ve hala gelisiyor. Boyle bir organizasyonu yurutmek gercekten cok zor. Bazi eksikler cok sacma formailtelerden bazilari da sadece aksi yonde bir istek henuz gelmemesinden kaynaklaniyor. Bize yine de sevk veren sey, yarismaya katilimin son 4 senedir logaritmik artis gosteriyor olmasi..

Eren Bali
ODTU BIlgisayar YK uyesi
ODTU BIlgisayar Muhendisligi
4. Sinif ogrencisi

0
sametc
ODTÜ turkiyenin en buyuk ve iyi universitelerinden biri ve bu yarışmada onemli olan senin ne kadar iyi programcılık bildiğin.....
yoksa yuksek seviyeli programlama dilinle program yazarsan bazı teknik konularından uzak kalırsın ama C/C++ dusuk seviyeli bir dil olduğundan dolayı herseyi size bırakır yani programın calışmasıyla ilgili hersey senin elinde o yuzden sadece c/c++ dilleri dil olarak secilmiş olabilir.
0
bio
Yok ama, bence bu ticari bir yarışma olmadığına göre (yani çıkan ürünü ODTÜ kendi işleri için kullanmayacak), herhangi bir dil de olurdu. Hatta Lisp, Prolog vs. diller kullanılacak çok daha "elegant" algoritmalar, çözümler sergilenebilir, şekil olur.

Yanlış anlaşılmasın, ben katılımcı değilim (zaten bu öğrencilere yönelikmiş, bizim okul biteli çok oldu). Ayrıca sözü geçen dillere (C++) de bir gıcığım yok, hatta kendileri halihazırdaki projemizde client tarafında kullandığımız dildir (hem de belki de Java'yla yazacağımız sunucu tarafını Linux üzerinde koşturacağız). Sadece adı "programlama yarışması" olan bir organizasyonun "C/C++" gibi dar bir kapsamda uygulanmasına üzüldüm. Halbuki Java, Python, PHP, Brainfuck [www.muppetlabs.com] gibi dillerde kod yazan nice cengaver öğrenci/programcılarımız vardır.
0
sundance
Bence isim C programlama Yarışması olmalıydı. Ve bence gerçek anlamda bir programlama yarışması programlama diline değil, programlama yöntemine ve algoritmaya bakar, bildiğim kadarıyla da okullarda da öğretilen budur. Yani; bir problemin çözülmesinde kriter olarak hızı ele alacağız diyelim, hızı etkileyen faktörler önem sırasına göre algoritma, yazılım ve donanımdır. Kısaca iyi bir programlama yarışmasının tek bir programlama diline özgü olması bence hatadır, altyapı ister gnu/linux olsun ister Pocket Pc olsun.
0
anonim
+1
0
realist
Benim gibi üniversite görmemiş, hatta yaklaşamamış olanlar böyle üniversitelere özgü yarışmaları kıskanır. Dillerini anlamaz. Ne diyorlar acaba diye saf saf bakar.

"Çok şey bilen akademisyen dili"nin bir kolu olan "Mantıksız mantık oyunları dili"nden türkçeye çeviridir:

1. Şöyle bir oyun icad ettik:
Yere en fazla yüz tane bilye konur. İlk oyuncu iki veya üçünü alır. Diğeri de iki katını geçmemek şartıyla ondan fazla sayıda alır. Bilye sayısının yeterli olmaması nedeniyle hamle yapamayan kazanır. Bu oyunu yazın, bilgisayarınız oynasın.

2. İngiliz alfabesindeki büyük harfleri eşit sayıda satır ve sütunlardan oluşan iki tabloya karışık halde yazdık. Sonra da götürüp Keops piramidine sakladık ki Süpzek bulunca şoka girsin, biz de eğlenelim. Programınız satır sayısı 2 ile 150 arasında değişen tabloların içindeki en büyük ortak kareyi bulacak. Yalnız bunu aşağıda verdiğimiz formatta bir dosyadan okuyup sonucu yine aşağıda verdiğimiz formatta bir dosya oluşturarak vermeli.Bunun sebebi bizim yazdığınız kodu inceleyip oluşturduğunuz algoritmanın verimliliğine göre karar vermek gibi bir niyetimizin olmaması.Giriş dosyaları oluşturup çıkış dosyalarını kontrol eden uygulama hazır bekliyor.

3. Bu problem için çok uğraştık. (Kesinlikle bir yerden ´esinlenme´dik, biz yazdık.) Mrs.Johnson hiç benzini olmayan ya da depoyu doldurmayacak kadar kalmış şehirlerimizi gezecek. Dikkat edin yolda kalmasın. İkinci sorudaki giriş ve çıkış dosyalarının tam tutması koşulu tamamen tesadüf eseri burada da geçerlidir.
0
FZ
Herhangi bir programlama dilini (detaylı olarak) bilmenizi beklemeyen bir örnek:

TÜBİTAK 2003 Ulusal Bilgisayar Bilimleri Olimpiyadı 1. Aşama Soruları:

http://www.tubitak.gov.tr/bayg/olimpiyat/2003/bilsayar_soru.pdf

Görüş belirtmek için giriş yapın...

İlgili Yazılar

15 Mart, Fatih Üniversitesi, Linux Semineri

hcg

Fatih Üniversitesi Kariyer Kulübü ve LKD Seminer Çalışma Grubu ortak çalışması. Kariyer Günleri kapsamında, 15 Mart Pazartesi günü, 11.30-13.00 arasında, Fatih Üniv. D Blok Konferans Salonunda, Enver Altın tarafından "Linux'u ne kadar tanıyoruz?" başlıklı bir seminer verilecek.

İlgilenen herkes davetlidir.

Başlıyoruz... 3... 2... 1...

tongucyumruk

Aslında bu yıl biraz daha erken yapacaktık ama, CERN'deki LHC'nin açılışını gölgede bırakmak istemedik. Evet, çeşit çeşit konukları, sunumları, atölyeleri ve çeşit çeşit oyunları ile Özgür Yazılım ve Linux Günleri yarın başlıyor.

Kimler var, hala sıkılmadıysanız hatırlatalım: Ubuntu'dan Matt Zimmerman, Google'dan Leslie Hawthorn, Mozdev'den Brian King, Fazlamesai'nin gizemli ismi FZ, güvenlik dünyasının tanınan ismi Hüzeyfe Önal... Kısacası herkes orada olacak. Ya siz?

Linux Semineri -> Linux: Avantajlar ve Fırsatlar

loker

Linux Kullanıcıları Derneği, 28 Mayıs Cumartesi günü Elektrik Mühendisleri Odası İstanbul Şubesi'nde bir seminer düzenliyor. Görkem Çetin'in Linux'un yarattığı avantajları ve fırsatları anlatacağı seminer, saat 13:30'da başlıyor. Katılım her zaman olduğu gibi herkese açık. [ Detaylı Bilgi ]

Linux Semineri (Ankara) : Linux`ta Oyunlar

dfisek

Linux Kullanıcıları Derneği, Çarşamba günü Ankara Üniversitesi'nde bir linux semineri düzenliyor. 18.30'da başlayacak olan seminerde, linux için geliştirilen çeşitli popüler oyunlar anlatılacak. "Penguenler bile eğlenmek ister". - Detaylı Bilgi -

Haliç Üniversitesi Linux Semineri

hsahbal

Haliç Üniversitesi Haliç Yerleşkesi'nde 31 Mart Pazartesi günü 15:00-17:00 arasında Enver Altın tarafından "Linux ve Özgür Yazılıma Giriş" konulu seminer verilecektir.