- 7 Şub 2012
- 5,018
- 24
Merhabalar tht üyeleri, sansasyonel bir konu ile birlikteyiz.
Şimdi neden böyle bir konu açıyorum? Daha önce açtığım yarışma konusundan sonra yeni bir yarışma yapmanın vakti geldi. ( eski yarışma konusu : http://www.turkhackteam.org/python/1497935-algoritma-sorusu-ihan3t.html )
Bu konuyu sadece derinlemesine yazılım ile ilgilenen gerçek yazılımcılar çözümleyebilir. O yüzden böyle bir başlık seçtim.
Soruyu ilk okuduğunuzda aslında çok basit gelebilir. Fakat işin içine dalıp yapmaya çalıştığınızda zorluğunu anlayacaksınız.
Arkadaşlar bildiğiniz üzere forumda herkes kendisini "yazılımcı, hacker, programcı, webci, android uzmanı, çok bilgili kişi" şeklinde tanıtıyor. Fakat açılan konulara içeriklere baktığımızda teknik anlamda boş şeyler oluyorlar (hepsi değil tabiki, fakat malesef birçoğu..).
Bu yarışmada, gerçekten ilgilenen / bilgili kişiler kendilerini test ederek pratik yapacaklar, bilmeyenler ise yazılımda önemli bir konuyu öğrenmiş olacaklar. Herkes için faydalı bir yarışma olacak.
Şimdi gelelim sorumuza... Aslında basit olan sorumuz şu şekilde : "vereceğim matematik işlemini, içerdiği expressionları parse ederek yorumlayıp işlem yapan bir program yazın".
Anlamayanlar için şöyle bir örnek vereyim :
"27 + 3 * (15 - 8 / 2) - 4" bu işlemi parse ederek, matematiksel işlem önceliği kurallarına uygun bir şekilde çalıştıran bir program yazın. Yazılan bu program, verilen işlem değiştirildiğinde de düzgün çalışabilmeli, farklı 4 işlem biçimlerini matematiksel işlem önceliğine göre parse edebilmeli.
Önemli : Python da "eval" kullarak veya başka bir dilde buna benzer bir yöntem ile yapılan işlem bu sorunun çözümü değildir. Hazır kütüphane/tool kullanmak yasaktır. Soruyu "parse" ederek çözmeniz gerekmekte.
Forumda "sözde yazılımcı" olduğunu başkalarının gözüne sokan arkadaşları bu güzel konuya davet ederek kendilerini kanıtlama fırsatı sunabilirsiniz.
Sorunun çözümünü anlatan uzunca bir konu yazacağım, sorunun çözümü de zaman alacağı için hafta sonuna kadar katılanlara vakit veriyorum. Pazar akşamı/gecesi çözümü anlatıp sonrasında bu konu üzerine eğitim yapacağım.
Sorunun kabul gören tek bir cevabı vardır.
Katılan herkese şimdiden başarılar..
Şimdi neden böyle bir konu açıyorum? Daha önce açtığım yarışma konusundan sonra yeni bir yarışma yapmanın vakti geldi. ( eski yarışma konusu : http://www.turkhackteam.org/python/1497935-algoritma-sorusu-ihan3t.html )
Bu konuyu sadece derinlemesine yazılım ile ilgilenen gerçek yazılımcılar çözümleyebilir. O yüzden böyle bir başlık seçtim.
Soruyu ilk okuduğunuzda aslında çok basit gelebilir. Fakat işin içine dalıp yapmaya çalıştığınızda zorluğunu anlayacaksınız.
Arkadaşlar bildiğiniz üzere forumda herkes kendisini "yazılımcı, hacker, programcı, webci, android uzmanı, çok bilgili kişi" şeklinde tanıtıyor. Fakat açılan konulara içeriklere baktığımızda teknik anlamda boş şeyler oluyorlar (hepsi değil tabiki, fakat malesef birçoğu..).
Bu yarışmada, gerçekten ilgilenen / bilgili kişiler kendilerini test ederek pratik yapacaklar, bilmeyenler ise yazılımda önemli bir konuyu öğrenmiş olacaklar. Herkes için faydalı bir yarışma olacak.
Şimdi gelelim sorumuza... Aslında basit olan sorumuz şu şekilde : "vereceğim matematik işlemini, içerdiği expressionları parse ederek yorumlayıp işlem yapan bir program yazın".
Anlamayanlar için şöyle bir örnek vereyim :
"27 + 3 * (15 - 8 / 2) - 4" bu işlemi parse ederek, matematiksel işlem önceliği kurallarına uygun bir şekilde çalıştıran bir program yazın. Yazılan bu program, verilen işlem değiştirildiğinde de düzgün çalışabilmeli, farklı 4 işlem biçimlerini matematiksel işlem önceliğine göre parse edebilmeli.
Önemli : Python da "eval" kullarak veya başka bir dilde buna benzer bir yöntem ile yapılan işlem bu sorunun çözümü değildir. Hazır kütüphane/tool kullanmak yasaktır. Soruyu "parse" ederek çözmeniz gerekmekte.
Forumda "sözde yazılımcı" olduğunu başkalarının gözüne sokan arkadaşları bu güzel konuya davet ederek kendilerini kanıtlama fırsatı sunabilirsiniz.
Sorunun çözümünü anlatan uzunca bir konu yazacağım, sorunun çözümü de zaman alacağı için hafta sonuna kadar katılanlara vakit veriyorum. Pazar akşamı/gecesi çözümü anlatıp sonrasında bu konu üzerine eğitim yapacağım.
Sorunun kabul gören tek bir cevabı vardır.
Katılan herkese şimdiden başarılar..