Skip to content

Latest commit

 

History

History
63 lines (54 loc) · 2.53 KB

File metadata and controls

63 lines (54 loc) · 2.53 KB

PYTHON CHALLENGE #7

Bu meydan okuma sayfasında sadece bir fotoğraf görüyoruz. Meydan okumalar gitgide zorlaşıyor. Bu fotoğrafın üzerinde gri bir alan var. Görünüşe göre fotoğraf işleme ile ilgili modüller kullanmamız gerekiyor.

pip3 install pillow

Bu fotoğrafı sayfadan indirip modülümüzdeki metotlar yardımıyla açalım.

from io import BytesIO
from PIL import Image

im = Image.open('oxygen.png')

Gri şerit fotoğrafın tam ortasında bulunuyor. Bu nedenle bu bölüme ulaşmak için piksellerin orta satırına ulaşmamız gerekiyor.

from io import BytesIO
from PIL import Image

im = Image.open('C:/Users/Osman Yasir/Desktop/ys/oxygen.png')
serit = list()

for i in range(im.width):
    serit.append(im.getpixel((i, im.height / 2)))

Yukarıdaki kodda serit dizisini ekrana bastığımızda tekrarlanan demetler göreceksiniz. Her demetten 7 tane olduğu için bunlardan yalnızca bir tanesini kullanmak için:

serit = serit[::7]

Bu dizideki demetlerdeki elemanlar sırasıyla RGB renk sistemindeki r, g, b ve alpha değerlerini temsil ediyor. Bu satırın bir kısmı gri şerit iken son bölümde gri olmayan pikseller bulunmakta. Bu bağlamda yalnızca gri olanları alalım. RGB renk sisteminde gri renklerin r, g ve b değerleri eşittir. Bu değerlerden herhangi birini alıp bir diziye aktaralım.

from io import BytesIO
from PIL import Image

im = Image.open('C:/Users/Osman Yasir/Desktop/ys/oxygen.png')
serit = list()

for i in range(im.width):
    serit.append(im.getpixel((i, im.height / 2)))

serit = serit[::7]

n = list()

for r, g, b, a in serit:
    if r == g == b:
        n.append(r)

Elimizde [0, 255] aralığındaki sayılardan oluşan bir dizi var. Bu sayıları ASCII karakterlerine çevirelim. Bunun için chr() fonksiyonunu kullanacağız. Bu fonksiyonu dizideki her bir elemana uygulayıp tekrar diziye aktarmak için ise map() fonksiyonunu kullanalım.

m = map(chr, n)

En son elde ettiğimiz dizideki her bir elemanı yan yana ekrana bastırdığımızda aşağıdaki çıktıyı elde ediyoruz.

smart guy, you made it. the next level is [105, 110, 116, 101, 103, 114, 105, 116, 121]

Verilen dizideki her bir karakter için aynı işlemi uygularsak sonraki bölümün ismine ulaşacağız. Kodumuz son olarak şöyle olur:

dizi = [105, 110, 116, 101, 103, 114, 105, 116, 121]
yazi = map(chr, dizi)

for i in yazi:
    print(i, end='')

Sonraki meydan okuma: (integrity.html)