1) Dosya G/Ç, Dizgi
Argüman olarak sağlanan dosya içerisinde ki kelime sayısını bulan işlevi gerçekleyiniz. Bu işlev,
kabukta yer alan $ wc -c file komutunun ilkel bir gerçeklemesi olacaktır.
İpucu: dosyayı açmak için fopen, dosyadan bir satır okumak için readline ve kelimeleri ayırmak
için split işlevi kullanılabilir.
def mywc(dosya_adi):
2) Döngü, Liste
Kullanıcıdan sürekli sayı okuyan ve bunu listeye yığan, -1 e rastladığında değer okumayı
sonlandıran. Okuduğu değer sayısını ve toplamını ekrana yazarak sonlanan programı yazınız.
def main():
3) Dizgi
a) Argüman olarak aldığı dizgiyi iki yana yaslayan/hizalayan işlevi yazınız. Satır genişliği olarak 70
karakter alabilirsiniz.
İpucu: gerekli miktarda boşluk kullanılacaktır. Kelimeleri ayırmak için split, dizgi uzunluğunu
öğrenmek için len işlevi kullanılabilir.
def iki_yana_hizala(str):
b) a şıkkında ki işlevin tam tersi göreve sahip işlevi yazınız. İki yana hizalı olarak dizgide ki fazlalık
boşlukları gidererek sola hizalı metni üreten işlevi gerçekleyiniz.
İpucu: kelimeleri birleştirmek için join işlevi kullanılabilir.
def sola_hizala(str):
4) İçiçe döngü, matris
a) Argüman olarak iki boyutlu matris alan (ki matrisin değer aralığı 0-255 arasındadır), ve bu matris
içerisinde 128 değerinden küçük olanları 0, diğerlerini 1 yapan eşikleme işlevini yazınız. Bu
durumda çıkış matrisi ikil matris olacaktır.
İpucu: içiçe iki döngü kullanmanız beklenmektedir.
def matris_esikle(matris):
b) Bir önceki aşamada gerçekleştirilen eşikleme işlevinden geçen matris, sadece 0 ve 1
değerlerinden oluşacaktır. Bu matris içerisinde ki 1 leri hapsedecek en küçük dikdörtgen
koordinatlarını döndüren işlevi gerçekleyiniz.
Bu durumda minimum dikdörtgen (1,1)-(3,3) olacaktır.
5) Bonus
Yukarıda yer alan sorulardan (1-4) herhangi bir tanesini Ruby programlama dilini kullanarak
çözünüz. Sınav 100p üzerinden değerlendirilecektir. Toplam puanınız 100'ü geçerse 100'e
düşürülecektir.
1) Dosya G/Ç, Dizgi Argüman olarak sağlanan dosya içerisinde ki kelime sayısını bulan işlevi gerçekleyiniz. Bu işlev, kabukta yer alan
$ wc -c file
komutunun ilkel bir gerçeklemesi olacaktır.İpucu: dosyayı açmak için
fopen
, dosyadan bir satır okumak içinreadline
ve kelimeleri ayırmak içinsplit
işlevi kullanılabilir.def mywc(dosya_adi):
2) Döngü, Liste
Kullanıcıdan sürekli sayı okuyan ve bunu listeye yığan, -1 e rastladığında değer okumayı sonlandıran. Okuduğu değer sayısını ve toplamını ekrana yazarak sonlanan programı yazınız.
def main():
3) Dizgi
a) Argüman olarak aldığı dizgiyi iki yana yaslayan/hizalayan işlevi yazınız. Satır genişliği olarak 70 karakter alabilirsiniz.
İpucu: gerekli miktarda boşluk kullanılacaktır. Kelimeleri ayırmak için
split
, dizgi uzunluğunu öğrenmek içinlen
işlevi kullanılabilir.def iki_yana_hizala(str):
b) a şıkkında ki işlevin tam tersi göreve sahip işlevi yazınız. İki yana hizalı olarak dizgide ki fazlalık boşlukları gidererek sola hizalı metni üreten işlevi gerçekleyiniz.
İpucu: kelimeleri birleştirmek için
join
işlevi kullanılabilir.def sola_hizala(str):
4) İçiçe döngü, matris
a) Argüman olarak iki boyutlu matris alan (ki matrisin değer aralığı 0-255 arasındadır), ve bu matris içerisinde 128 değerinden küçük olanları 0, diğerlerini 1 yapan eşikleme işlevini yazınız. Bu durumda çıkış matrisi ikil matris olacaktır.
İpucu: içiçe iki döngü kullanmanız beklenmektedir.
def matris_esikle(matris):
b) Bir önceki aşamada gerçekleştirilen eşikleme işlevinden geçen matris, sadece 0 ve 1 değerlerinden oluşacaktır. Bu matris içerisinde ki 1 leri hapsedecek en küçük dikdörtgen koordinatlarını döndüren işlevi gerçekleyiniz.
def minimum_dikdortgen(ikil_matris):
Örnek: Matris = [ [50, 45, 55, 32, 80], [60, 145, 175, 140, 40], [40, 135, 165, 40, 30], [55, 150, 185, 20, 20], [35, 15, 65, 25, 10] ] Eşiklenen Matris = [ [0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [0, 1, 1, 0, 0], [0, 1, 1, 0, 0], [0, 0, 0, 0, 0] ]
Bu durumda minimum dikdörtgen (1,1)-(3,3) olacaktır.
5) Bonus Yukarıda yer alan sorulardan (1-4) herhangi bir tanesini Ruby programlama dilini kullanarak çözünüz. Sınav 100p üzerinden değerlendirilecektir. Toplam puanınız 100'ü geçerse 100'e düşürülecektir.