php-scripts


<?php

// aktywacja trybu poprzez który można dodać deklarację typów w parametrach funkcji oraz można określić typ zwracanej wartości
declare(strict_types=1);

$tablica = array_map(function () {
    return rand(0, 5);
}, array_fill(0, 10, 0));

echo 'Tablica: ' . join(', ', $tablica) . PHP_EOL;
echo 'Iloczyn wszystkich niezerowych elementów tablicy to: ' . multiplyingNonZeroElementsOfArray($tablica) . PHP_EOL;

// echo 'Iloczyn wszystkich niezerowych elementów tablicy to: ' . multiplyingNonZeroElementsOfArraySecondVersion($tablica) . PHP_EOL;

// funkcja obliczająca iloczyn elementów niezerowych
// jako argument przyjmuje tablicę liczb - zmienna typu array
// wartość zwracana jest typu integer
function multiplyingNonZeroElementsOfArray (array $arrayOfNumbers): int
{
    // deklaracja zminnej dla wyniku obliczeń
    $result = null;

    // sprawdzenie czy tablica istnieje i czy jej rozmiar jest większy od zera
    if (!$arrayOfNumbers || count($arrayOfNumbers) == 0)
    {
        return 'array is empty or not exists';
    }

    // pętla iterująca po wszystkich elementach tablicy
    // foreach w tym przypadku ponieważ jest to wystarczająca konstrukcja i prostsza w zapisie (niepotrzebna jest tu logika jaką oferuje np. for)
    foreach ($arrayOfNumbers as $item)
    {
        // sprawdzenie czy dany element jest niezerowy czyli tutaj większy od zera
        if ($item > 0)
        {
            // gdy zmienna $result jest jeszcze o wartosci nullowej to jej pierwszy element jest przypisywany
            if ($result == null)
            {
                $result = $item;
            }
            else
            {
                // każdy następny pasujący element jest mnożony przez wynik poprzedniego mnożenia
                $result = $result * $item;
            }
        }
    }
    
    // zwracanie wartości wynikowej
    return $result;
}


// przykładowa wersja druga => skrócona
function multiplyingNonZeroElementsOfArraySecondVersion (array $arrayOfNumbers): int
{
    $result = null;

    if (!$arrayOfNumbers || count($arrayOfNumbers) == 0)
        return 'array is empty or not exists';

    foreach ($arrayOfNumbers as $item) {
        if ($item > 0)
            $result == null ? $result = $item : $result = $result * $item;
    }
    
    return $result;
}


<?php

function fibo($n)
{
    $arr = [1, 1];

    while ($n-- > 1) {
        $arr = [$arr[1], array_sum($arr)];
    }

    return $arr[1];
}

for ($i = 0; $i < 10; $i++) {
    echo "fibo($i) => " . fibo($i) . "\n";
}


function fiboRecursion($number)
{
    if ($number <= 1) {
        return 1;
    }

    // obliczanie kolejnych elementów ciągu poprzez wywoływanie funkcji w samej sobie 
    return fiboRecursion($number - 1) + fiboRecursion($number - 2);
}

for ($i = 0; $i < 10; $i++) {
    echo "fibo($i) => " . fiboRecursion($i) . "\n";
}



<?php

$fraza = readline('Podaj frazę do zakodowania: ');

$kod    = base64_encode($fraza);
$kod    = str_rot13($kod);
$tabela = str_split($kod, ceil(sqrt(strlen($kod))));
$kod    = join('', array_map(function ($str) {
    return strrev($str);
}, $tabela));

echo "Zakodowana wiadomość to:\n$kod\n";

/**
 * Zamień program kodujący w dekodujący i znajdź frazę która po zakodowaniu, dała by następujący kod:
 * apv9TE6OPYyczouEJLucUVyyzrwyTo=RFMh9
 * 
 * odpowiedź
 * 
 * fraza po zdekodowaniu to : Dobrze, zadanie zaliczone!
 */

// odczyt wartości z linii
$code = readline('Podaj frazę do zdekodowania: ');

// utworzenie tablicy elementów o rozmiarach równych pierwiastkowi zaokrąglonemu w górę do najbliższej liczby całkowitej
$codeElementsArray = str_split($code, ceil(sqrt(strlen($code))));

// utworzenie stringa poprzez odwrócenie elementów z tablicy funkcją strrev
$hash    = join('', array_map(function ($element) {
    return strrev($element);
}, $codeElementsArray));

// dekodowanie rot13
$hash    = str_rot13($hash);

// dekodowanie bas64
$hash    = base64_decode($hash);

echo "Zdekodowana wiadomość to:\n$hash\n";