Kaç tane 2020 olduğunu sayma yöntemlerini uygulayarak buldum
Ama bir algoritma kuramadım varmıdır bir yol gösterecek
"Merkezden başlayıp"daki merkez ne?
Aslında o merkeze takılmayalım örnekler üzerinden anlaşılıyor demek istediği tüm 2020leri bulcaz
(Orada demek istediği herhalde her 2 bir altıgenin merkezinde ya o olsa gerek)
Aslında 2den başlıyoruz komşu 0 a gidiyoruz ondan komşusu olan 2ye (burada başladığımız 2ye de dönebiliriz) sonra oradan tekrar komşu 0 diyip bitiriyoruz
102 buldum ama kodunu yazmadım. Cevap belli mi yada bulduğumuz cevabı kontrol edebiliyor musunuz?
Bence az bulmuşsunuz.
Merkezdan başladığımızı varsaydım. Merkezden başlamazsak soruyu çözmek çok zor oluyor.
Bulunan 2020 leri sil.Bundan önce kaç tane sıfır ve kaç tane 2 olduğunu biliyorsan farklı bir yol deneyebilirsin.Yada OpenCv kendi bulsun
En zor yöntem bu olurdu herhalde.
Kodu yazıyorum bu arada, atarım.
Ben insan gücü ile karşılaştırma yapmak istemiştim
102den fazla merkezdekilerde 108tane oluyor
Asıl sıkıntı şekli oluşturmakda, kontrol işlemi kolay olur.
Opencv nedir bilgim yok
2020leri silmeyle olmaz çünkü aynı rakamları tekrar tekrar kullanıcaz
Ben iki kısımdada zorlandım altıgen yerine kare olsa çok daha kolay olurdu algoritma bencede
Yapmamız gereken her hücreye yanındaki hücrelere işaret eden bir nitelik eklemek.
Görüntü işleme kütüphanesi
@Orhan61 yanlış anlamayın sadece merakımdan soruyorum bu soruları nerden buluyorsunuz?
Cevap kaç bu arada? 1024
mü?
class Cell(list):
def __init__(self, t):
self.t = t
list.__init__(self)
def connect(self, l): # üç hücreyi birbirine bağlama
k, n = l
self.append(k)
self.append(n)
k.append(self)
k.append(n)
n.append(k)
n.append(self)
def __repr__(self):
return f"{self.__class__.__name__}({self.t})"
def build(l):
cells = [[Cell(j) for j in i] for i in l]
for satır_index, satır in enumerate(cells[:-1]):
alt_satır = cells[satır_index+1]
for i, c in enumerate(satır):
c.connect(alt_satır[i:i+2])
other = cells
cells = [[Cell(j) for j in i] for i in l[:-1]]
for satır_index, satır in enumerate(cells[:-1]):
alt_satır = cells[satır_index+1]
for i, c in enumerate(satır):
c.connect(alt_satır[i:i+2])
alt_satır = other[-1]
satır = cells[-1]
for i, c in enumerate(satır):
c.connect(alt_satır[i:i+2])
return [j for i in cells + other for j in i]
l = [(0, 0, 0, 0), (0,2,2,2,0), (0,2,0,0,2,0), (0,2,0,2,0,2,0)]
cells = build(l)
# buraya kadar şekli oluşturduk, şimdi kontrol ediyoruz
twos = [i for i in cells if i.t == 2]
check = lambda c, s = (0,2,0): sum(check(i, s[1:]) for i in c if i.t == s[0]) if len(s) > 1 else sum(1 for i in c if i.t == s[0])
print(sum(check(i) for i in twos))
Ben 648 bulmuştum eminim aslında ama daha doğru cevaplar açıklanmadı