27 Aralık 2018 Perşembe

Tavlada En İyi Hamleyi Bulma

Elimizde bir tavla tahtası var. Bu tahta üzerindeki her üçgen saat yönüne doğru numaralandırılmış ve üzerinde rasgele yerleştirilmiş pullarımız var. Hangi üçgende kaç tane pul olduğunu aşağıdaki gibi bir dictionary içerisinde anlatabiliyoruz.

checkers = {1: 3, 6: 1, 10: 2, 12: 1, 13: 1}

Bu dictionary aşağıdaki resimdeki gibi bir dağılımı gösteriyor.

Sizden istediğimiz pulların pozisyonlarını, ve atılan iki zarın değerini girdi olarak alan ve bulabildiği hamleleri bulup puanlayarak 0 dan büyük puanı olan hamleleri geri döndüren bir fonksiyon.

Örnek girdi:

def find_moves(checkers, dice1, dice2)
    ...
    ...
    ...

print(find_moves(checkers, 6, 1))

Örnek Çıktı:

Üçlü tüplerden oluşan bir liste çıkmasını bekliyoruz. İlk hamleyi gösteren bir tuple, ikinci hamleyi gösteren bir tuple, iki hamlenin yarattığı puanı gösteren bir integer.

>>> (((1, 7), (6, 7), 3), ..., ..., ...)
       +       +      +
       |       |      +--> Bu hamlenin kaç puan ettiği.
       |       +---------> 6 numaralı üçgendeki pulu 7 ye
       +-----------------> 1 numaralı üçgendeki pulu 7 ye                

 Peki bir hamlenin iyiliğini nasıl ölçeceğiz?

  • önemli kapılar: 5, 6, 7, 8, 17, 18, 19, 20
  • Bir kapı kapatmak +1 puan, eğer önemli kapı ise ise +2
  • Bir kapı açmak -1 puan, eğer önemli kapı ise -2
  • Bir taş açığa çıkarmak -1 puan.
  • Bir taşı açıktan kurtarmak +1 puan.

Türkçe Kelimeyi Hecelerine Ayırma

  • Türkçede kelime içinde iki ünlü arasındaki ünsüz, kendinden sonraki ünlüyle hece kurar.

  • Kelime içinde yan yana gelen iki ünsüzden ilki kendinden önceki ünlüyle, ikincisi kendinden sonraki ünlüyle hece kurar.

  • Kelime içinde yan yana gelen üç ünsüz harften ilk ikisi kendinden önceki ünlüyle, üçüncüsü kendinden sonraki ünlüyle hece kurar.

Yukarıda verilen kurallardan faydalanarak verilen kelimeyi hecelerine ayırarak yazan fonksiyon yazın.

Örnek Girdi

#!python
kelime = "kuyruksallayangiller"

Örnek Çıktı

#!python
kuy - ruk - sal - la - yan - gil - ler"

Listeyi Tersine Çevirme

Elimizde belirsiz uzunlukta bir liste var. Bu liste içerisindeki elemanları tersine çevirmek istiyoruz. Yeni bir liste oluşturmadan ve reverse gibi hazır bir fonksiyon kullanmadan bunu gerçekleştirmek istiyoruz.

Örnek Girdi

#!python

liste = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Yazacağın fonksiyon çalıştıktan sonra listenin durumu şu şekilde olmalı:

liste = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

Kolay gelsin.

Listedeki Tekrar Eden Sayıları Bulma

Elimizde tamsayılardan oluşan bir liste var. Bu listenin içerisindeki tekrar eden sayıların raporunu çıkaran kod istiyoruz.

Örnek girdi:

#!python

liste = [1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 5, 5, 5, 5]

Çıktı:

#!text

1: 3
2: 2
3: 4
5: 4

Kolay gelsin.

Dik üçgen bulma algoritması

Pisagor teoremine göre bir dik üçgende dik kenarların uzunluklarının toplamı dik açının karşısındaki kenarın uzunluğunun karesine eşittir. ...