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.

Hiç yorum yok:

Yorum Gönder

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. ...