19 Nisan 2014 tarihinde Eskişehir Osmangazi Üniversitesi‘nde Bilişim Günleri etkinliği gerçekleştirildi, ben de Yazılımcı Bakış Açısıyla Windows Phone 8.1 Yenilikleri başlıklı oturumum ile etkinlikte yer aldım.
Beni bu etkinliğe davet eden sevgili Özlem Doğan (MSP)‘a ve etkinliğe katılan tüm öğrenci arkadaşlarıma teşekkür ediyorum
Euler serisinin onbirinci yazısında, Project Euler’in 11. sorusunu çözeceğiz;
Orjinal Soru; In the 20×20 grid below, four numbers along a diagonal line have been marked in red. 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70 67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21 24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72 21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66 88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69 04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36 20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16 20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54 01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48 The product of these numbers is 26 × 63 × 78 × 14 = 1788696. What is the greatest product of four adjacent numbers in the same direction (up, down, left, right, or diagonally) in the 20×20 grid?
Türkçesi; Aşağıdaki 20×20 boyutundaki tabloda çapraz yerleştirilmiş 4 rakam kırmızı renkle işaretlenmiştir. 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70 67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21 24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72 21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66 88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69 04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36 20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16 20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54 01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48 Bu 4 rakamın çarpımı 26 × 63 × 78 × 14 = 1788696. Bu 20×20 boyutundaki tablodaki birbirini takip eden 4 rakamın (yukarıdan-aşağıya, soldan-sağa, çapraz) çarpımlarının en büyüğü kaçtır?
Önce siz çözmeyi deneyin, çözemezseniz;
Not : Bu makalede kullandığım kodların bazılarını internette yaptığım araştırmalar sonucunda yazdım, benzer çözümlere başka sitelerde de rastlayabilirsiniz ;)
22 Mart 2013 tarihinde düzenlenen etkinlikte Muammer Benzeş ve Ahmet Sertay Halka ile birlikte İstanbul Üniversitesi‘ndeydik.
Etkinliği gerçekleştirmemizi sağlayan hocamız İrfan Şimşek‘e ve etkinliğe katılan tüm öğrenci arkadaşlara çok teşekkür ederiz.
Windows Phone 8 için geliştirdiğiniz uygulamanın veya Button, Image gibi nesnelerin arkaplan görselinin periyodik olarak değişmesini isteyebilirsiniz. Böylece uygulamanızın içerisinde sürekli olarak güncellenen bir bölüm oluşturabilirsiniz.
Microsoft‘un geliştirdiği arama motoru olan Bing, ana arama ekranının arkaplan görselini periyodik olarak arkaplan görselini değiştirir.
Öncelikle Bing‘in arkaplan görselini nasıl değiştirdiğini anlamamız lazım. Eğer Bing tarayıcınızda açıldıktan sonra yaptığı isteklere bakacak olursanız, http://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1 adresine bir çağrı yaptığını görebilirsiniz.
Bu isteğin parametreleri;
format, bu parametre ile dönüş cevabının xml formatında olması sağlanıyor idx, bu parametre ile Bing’in arkaplan görsellerinden kaçıncı sıradakinin alınacağı belirleniyor n, bu parametre ile kaç görselin bilgisinin alınacağı belirleniyor
http://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1 adresine yapacağımız istek ile Bing‘in ilk sıradaki arkaplan görsellerinin bilgilerini xml formatında elde edeceğiz.
Öncelikle MainPage.xaml dosyasını aşağıdaki gibi güncelleyelim;
<phone:PhoneApplicationPage x:Class=”BingBackground.MainPage” xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” xmlns:phone=”clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone” xmlns:shell=”clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone” xmlns:d=”http://schemas.microsoft.com/expression/blend/2008” xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006” mc:Ignorable=”d” FontFamily=”{StaticResource PhoneFontFamilyNormal}” FontSize=”{StaticResource PhoneFontSizeNormal}” Foreground=”{StaticResource PhoneForegroundBrush}” SupportedOrientations=”Portrait” Orientation=”Portrait” shell:SystemTray.IsVisible=”True”>
<StackPanel>
<StackPanel.Background>
<ImageBrush x:Name="imgBackground"></ImageBrush>
</StackPanel.Background>
</StackPanel>
</phone:PhoneApplicationPage></pre>
Böylece StackPanel nesnesinin arkaplanını imgBackground isimli ImageBrush nesnesi ile güncelleyebileceğiz.
MainPage.xaml.cs dosyasında yeralan MainPage class’ının constructor‘ında LoadBackgroundImage() method’unu çağıralım. LoadBackgroundImage() method’unda WebClient sınıfından yeni bir örnek oluşturup http://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1 adresine istek yapacağız;
private async void LoadBackgroundImage() { WebClient client = new WebClient(); client.DownloadStringCompleted += (sender, e) => { if (e.Error == null && !string.IsNullOrEmpty(e.Result)) { var doc = XDocument.Parse(e.Result); var url = (from node in doc.Descendants("url") select node.Value).FirstOrDefault(); var uri = new Uri("http://www.bing.com" + url); client.OpenReadCompleted += (s, args) => { var image = new BitmapImage(); image.SetSource(args.Result); imgBackground.ImageSource = image; }; client.OpenReadAsync(uri); } }; client.DownloadStringAsync(new Uri("http://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1")); } DownloadStringAsync() method'unu kullanarak yaptığımız isteğin cevabını DownloadStringCompleted event'i ile alabiliyoruz. string tipindeki cevabın *boş* veya *hatalı* olmadığını kontrol ettikten sonra XDocument sınıfının **static** Parse() method'unu kullanarak *parse* ediyoruz. *url* isimli **element**'in içinde yeralan arkaplan görseli adresinin başına *http://www.bing.com* bilgisini ekliyoruz, böylece **Bing**'in arkaplan görselinin adresini tam olarak elde ediyoruz. Aynı *WebClient* değişkenini kullanarak tam adresini elde ettiğimiz görsel dosyasına ulaşmak için OpenReadAsync() method'unu çağırıyoruz ve cevabı OpenReadCompleted event'i ile elde ediyoruz. *OpenReadCompleted* event'i içerisinde elde ettiğimiz Stream ile yeni bir BitmapImage nesnesini dolduruyoruz ve *MainPage.xaml* içerisinde tanımladığımız *imgBackground* nesnesinin görseli olarak belirliyoruz. Böylece **Bing**'in arkaplan görseli değiştikçe bizim uygulamamızda ilgili alanın görseli değişecektir.
Global Game Jam 2014 etkinliği 24 Ocak 2014 - 26 Ocak 2014 tarihleri arasında İzmir Ekonomi Üniversitesi Konferans Salonu‘nda gerçekleştirildi.
Ben de konuşmacı , mentor ve juri üyesi sıfatları ile etkinliğe katıldım ve açıkçası çok keyifli zaman geçirdim.
Global Game Jam nedir?
Global Game Jam, IGDA (International Game Developers Association - Uluslararası Oyun Geliştiricileri Derneği) Eğitim Odak Grubu‘nun yönlendirmesiyle ortaya çıkan, tüm dünyada eş zamanlı gerçekleştirilen bir oyun geliştirme etkinliğidir.
GGJ dünyada oyun geliştirilmesi amacıyla birçok öğrenciyi, profesyoneli ve akademisyeni bir araya getiren dünya genelindeki en büyük oyun geliştirme organizasyonudur.
GGJ 2014 etkinliğinde, dünya genelinde 72 ülkede 488 etkinlik alanında 23198 katılımcı ile 4290 oynanabilir oyun yalnızca 48 saat içerisinde geliştirilmiştir. GGJ etkinliğine ev sahipliği yapan etkinlik merkezleri yerel oyun sektörünün gelişmesine katkı sağlarken, katılımcılara çeşitli açılardan faydalar sağlamaktadır.
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484