Permutasi

Masih ingat dengan Permutasi? Kalau sudah lupa, silakan mampir di Om Wiki yang serba tahu itu :mrgreen: Tadinya sih, sudah lupa juga, tapi gara-gara Pak Dosen memberi PR soal Permutasi, jadi ya sudah, mau tidak mau belajar lagi ilmu zaman SMP/SMU ini (eh, apa malah SD ya?).

Pertama, buat dulu fungsi faktorial. Karena fungsi ini akan dipakai minimal dua kali. Dan menurut saran Pak Dosen, hal-hal yang berulang itu, ada baiknya dijadikan fungsi saja. Untuk menghemat code, katanya. Sekalian latihan buat fungsi.

OK, langsung saja, berikut adalah fungsi faktorial sederhana dalam PHP.

<?php
/**
 * Count factorial of given number
 * @param <int> $number
 * @return <int> $result
 */
function factorial($number) {

    $result = 1;

    for ($i = 1; $i <= $number; $i++) {
        $result = $result * $i;
    }

    return $result;
}
?>

Simpan dengan nama factorial.php. Selanjutnya kita tulis kode utamanya untuk perhitungan Permutasi-k dari n benda.

<?php

include 'isUnsignedInteger.php';
include 'factorial.php';

$stdin = fopen('php://stdin', 'r');

while (!(isUnsignedInteger($k)) || !(isUnsignedInteger($n)) || ($k > $n)) {
    echo "Menghitung Permutasi-k dari n benda.n";
    echo "Masukkan nilai n: ";
    $n = trim(fgets($stdin));
    echo "Masukkan nilai k: ";
    $k = trim(fgets($stdin));
    echo "n";
}

$result = factorial($n) / (factorial($n - $k));

echo "Permutasi-" . $k . " dari " . $n . " benda adalah " . $result . "n";

fclose($stdin);
?>

Bagi yang tidak mengikuti dari awal, kode isUnsignedInteger.php bisa dilihat di sini. Simpan kode di atas dengan nama answer26.php. Dan berikut hasilnya jika kode di atas dijalankan:

C:xamppphp>php answer26.php
Menghitung Permutasi-k dari n benda.
Masukkan nilai n: 4
Masukkan nilai k: 2

Permutasi-2 dari 4 benda adalah 12

Silakan mencoba. Saya tunggu komentar dan koreksinya jika ada 😉

Published by Eric Gunawan

Happiness Engineer. WordPress Ambassador. Remote Worker. Soccer News Follower. Movie Lover. Proud Father. Lucky Husband.

One thought on “Permutasi

Leave a comment