v2.5.2
Giriş yap

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 ve o değerleri eşitse true döndürmelidir.
  • x ve o yoksa true döndürmelidir.
  • diğer tüm durumlarda false döndürmelidir.
  • x ve o 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);
Devamını bugün tamamlayıp makaleyi sonlandıracağım.
tayfunerbilen
1514 gün önce yazdı - 2103 kez görüntülendi.
Önceki PHP ile 301 Yönlendirme Nasıl Yapılır? Sonraki PHP ile QR Kod Oluşturma