İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

Python Maze Generator

lain iwakura - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
01/2019
Mesajlar:
8
Konular:
2
Teşekkür (Etti):
2
Teşekkür (Aldı):
6
Ticaret:
(0) %
18-04-2019 22:32
#1
Python Maze Generator
Daniel Shiffman'in Coding Challenges adlı video serisinde JavaScript ile yazdığı ettiği Maze Generator'ü Python kullanarak yeniden yazdım. Nasıl çalıştığını merak ediyorsanız, direk videoları izleyebilirsiniz ya da burayı okuyabilirsiniz.

dpaste: dpaste.com/066XDFN

Konu lain iwakura tarafından (18-04-2019 22:35 Saat 22:35 ) değiştirilmiştir.
Hichigo, Gbmdpof, Par4d0x1D, Zeref Teşekkür etti.
Gbmdpof - ait Kullanıcı Resmi (Avatar)
Kıdemli Yazılımcı
Üyelik tarihi:
09/2016
Mesajlar:
1.999
Konular:
157
Teşekkür (Etti):
197
Teşekkür (Aldı):
710
Ticaret:
(0) %
20-04-2019 23:21
#2
Elinize sağlık, merak ettiğim şey bu kodu videoyu izleyip mi yazdınız yoksa izlemeden mi? Her iki durumda da oldukça güzel olmuş kodunuz, tekrardan elinize sağlık.
---------------------
~humanity is overrated~
lain iwakura Teşekkür etti.
lain iwakura - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
01/2019
Mesajlar:
8
Konular:
2
Teşekkür (Etti):
2
Teşekkür (Aldı):
6
Ticaret:
(0) %
22-04-2019 00:19
#3
Alıntı:
Gbmdpof´isimli üyeden Alıntı Mesajı göster
Elinize sağlık, merak ettiğim şey bu kodu videoyu izleyip mi yazdınız yoksa izlemeden mi? Her iki durumda da oldukça güzel olmuş kodunuz, tekrardan elinize sağlık.
Konuda da belirttiğim üzere, video üzerine yaptığım bir şey. O yüzden, evet, videoyu izledikten sonra yazdım. Ama elinde sonunda implement edeceğim şey aşağıda yer alan algoritma olduğundan, izleyip izlememiş olmamın nasıl bir etkisi olacağını anlayamadım.


Teşekkür ederim.
Par4d0x1D - ait Kullanıcı Resmi (Avatar)
E-Mail onayı yapılmamış üye
Üyelik tarihi:
02/2012
Yaş:
18
Mesajlar:
259
Konular:
27
Teşekkür (Etti):
42
Teşekkür (Aldı):
550
Ticaret:
(0) %
22-04-2019 02:04
#4
Ben pek de beğendim. Birkaç öneride bulunacağım,
Kod:
is_valid = lambda i, j: True if not any([
            i < 0, 
            j < 0, 
            i > self.grid.rows - 1, 
            j > self.grid.cols - 1
        ]) else False
Bu kod parçacığında yer alan if-else satırı sadeleştirilebilir,
Kod:
is_valid = lambda i, j: not any([
            i < 0, 
            j < 0, 
            i > self.grid.rows - 1, 
            j > self.grid.cols - 1
        ])
şeklinde. Ne de olsa dönen Boolean değeri direkt olarak fonksiyon dönütüne yerleştirebiliriz. Sınıf hiyerarşisinde ayrı ayrı __repr__ ve __str__ metodlarına aynı işlem namına yer vermek yerine, yalnızca __repr__'ın üstüne yazman kafi. Sonuçta gördüğüm kadarıyla __str__ ile de nesnenin dizgisini yazdırıyorsun. Hücreleme mantığıyla her bir hücreyi ele alarak şekillendirme gayet hoş olmuş. Değişken ve fonksiyon isimlerinde tekrara düştüğünden, misal neighbours, hele de yorum satırına yer vermediğinden okunabilirlikten taviz vermişsin.
Kod:
neighbours = [self.grid[i][j] for i, j in self.neighbours(self.curr_c)]
        neighbours = [n for n in neighbours if n.visited == False]
Satırı, zaten neighbours isimli fonksiyonun uzantısı niteliğinde olduğundan, tekrara düşmeksizin fonksiyon içerisinde barındırmak daha temiz olacaktır, çünkü herhangi bir başka yerde ilgili fonksiyonu kullanmamışsın.

Ve bunun gibi 1-2 minik, önemsiz not daha. Bunların tamamının zorlama, kuru laf olduğunu belirterek ellerine sağlık diyorum. Gayet güzel bir algoritmayı bir dile en olası haliyle uyarlamışsın.
lain iwakura Teşekkür etti.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı