PHP Battle #1
Burada anlatacağım tüm örnekler codewars.com adresinden alınmıştır. Daha fazla PHP egzersizi için ziyaret etmeyi unutmayın!
Örnek 1 - XO
Bu örnekte XO()
adında bir fonksiyon yazacağız ve parametre olarak belli ifadeler göndereceğiz. Ve aşağıdaki şartlara göre true
ya da false
döndüreceğiz.
x
veo
değerleri eşitsetrue
döndürmelidir.x
veo
yoksatrue
döndürmelidir.- diğer tüm durumlarda
false
döndürmelidir. x
veo
değerleri büyük/küçük harfe duyarsız olarak hesaplanmalıdır.
function XO($s){
// kodlar buraya gelecek
}
var_dump(XO('xooxx')); // false
var_dump(XO('ooxXm')); // true
var_dump(XO('zpzpzpp')); // true
var_dump(XO('zzoo')); // false
var_dump(XO('XOxoOxx')); // false
1. Varyasyon
En basit varyasyon, string ifadeyi önce strtolower()
ile küçültmek ve str_split()
ile diziye aktarmak ve döngüye sokarak x
ve o
değerlerini saydırıp geriye mantıksal işlem yapmaktır.
function XO($s){
$s = strtolower($s);
$strings = str_split($s);
$x = 0;
$o = 0;
foreach ($strings as $string){
if ($string === 'x') $x++;
if ($string === 'o') $o++;
}
return $x === $o;
}
var_dump(XO('xooxx'));
var_dump(XO('ooxXm'));
var_dump(XO('zpzpzpp'));
var_dump(XO('zzoo'));
var_dump(XO('XOxoOxx'));
2. Varyasyon
Eğer array
fonksiyonlarına hakimsek, array_count_values()
ile dizide tekrarlanan değerlerin toplamını bulup buna göre mantıksal işlem yapmaktır.
function XO($s) {
$s = array_count_values(str_split(strtolower($s)));
return $s['o'] == $s['x'];
}
var_dump(XO('xooxx'));
var_dump(XO('ooxXm'));
var_dump(XO('zpzpzpp'));
var_dump(XO('zzoo'));
var_dump(XO('XOxoOxx'));
3. Varyasyon
En iyi ihtimalle bir RegEx deseni yazarak x
ve o
değerlerinin kontrolünü yapabiliriz.
function XO($s) {
return preg_match_all('/[x]/i', $s) === preg_match_all('/[o]/i', $s);
}
var_dump(XO('xooxx'));
var_dump(XO('ooxXm'));
var_dump(XO('zpzpzpp'));
var_dump(XO('zzoo'));
var_dump(XO('XOxoOxx'));
4. Varyasyon
Dizi içinde array_count_values()
ile tekrarlanan değerleri hesapladığımız gibi substr_count()
kullanarak dizi yerine ifade içerisinde x
ve o
değerlerinin toplamına göre mantıksal işlem yaparız.
function XO($s) {
$lower = strtolower($s);
return substr_count($lower, 'x') === substr_count($lower, 'o');
}
var_dump(XO('xooxx'));
var_dump(XO('ooxXm'));
var_dump(XO('zpzpzpp'));
var_dump(XO('zzoo'));
var_dump(XO('XOxoOxx'));
Örnek 2 - Sayıların Toplamını Bulma
Bu örnekte fonksiyona vereceğimiz 1
2
3
4
n..
değeri ile sayının küpünü bulmamız gerekiyor. Buna göre fonksiyonu çalıştırdığımızda aşağıki gibi değerler dönmeli.
rowSumOddNumbers(1); // 1
rowSumOddNumbers(2); // 3 + 5 = 8
rowSumOddNumbers(3); // 7 + 9 + 11 = 27
rowSumOddNumbers(4); // 13 + 15 + 17 + 19 = 64
1. Varyasyon
Yapılacak en basit işlem sayıyı kendisi ile 3 kere çarparak geriye döndürmektir.
function rowSumOddNumbers($n){
return $n * $n * $n;
}
rowSumOddNumbers(1);
rowSumOddNumbers(2);
rowSumOddNumbers(3);
rowSumOddNumbers(4);
2. Varyasyon
Eğer matematik fonksiyonlarına hakimsek pow()
fonksiyonunu kullanarakta bu işlemi yapabiliriz.
function rowSumOddNumbers($n){
return pow($n, 3);
}
rowSumOddNumbers(1);
rowSumOddNumbers(2);
rowSumOddNumbers(3);
rowSumOddNumbers(4);
3. Varyasyon
PHP'de günceli takip ediyorsak exponentiation
yani üs alma operatörü olan **
operatörünü kullanarak bu işlemi yaparız.
function rowSumOddNumbers($n){
return $n ** 3;
}
rowSumOddNumbers(1);
rowSumOddNumbers(2);
rowSumOddNumbers(3);
rowSumOddNumbers(4);