03 Haz 2014

Bowling Game Kata

Ömer Özkan tarafından hazırlanmıştır.

Robert C. Martin (Uncle Bob)’un hazırladığı Bowling oyunu katasıdır.

Bowling oyununun kuralları:

Oyunda toplamda 10 frame bulunmaktadır. Her frame de ise 10 tane pini vurmak için 2 atış hakkı bulunmaktadır. Her frame’de vurulan toplam pin sayısı skoru gösterir. Her frame’in başında eğer ilk atışta 10 adet pin birden vurulursa strike yapılmış olunur ve sonraki iki atışta vurulan pin sayısı kadar bonus skor kazanılır. Her frame’de 10 pin iki atışta vurulursa spare yapılmış olunur ve sonraki atıştaki vurulan pin sayısı kadar bonus kazanılır. Son frame’de strike yapılırsa 2, spare yapılırsa 1 atış hakkı daha kazanılır. Bowling’de en yüksek skor, 12 strike ile 300’dür.

  Bowling Kata Kodları (1.4 KiB, 1.003 hits)

3 Comments Continue reading

27 Eki 2012

Binary Search Kata

01 Eyl 2012

Insertion Sort Kata

11 Ağu 2012

Prime Factor Kata

08 Ağu 2012

Faktoriyel (Factorial) Kata .Net C#

Bu kata Bayram Üçüncü tarafından gönderilmiştir.

0 Comments Continue reading

21 Tem 2012

Stack Kata

Bu kata basit bir stack implementasyonunu göstermektedir. push() metodu stacke bir veri eklemek, pop() metodu stackde bulunan bir veriyi edinmek, top() metodu stackin en tepesindeki veriyi elde etmek ve find() metodu stack içindeki bir veriyi bulmak için kullanılır. İmplementasyon test güdümlü ve aşağıdaki testleri oluşturarak yapılmaktadır:

new_stack_is_empty
yeni oluşturulan bir stack boştur

after_one_push_stack_size_should_be_one
bir push yapıldıktan sonra stack büyüklüğü bir olur

after_one_push_and_one_pop_stack_size_should_be_zero
bir push ve akabinde bir pop yapıldıktan sonra stack boşalmış olur

when_pushed_past_limit_stack_overflows
stack kapasitesini aşan bir push stacki taşırır (overflow)

when_empty_stack_popped_stack_underflows
boş bir stack üzerinde pop işlemi yapılırsa boşalma (underflow) hatası oluşur

when_one_is_pushed_one_is_popped
stacke bir rakamı eklenirse, pop bir rakamını geri döndürür

when_one_and_two_are_pushed_two_and_one_are_popped
stacke bir ve iki rakamları eklendiğinde, pop ile iki ve bir değerleri geri alınır

when_creating_stack_with_negativ_size_stack_should_throw_illegal_capacity
bir stack negatif kapasite değeri ile oluşturulmak istendiğinde geçersiz kapasize (illegal capacity) hatası oluşur

when_stack_created_with_zero_capacity_any_push_should_overlow
bir stack sıfır kapasite değeri ile oluşturulduğunda ve bu stacke bir veri eklenmek istendiğinde taşma (overflow) hatası oluşur

when_one_is_pushed_one_is_on_top
bir rakamı stacke eklendiğinde bu değer stackin en tepesinde (top) yer alır

when_stack_is_empty_top_throws_empty
boş bir stack üzerinde top işlemi yapıldığında bu stack boştur hatası oluşur

when_zero_capacity_stack_top_throws_empty
sıfır kapasiteli bir stack üzerinde top işlemi yapıldığında bu stack boştur hatası oluşur

given_stack_with_one_and_two_pushed_find_one
bünyesinde bir ve iki rakamlarını barındıran bir stack içinde find metodu ile bir rakamını ara

given_stack_with_no_two_find_two_should_return_null
bünyesinde iki rakamını olmayan bir stack içinde find ile iki rakamı arandığında null değeri geri döner

  Stack Kata Kodu (249.7 KiB, 1.328 hits)

EOF (End Of Fun)
Özcan Acar

0 Comments Continue reading

21 Tem 2012

FizzBuzz Kata

FizzBuzz katasında ekranda üç ve üçün katları için fizz, beş ve beşin katları için buzz, hem üç hem de beşin katları için fizzbuzz kelimesi görüntülenir. Üç ve beşin katları olmayan rakamlar oldukları şekilde görüntülenir.

  FizzBuzz Kata Kodu (232.7 KiB, 1.447 hits)

EOF (End Of Fun)
Özcan Acar

3 Comments Continue reading

19 Tem 2012

Roma Rakamları Katası

Bu katada roma rakamlarının TDD (Test Driven Development – Test Güdümlü Yazılım) ile sayısal rakamlara dönüştürüldüğü uygulama geliştirilmektedir. Bu transformasyon için geçerli kurallar bu Vikipedi sayfasında yer almaktadır.

  Roma Rakamları Kata Kodu (487.1 KiB, 1.651 hits)

EOF (End Of Fun)
Özcan Acar

3 Comments Continue reading

17 Tem 2012

Video Store Kata

Video Store Martin Fowler’in Refactoring isimli kitabında kullandığı bir örnek uygulama. Buradan ve Robert C. Martin’in CleanCoders.com‘da yer alan gösterimlerinden esinlenerek bu katayı hazırladım. Bu katayı kataların anası olarak tanımlıyorum, çünkü bu kata sık kullanılan birçok yeniden yapılandırma metodunu ihtiva ediyor.

  Video Store Kata Kodu (487.8 KiB, 1.289 hits)


EOF (End Of Fun)
Özcan Acar

0 Comments Continue reading

14 Tem 2012

Koşullu Mantığın Komut İle Değiştirilmesi (Replace Conditional Dispatcher With Command)

Aşağıdaki tarzda if/else bloklarıyla sıkça karşılaşırız. Eğer böyle yapılar Koşullu Mantığın Komut İle Değiştirilmesi (Replace Conditional Dispatcher With Command) refactoring metodu ile yok edilmesse, kodun bakımı ve geliştirilmesi zaman içinde zorlaşır. Bu örnekte görüldüğü gibi yeni bir locale ile işlem yapabilmek için koda yeni bir else if bloğunun eklenmesi gereklidir, yani uygulamaya yeni bir davranış biçimi kazandırabilmek için kodun değiştirilmesi gerekmektedir. Bu Açık Kapalı Tasarım Prensibi (Open Closed Principle – OCP) ile uyumlu değildir. Uygulamayı OCP tasarım prensibi ile uyumlu hale getirmek için Koşullu Mantığın Komut İle Değiştirilmesi (Replace Conditional Dispatcher With Command) refactoring metodu uygulanır.


if (locale != null && locale.equals("de_DE")) {
	taxRate = 19.00;
	final Double tax = Double.valueOf((price / 100) * taxRate);
	result = Double.valueOf(tax.doubleValue() + price);
} else if (locale != null && locale.equals("tr_TR")) {
	taxRate = 18.00;
	final Double tax = Double.valueOf((price / 100) * taxRate);
	result = Double.valueOf(tax.doubleValue() + price);
} else if (locale != null && locale.equals("at_AT")) {
	taxRate = 20.00;
	final Double tax = Double.valueOf((price / 100) * taxRate);
	result = Double.valueOf(tax.doubleValue() + price);
}

  Koşullu Mantığın Komut İle Değiştirilmesi Kata Kodu (976 bytes, 1.307 hits)

EOF (End Of Fun)
Özcan Acar

3 Comments Continue reading
http://kodkata.com/wp-content/themes/selecta