alpsahin/tubitak-olimpiyat-dataset-v2 huggingface dataset:
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 18

## [14-19] soruları için açıklama
Aşağıda üç adet karşılıklı özyinelemeli yapının söz dizim kuralları verilmiştir. Bu tanımlarda yer alan • gibi semboller tanımlanan yapıların sözdizimlerinde yer almaktadırlar, fazla ya da eksik kullanılamazlar. Bu tanımlara uygun olarak oluşturulan ifadeleri aşağıdaki sorularda X, Y ve Z nesneleri olarak adlandıracağız.
\[X = \left\{ \begin{array}{ll} A & \text{y a da} \\ B \cdot Y & \text{y a da} \end{array} \right.\]
\[Y = \left\{ \begin{array}{ll} C & \text{y a da} \\ D \cdot Z & \text{y a da} \end{array} \right.\]
\[Z = \left\{ \begin{array}{ll} E & \text{y a da} \\ F \cdot X & \text{y a da} \end{array} \right.\]
X, Y ve Z nesneleri üzerinde aşağıdaki fonksiyonlar tanımlanmaktadır. Fonksiyonların parametrelerinin türleri parametreden sonra / ile belirtilmiştir ve T negatif olmayan tam sayıları ifade etmektedir. Bu fonksiyon tanımlarında f₁, f₂, f₃, g₁, g₂, g₃ fonksiyon adlarını, px X nesnelerini, p_y Y nesnelerini ve p_z Z nesnelerini, n ise negatif olmayan tam sayıları göstermektedir. f₁, f₂ ve f₃ fonksiyonları negatif olmayan tam sayıları, g₁ fonksiyonu yeni X nesnelerini, g₂ fonksiyonu yeni Y nesnelerini, g₃ fonksiyonu yeni Z nesnelerini üretmektedirler.
\[f_1(p_x | X) = \begin{cases} 1 & \text{eğer } p_x = \mathbf{A} \text{ ise} \\ 2 + f_2(p_y) & \text{eğer } p_x = \mathbf{B} \bullet p_y \text{ ise} \end{cases}\]
\[f_2(p_y | Y) = \begin{cases} 3 & \text{eğer } p_y = \mathbf{C} \text{ ise} \\ 4 + f_3(p_z) & \text{eğer } p_y = \mathbf{D} \bullet p_z \text{ ise} \end{cases}\]
\[f_3(p_z | Z) = \begin{cases} 5 & \text{eğer } p_z = \mathbf{E} \text{ ise} \\ 6 + f_1(p_x) & \text{eğer } p_z = \mathbf{F} \bullet p_x \text{ ise} \end{cases}\]
\[g_1(n | T) = \begin{cases} \mathbf{A} & \text{eğer } n = 0 \text{ ise} \\ \mathbf{B} \bullet g_2(n-1) & \text{eğer } n > 0 \text{ ise} \end{cases}\]
\[g_2(n | T) = \begin{cases} \mathbf{C} & \text{eğer } n = 0 \text{ ise} \\\mathbf{D} \bullet g_3(n-1) & \text{eğer } n > 0 \text{ isе} \end{cases}\]
\[g_3(n | T) = \begin{cases} \mathbf{E} & \text{eğer } n = 0 \text{ ise} \\F \bullet g_1(n-1) & \text{eğer } n > 0 \text{ is е} \end{cases}\]
## AÇIKLAMA
\(g_1, g_2, \text{ve } g_3\) fonksiyonları B, D, F, B, D, F, ... dizisinin n uzunluğunda bir altdizisini verir. Bile başlayanlar \(g_1\), D ile başlayanlar \(g_2\), F ile başlayanlar \(g_3\) fonksiyonu ile oluşur. Son eleman ise n+1. harfin 1 gerisidir. \(f_1\) fonksiyonlarına söz dizimleri geldiğinde ise sıralama fark etmeksizin harflerin sayı değerlerinin toplamını döndürür. (fonksiyon tanımlı olursa format her zaman uyar). Şimdi sorulara bakalım:

---

\(f_2(D \cdot (g_3(f_1(B \cdot (g_2(O))))))\) işleminin sonucu aşağıdakilerden Hangisidir?

Şıklar:
A) 27 | B) 35 | C) 43 | D) 85 | E) 115

Cevap: B 35

Çözüm:
Sadeleştirelim:
\[f_2(D \cdot g_3(f_1(B \cdot g_2(O))))\]
\[f_2(D \cdot g_3(f_1(B \cdot C)))\]
\[f_2(D \cdot g_3(2+3=5))\]
\[4 + f_3(g_3(5)) = 4 + 6 + 2 + 4 + 6 + 2 + 3 = 27\]
Sadeleştirelim:
\[f_1(B \cdot g_2(f_3(F \cdot g_1(O))))\]
\[f_1(B \cdot g_2(f_3(F \cdot A)))\]
\[f_1(B \cdot g_2(7)) = (2 + 4 + 6)^2 + 2 + 4 + 5 = 35\]
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 20

(1 + x3)¹² ifadesinde x⁸ teriminin katsayısı aşağıdakilerden hangisidir?

Şıklar:
A) 0 | B) 13 | C) 14 | D) 15 | E) 16

Cevap: A 0

Çözüm:
Sorudaki ifadede sadece x⁸ ve x⁰ terimleri olduğundan x⁸ terimi hiçbir türlü oluşamaz.
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 21

(1+x²+x4+x6+x8+x10)³ ifadesinde x⁸ teriminin katsayısı aşağıdakilerdan hangisidir?

Şıklar:
A) 6 | B) 9 | C) 12 | D) 14 | E) 15

Cevap: E 15

Çözüm:
Çarpımı x⁸ olan 3 terimin olası üs dağılımlara bakalım:
- O + O + 8 için, 3
- O + 2 + 6 için, 6
- O + 4 + 4 için, 3
- 2 + 2 + 4 için, 3 olur.
Toplam = 3 + 6 + 3 + 3 = 15.
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 22

## [22-23] soruları için açıklama
100 tane birbirinin aynısı top ve 5 adet birbirinden farklı kutu bulunmaktadır.

---

Her bir kutuda en az 6 adet top bulunacak şekilde topları kaç farklı şekilde kutulara dağıtabiliriz?

Şıklar:
A) C(100, 5) | B) C(70, 5) | C) C(70, 5) - 5! | D) 2 × C(70, 5) | E) C(74, 4)

Cevap: E C(74, 4)

Çözüm:
Tekrarlı kombinasyon yöntemine göre n top m tane kutuya  \( \binom{n+m-1}{m-1} \)  farklı şekilde yerleşebilir. Şimdi her kutuya 6 tane top atalım. 70 top ve 5 tane kutu var. O zaman dağılım C(70+4, 4) farklı şekilde gerçekleşebilir.
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 23

## [22-23] soruları için açıklama
100 tane birbirinin aynısı top ve 5 adet birbirinden farklı kutu bulunmaktadır.

---

Her bir kutuda en fazla 40 adet top bulunacak şekilde topları kaç farklı şakilde kutulara dağıtabiliriz?

Şıklar:
A) C(104, 4) - 5 × C(63, 4) + 10 × C(22, 4) | B) C(100, 5) - C(60, 5) + C(20, 5) | C) C(100, 5) + C(60, 5) + C(20, 5) | D) C(100, 5) - C(60, 5) - C(20, 5) | E) C(20, 2)

Cevap: A C(104, 4) - 5 × C(63, 4) + 10 × C(22, 4)

Çözüm:
Bütün toplar C(100+4, 4) farklı şekilde dağıtılır. 5 tanesinden biri 40 tan fazla olma durumlarını çıkartalım. 5 kutudan herhangi birine 41 top koyup kalan 59 topu dağıtarak 5 × C(59+4, 4) nü buluruz. 5 kutudan ikisine 41 top koyduklarımızı 2 kez çıkarttığımızdan eklememiz gerekir ki bu değer de (C(5,2)=10) × C(18+4, 4)'dür.
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 24

O ve 1'lerden oluşan 8 uzunluğundaki dizilerden (string) kaç tanesi ardışık O çift içerir?

Şıklar:
A) 196 | B) 198 | C) 199 | D) 201 | E) 220

Cevap: D 201

Çözüm:
O'larnıv e'l'lerin sayısını seçip birler arası boşluklara O'larnı koyma durumlarını düşünüp ardışık O'çermeyenler ihesaplayalım:
- 4 tane O, 4 tane 1(5 boşluk): C(5, 4) = 5
- 3 tane O, 5 tane 1(6 boşluk): C(6, 3) = 20
- 2 tane O, 6 tane 1(7 boşluk): C(7, 2) = 21
- 1 tane O, 7 tane 1(8 boşluk): C(8, 1) = 8
- O tane O, 8 tane 1(9 boşluk): C(9, O) = 1
- Toplam: 5 + 20 + 21 + 8 + 1 = 55
- Bütün durumlardan(256) toplamı çıkarırsak cevabı buluruz: 256-55 = 201.
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 25

10 basamaklı bir merdiveni, birer veya üçer basamak atlayarak kaç farklı şekilde çıkabiliriz?

Şıklar:
A) 26 | B) 27 | C) 28 | D) 29 | E) 30

Cevap: C 28

Çözüm:
X basamaklı bir merdiveni çıkmaya f(x) diyelim. O zaman f(O) = f(1) = f(2) = 1, f(x) = f(x-1) + f(x-3) x≥3 olur. f(x) değerlerine bakarsak:
- f(3) = f(2) + f(O) = 1 + 1 = 2
- f(4) = f(3) + f(1) = 2 + 1 = 3
- f(5) = f(4) + f(2) = 3 + 1 = 4
- f(6) = f(5) + f(3) = 4 + 2 = 6
- f(7) = f(6) + f(4) = 6 + 3 = 9
- f(8) = f(7) + f(5) = 9 + 4 = 13
- f(9) = f(8) + f(6) = 13 + 6 = 19
- f(10) = f(9) + f(7) = 19 + 9 = 28 olur.
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 26

O, 1 ve 2'lerden oluşan ve 6 uzunluğundaki dizilerden (string) kaçı ardışık O'lar içermez?

Şıklar:
A) 402 | B) 403 | C) 406 | D) 448 | E) 450

Cevap: D 448

Çözüm:
F(x) x uzunluğunda ardışık O içermeyen dizilerin sayısını tutsun. F(O) = 1, f(1) = 3 olur. f(x)'i bulurken, x yerde eğer 1 veya 2 olursa cevap f(x-1) olur; eğer O olursa (x-1), yere 1 veya 2 gelebileceğinden cevap f(x-2) olur. Yani f(x) = 2*f(x-1) + 2*f(x-2) olur. O zaman:
- f(2) = 2*(f(1) + f(O)) = 2*(3 + 1) = 8
- f(3) = 2*(f(2) + f(1)) = 2*(8 + 3) = 22
- f(4) = 2*(f(3) + f(2)) = 2*(22 + 8) = 60
- f(5) = 2*(f(4) + f(3)) = 2*(60 + 22) = 164
- f(6) = 2*(f(5) + f(4)) = 2*(164 + 60) = 448 olur.
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 27

4 elemanlı bir kümeden 3 elemanlı bir kümeye kaç farklı örten fonksiyon tanımlanabilir?

Şıklar:
A) 36 | B) 37 | C) 38 | D) 39 | E) 40

Cevap: A 36

Çözüm:
Her x ∈ [1, 4] için f(x) 3 farklı değer alabilir. Yani 3⁴ = 81 farklı fonksiyon tanımlanabilir. İçerme dışarma mantığıyla 1 değerin alınmaması durumlarını çıkartıp devam edersek:
1 değer alınmayınca (3/1) (3-1)⁴ = 3*16 = 48 farklı durum olur.
2 değer alınmayınca (3/1) (3-2)⁴ = 3 farklı durum olur.
İçerme dışarma mantığıyla istenen değer 81 — 48 + 3 = 36 olur.
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 28

## [28-32] soruları için açıklama
Programlanabilir bir makinanın görsel programlama ortamı şu şekilde tanımlanmıştır:
Makina herhangi bir anda yuvarlak içerisinde sayı ya da yazı ile gösterilen durumlardan yalnızca birisinde olabilir. Makina çalışmaya her zaman 'B' konumundan başlar. Makine okları takip ederek konum değiştirir. Bir oku izleyebilmesi için okun üzerindeki koşulun sağlanması gerekmektedir. Bu koşullar iki değer ya da değişkenin küçük (<), büyük (> ya da eşitlik (=?) ilişkileridir. Ancak hiçbir koşul sağlanmıyorsa veya koşul yok ise " ile belirtilen ok takip edilir. Hiçbir oktaki koşul sağlanmıyor veya koşul yok ise ve " ile tanımlı ok da bulunmuyor ise makina bulunduğu konumda kalır.
Geçiş oklarının altında kutu içerisine alınmış komutlar bulunmaktadır. Makina her geçiş sırasında belirtilen komutu çalıştırır. Eğer bir komut belirtilmemişse hiçbir komutu çalıştırmadan geçişi gerçekleştirir. Komutlar atama işlemi (=), okuma işlemi (oku(...)) ya da yazma işlemi (yaz(...)) komutlarından birisi olabilir. Atama işlemi solundaki değişkene sağ taraftaki ifadenin değerini koyar. Bu değer değişkenin yeni değeri olur, eski değerin yerini alır. Örneğin 'x := x + 1' komutu x değişkeninin eski değerine 1 ekleyip bulduğu sonucu x değişkenine koyar ve 'x'in değerini 1 arttırmış olur. Sağ taraftaki ifadede toplama (+), çıkartma (-), tamsayı bölme (/) ve bölümden kalan (%) işlemleri yer alabilir.
'/' işlemi iki tamsayının bölümünün tamsayı kısmını (Örn. 15/8, 1 değerini verir),
'%' işlemi de bölümden kalan tamsayıyı verir (Örn. 15%8, 7 değerini verir). 'oku(x)' komutu x değişkeninin değerini girdi cihazından okur (Örn. klavye). 'yaz(x)' komutu x değişkeninin değerini çıktı cihazına yazar (Örn. ekran).
Bütün değişkenlerin ilk değerleri O'dır. Aşağıdaki soruları bu makina tanımına göre yanıtlayınız.
[GÖRSEL]

---

Yukarıdaki program hangi sonucu yazar?

Şıklar:
A) 750 | B) 11 | C) 13 | D) 14 | E) Sonsuz döngüye girer.

Cevap: B 11

Çözüm:
1 noktası kritik olduğundan 1 noktasındaki ve s değerlerini sırasıyla bulalım:
- En başta i = 1, s = 0 olur.
- Sonra i = 2, s = 1
- Her adımda i 2 katına çıkıp s 1 arttığından 9 adım sonra 1 noktasında i = 2*2⁹ = 1024, s = 1 + 9 = 10 olur.
- Sonraki adımda i = 2O48, s = 11 olur ve s = 11 değeri yazdırılır.
##
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 30

## [28-32] soruları için açıklama
Programlanabilir bir makinanın görsel programlama ortamı şu şekilde tanımlanmıştır:
Makina herhangi bir anda yuvarlak içerisinde sayı ya da yazı ile gösterilen durumlardan yalnızca birisinde olabilir. Makina çalışmaya her zaman 'B' konumundan başlar. Makine okları takip ederek konum değiştirir. Bir oku izleyebilmesi için okun üzerindeki koşulun sağlanması gerekmektedir. Bu koşullar iki değer ya da değişkenin küçük (<), büyük (> ya da eşitlik (=?) ilişkileridir. Ancak hiçbir koşul sağlanmıyorsa veya koşul yok ise " ile belirtilen ok takip edilir. Hiçbir oktaki koşul sağlanmıyor veya koşul yok ise ve " ile tanımlı ok da bulunmuyor ise makina bulunduğu konumda kalır.
Geçiş oklarının altında kutu içerisine alınmış komutlar bulunmaktadır. Makina her geçiş sırasında belirtilen komutu çalıştırır. Eğer bir komut belirtilmemişse hiçbir komutu çalıştırmadan geçişi gerçekleştirir. Komutlar atama işlemi (=), okuma işlemi (oku(...)) ya da yazma işlemi (yaz(...)) komutlarından birisi olabilir. Atama işlemi solundaki değişkene sağ taraftaki ifadenin değerini koyar. Bu değer değişkenin yeni değeri olur, eski değerin yerini alır. Örneğin 'x := x + 1' komutu x değişkeninin eski değerine 1 ekleyip bulduğu sonucu x değişkenine koyar ve 'x'in değerini 1 arttırmış olur. Sağ taraftaki ifadede toplama (+), çıkartma (-), tamsayı bölme (/) ve bölümden kalan (%) işlemleri yer alabilir.
'/' işlemi iki tamsayının bölümünün tamsayı kısmını (Örn. 15/8, 1 değerini verir),
'%' işlemi de bölümden kalan tamsayıyı verir (Örn. 15%8, 7 değerini verir). 'oku(x)' komutu x değişkeninin değerini girdi cihazından okur (Örn. klavye). 'yaz(x)' komutu x değişkeninin değerini çıktı cihazına yazar (Örn. ekran).
Bütün değişkenlerin ilk değerleri O'dır. Aşağıdaki soruları bu makina tanımına göre yanıtlayınız.
[GÖRSEL]

---

Yukarıdaki program 30 4 girdisi için hangi sonucu yazar?

Şıklar:
A) 7 | B) 8 | C) 9 | D) 10 | E) 11

Cevap: B 8

Çözüm:
Bu makine önce m ve n değerlerini alıyor. m değerini i kadar azaltıp i'yi 1 artırıyor. Bu işlem m > n olduğu sürece devam ediyor. Yani 'n'in değeri x iken m'in değeri toplamda O + 1 + 2 + ... + x-1 = (x-1)*x/2 kadar azalmıştır. Yazılacak değer ise ilk i değeridir öyle ki m - i*(i-1) ≤ n olsun. O zaman eşitsizliğimize m - n ≤ i*(i-1) dersek, m=30 ve n=4 için
2
\[ \begin{aligned}&26\leq i*(i-1)\\&\quad2\\&52\leq i*(i-1)\end{aligned} \]
Bu eşitsizliği sağlayan en küçük i sayısı 8'dir.
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 31

## [28-32] soruları için açıklama
Programlanabilir bir makinanın görsel programlama ortamı şu şekilde tanımlanmıştır:
Makina herhangi bir anda yuvarlak içerisinde sayı ya da yazı ile gösterilen durumlardan yalnızca birisinde olabilir. Makina çalışmaya her zaman 'B' konumundan başlar. Makine okları takip ederek konum değiştirir. Bir oku izleyebilmesi için okun üzerindeki koşulun sağlanması gerekmektedir. Bu koşullar iki değer ya da değişkenin küçük (<), büyük (> ya da eşitlik (=?) ilişkileridir. Ancak hiçbir koşul sağlanmıyorsa veya koşul yok ise " ile belirtilen ok takip edilir. Hiçbir oktaki koşul sağlanmıyor veya koşul yok ise ve " ile tanımlı ok da bulunmuyor ise makina bulunduğu konumda kalır.
Geçiş oklarının altında kutu içerisine alınmış komutlar bulunmaktadır. Makina her geçiş sırasında belirtilen komutu çalıştırır. Eğer bir komut belirtilmemişse hiçbir komutu çalıştırmadan geçişi gerçekleştirir. Komutlar atama işlemi (=), okuma işlemi (oku(...)) ya da yazma işlemi (yaz(...)) komutlarından birisi olabilir. Atama işlemi solundaki değişkene sağ taraftaki ifadenin değerini koyar. Bu değer değişkenin yeni değeri olur, eski değerin yerini alır. Örneğin 'x := x + 1' komutu x değişkeninin eski değerine 1 ekleyip bulduğu sonucu x değişkenine koyar ve 'x'in değerini 1 arttırmış olur. Sağ taraftaki ifadede toplama (+), çıkartma (-), tamsayı bölme (/) ve bölümden kalan (%) işlemleri yer alabilir.
'/' işlemi iki tamsayının bölümünün tamsayı kısmını (Örn. 15/8, 1 değerini verir),
'%' işlemi de bölümden kalan tamsayıyı verir (Örn. 15%8, 7 değerini verir). 'oku(x)' komutu x değişkeninin değerini girdi cihazından okur (Örn. klavye). 'yaz(x)' komutu x değişkeninin değerini çıktı cihazına yazar (Örn. ekran).
Bütün değişkenlerin ilk değerleri O'dır. Aşağıdaki soruları bu makina tanımına göre yanıtlayınız.
[GÖRSEL]

---

Yukarıdaki program okunan m ve n değerleri için aşağıdakilerden hangisini hesaplayıp çıktı olarak yazar?

Şıklar:
A) m ve n'in ortak bölenlerinin en büyüğünü | B) n'den büyük m'in böleni olan sayıları | C) m ve n in ortak bölenlerinin çarpımı | D) m ve n'in böleni olan sayıları | E) Hiçbiri

Cevap: A m ve n'in ortak bölenlerinin en büyüğünü

Çözüm:
Programa n ve m verildiğinde, program 2'den büyük her i değeri için i'nin n'ye ve m'ye birlikte bölündüğü takdirde (ortak çarpanı olduğunda) i çarpanını p'ye ekler ve n ve m'den i çarpanını çıkarır. En son i, n veya m'den büyük olduğunda onların bütün ortak çarpanları p'ye atılmıştır. Yani en son yazdırılan p bütün ortak çarpanların birleşimi ve en büyüdür.
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 32

## [28-32] soruları için açıklama
Programlanabilir bir makinanın görsel programlama ortamı şu şekilde tanımlanmıştır:
Makina herhangi bir anda yuvarlak içerisinde sayı ya da yazı ile gösterilen durumlardan yalnızca birisinde olabilir. Makina çalışmaya her zaman 'B' konumundan başlar. Makine okları takip ederek konum değiştirir. Bir oku izleyebilmesi için okun üzerindeki koşulun sağlanması gerekmektedir. Bu koşullar iki değer ya da değişkenin küçük (<), büyük (> ya da eşitlik (=?) ilişkileridir. Ancak hiçbir koşul sağlanmıyorsa veya koşul yok ise " ile belirtilen ok takip edilir. Hiçbir oktaki koşul sağlanmıyor veya koşul yok ise ve " ile tanımlı ok da bulunmuyor ise makina bulunduğu konumda kalır.
Geçiş oklarının altında kutu içerisine alınmış komutlar bulunmaktadır. Makina her geçiş sırasında belirtilen komutu çalıştırır. Eğer bir komut belirtilmemişse hiçbir komutu çalıştırmadan geçişi gerçekleştirir. Komutlar atama işlemi (=), okuma işlemi (oku(...)) ya da yazma işlemi (yaz(...)) komutlarından birisi olabilir. Atama işlemi solundaki değişkene sağ taraftaki ifadenin değerini koyar. Bu değer değişkenin yeni değeri olur, eski değerin yerini alır. Örneğin 'x := x + 1' komutu x değişkeninin eski değerine 1 ekleyip bulduğu sonucu x değişkenine koyar ve 'x'in değerini 1 arttırmış olur. Sağ taraftaki ifadede toplama (+), çıkartma (-), tamsayı bölme (/) ve bölümden kalan (%) işlemleri yer alabilir.
'/' işlemi iki tamsayının bölümünün tamsayı kısmını (Örn. 15/8, 1 değerini verir),
'%' işlemi de bölümden kalan tamsayıyı verir (Örn. 15%8, 7 değerini verir). 'oku(x)' komutu x değişkeninin değerini girdi cihazından okur (Örn. klavye). 'yaz(x)' komutu x değişkeninin değerini çıktı cihazına yazar (Örn. ekran).
Bütün değişkenlerin ilk değerleri O'dır. Aşağıdaki soruları bu makina tanımına göre yanıtlayınız.
[GÖRSEL]

---

Yukarıdaki programda 7 4 1 3 3 12 4 girdileri okunup işlendikten sonra, bir sonraki değerin girilmesi için beklenirken (oku komutu ilk çalıştırıldığında) x değişkeninin değeri nedir?

Şıklar:
A) 6 | B) 8 | C) 1 | D) 12 | E) 13

Cevap: E 13

Çözüm:
1 noktasındaki x değerlerine bakalım:
• En başta 7 okunur ve x=7 olur. Kalan girdi: 4 1 3 3 12 4
• 4>7 olmadığından x=8 olur. Kalan girdi: 1 3 3 12 4
• 1>8 olmadığından x=9 olur. Kalan girdi: 3 3 12 4
• 3>9 olmadığından x=10 olur. Kalan girdi: 3 12 4
• 3>10 olmadığından x=11 olur. Kalan girdi: 12 4
• 12>11 olduğundan x=12 olur. Kalan girdi: 4
• 4>12 olmadığından x=13 olur ve program biter.
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 34

## [33-37] soruları için açıklama
Size bir kaplumbağa çizim dili veriliyor. Bu dilde çizimler sanal bir kaplumbağayı hareket ettirerek elde ediliyor. Kaplumbağanın yüzü her zaman 8 doğrultudan birisine bakar ve kaplumbağa sadece bu yönlerde ileri doğru bir sonraki kesişim noktasına kadar hareket eder. Bu hareket sırasında da geçtiği yolu çizer. Kaplumbağanın hareketlerini tanımlayan dil aşağıdaki öğelerden oluşur:
i Kaplumbağanın kendi yönünde ileri doğru, bir sonraki kesişim noktasına kadar gitmesini ve bu yolu çizmesini sağlayan komut.
Kaplumbağanın bulunduğu konumda saat yönünün tersinde (soluna doğru) 45 derece dönmesini sağlayan komut.
> Kaplumbağanın bulunduğu konumda saat yönünde (sağına doğru) 45 derece dönmesini sağlayan komut.
Şeklimizi çizelim:
- İlk olarak aşağıdaki şekle göre A noktasından başlayıp 4(i>) ile A noktasına geri döner ve 1 kez daha ileri giderek E noktasına gelir:
[GÖRSEL]
• Sonra E noktasından 4(i>) ile daha küçük bir kare daha çizer ve son çizim şu şekilde olur:
[GÖRSEL]
Yani 9 numaralı şekil çizilir.

---

‘<2(i>i>i>i>i)’ komutu kaç numaralı şekli çizer?

Şıklar:
A) (2) | B) (3) | C) (5) | D) (7) | E) (14)

Cevap: A (2)

Çözüm:
Şeklimizi çizelim:
- İlk « komutuyla kaplumbağa sola bakar. Sonra (i>i>i>i>i) komutuyla aşağıdaki şekli çizer ve kaplumbağa en son sağa bakar.
[GÖRSEL]
Aynı şekilde sağa doğru da (i>i>i>i>i) komutunu tekrarlar ve en son şekil şöyle olur:
[GÖRSEL]
Yani 2. şekli çizer
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 35

## [33-37] soruları için açıklama
Size bir kaplumbağa çizim dili veriliyor. Bu dilde çizimler sanal bir kaplumbağayı hareket ettirerek elde ediliyor. Kaplumbağanın yüzü her zaman 8 doğrultudan birisine bakar ve kaplumbağa sadece bu yönlerde ileri doğru bir sonraki kesişim noktasına kadar hareket eder. Bu hareket sırasında da geçtiği yolu çizer. Kaplumbağanın hareketlerini tanımlayan dil aşağıdaki öğelerden oluşur:
i Kaplumbağanın kendi yönünde ileri doğru, bir sonraki kesişim noktasına kadar gitmesini ve bu yolu çizmesini sağlayan komut.
Kaplumbağanın bulunduğu konumda saat yönünün tersinde (soluna doğru) 45 derece dönmesini sağlayan komut.
> Kaplumbağanın bulunduğu konumda saat yönünde (sağına doğru) 45 derece dönmesini sağlayan komut.
Şeklimizi çizelim:
- İlk olarak aşağıdaki şekle göre A noktasından başlayıp 4(i>) ile A noktasına geri döner ve 1 kez daha ileri giderek E noktasına gelir:
[GÖRSEL]
• Sonra E noktasından 4(i>) ile daha küçük bir kare daha çizer ve son çizim şu şekilde olur:
[GÖRSEL]
Yani 9 numaralı şekil çizilir.

---

‘8(i>i>i)’ komutu kaç numaralı şekli çizer?

Şıklar:
A) (11) | B) (12) | C) (13) | D) (10) | E) (8)

Cevap: A (11)

Çözüm:
Şeklimizi çizelim:
• (i>i>i) komutu şöyle bir şekil çizer:
[GÖRSEL]
• Bu komutta kaplumbağanın baktığı yön 135 derece sağa kayer. Eğer kaplumbağa çapraz yöne bakıyorken bu komut gelirse çizdiği şekil söyle olur:
[GÖRSEL]
Bunlara göre bu komutu 8 kez tekrarlarsak A–B–C–D–E–F–G–H sırasıyla şu şekil oluşur:
[GÖRSEL]
Yani 11. şekil çizilir.
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 36

## [33-37] soruları için açıklama
Size bir kaplumbağa çizim dili veriliyor. Bu dilde çizimler sanal bir kaplumbağayı hareket ettirerek elde ediliyor. Kaplumbağanın yüzü her zaman 8 doğrultudan birisine bakar ve kaplumbağa sadece bu yönlerde ileri doğru bir sonraki kesişim noktasına kadar hareket eder. Bu hareket sırasında da geçtiği yolu çizer. Kaplumbağanın hareketlerini tanımlayan dil aşağıdaki öğelerden oluşur:
i Kaplumbağanın kendi yönünde ileri doğru, bir sonraki kesişim noktasına kadar gitmesini ve bu yolu çizmesini sağlayan komut.
Kaplumbağanın bulunduğu konumda saat yönünün tersinde (soluna doğru) 45 derece dönmesini sağlayan komut.
> Kaplumbağanın bulunduğu konumda saat yönünde (sağına doğru) 45 derece dönmesini sağlayan komut.
Şeklimizi çizelim:
- İlk olarak aşağıdaki şekle göre A noktasından başlayıp 4(i>) ile A noktasına geri döner ve 1 kez daha ileri giderek E noktasına gelir:
[GÖRSEL]
• Sonra E noktasından 4(i>) ile daha küçük bir kare daha çizer ve son çizim şu şekilde olur:
[GÖRSEL]
Yani 9 numaralı şekil çizilir.

---

Aşağıdakilerden hangisi (5) numaralı şekli çizer?

Şıklar:
A) (11) | B) (12) | C) (13) | D) (10) | E) (8)

Cevap: E (11)

Çözüm:
5 numaralı şekil 1 iç kareden ve 1 dış kareden oluşur. İç kareyi oluşturmak için çapraz yöne bakıyorken 4(i>>) komutu olmalıdır. Dış kare içinse 5 numaralı şekildeki karenin herhangi bir köşesinden doğru yöne bakıyorken 4(i>>) komutu gerekir. E şıkkına bakarsak < ile çapraza bakar. 4(i>>) komutuyla iç kareyi çizer. Kaplumbağa iç karenin en alt noktasından sola doğru 1 adım ilerler ve 4(>>i) komutuyla dış kareyi çizer(önce >> olduğundan sol alt köşedeyken yukarı bakar).
Bilgisayar Olimpiyatı 2007, 1. Aşama, Soru 37

## [33-37] soruları için açıklama
Size bir kaplumbağa çizim dili veriliyor. Bu dilde çizimler sanal bir kaplumbağayı hareket ettirerek elde ediliyor. Kaplumbağanın yüzü her zaman 8 doğrultudan birisine bakar ve kaplumbağa sadece bu yönlerde ileri doğru bir sonraki kesişim noktasına kadar hareket eder. Bu hareket sırasında da geçtiği yolu çizer. Kaplumbağanın hareketlerini tanımlayan dil aşağıdaki öğelerden oluşur:
i Kaplumbağanın kendi yönünde ileri doğru, bir sonraki kesişim noktasına kadar gitmesini ve bu yolu çizmesini sağlayan komut.
Kaplumbağanın bulunduğu konumda saat yönünün tersinde (soluna doğru) 45 derece dönmesini sağlayan komut.
> Kaplumbağanın bulunduğu konumda saat yönünde (sağına doğru) 45 derece dönmesini sağlayan komut.
Şeklimizi çizelim:
- İlk olarak aşağıdaki şekle göre A noktasından başlayıp 4(i>) ile A noktasına geri döner ve 1 kez daha ileri giderek E noktasına gelir:
[GÖRSEL]
• Sonra E noktasından 4(i>) ile daha küçük bir kare daha çizer ve son çizim şu şekilde olur:
[GÖRSEL]
Yani 9 numaralı şekil çizilir.

---

Aşağıdakilerden hangisi (4) numaralı şekli çizer?

Şıklar:
A) 4(i1>>i1>>i2>>i3) | B) <4(i<<<4(i<<<) | C) >4(i2(<<<i1)) | D) i1>>i3(<<<i1) | E) 4(i1>>i4(i<<<)

Cevap: E <4(i>>)i<4(i>>i)

Çözüm:
4. şekli içerideki 4 yön ve dışarıdaki kare olarak ayıralım. Bulunduğun konumdan yöne 1 ilerletme çizmesi için anımsama! kullanabiliriz. Bunu 4(i1>>) komutuyla yaparız. Dış kare içinse 4 yönün herhangi bir ucundan sağındaki uca bakacak şekilde 4(i>>) komutuyla çizebiliriz. Bu şekilde çizim yapabilen tek şık A şıkkıdır.