Program Fungsi Ackermann dengan JavaScript (Console)

Halo semuanya! Berjumpa dengan Miniblog dari Inzaghi's Blog! Fungsi Ackermann juga berhubungan erat dengan Fungsi Hiperoperasi (Hyperoperation Function). Bagaimanakah Program Fungsi Ackermann dalam Bahasa JavaScript Murni/Vanilla (Dengan Console dan Node.js)? Inilah penjelasannya!

Untuk Software-nya, Anda bisa menggunakan VS Code, dan lebih baik untuk menginstal Node.js atau Plugin JavaScript. Anda juga bisa menggunakan Online Compiler yang ada di Internet seperti Programiz.comMygreatlearning.com (JavaScript Murni), dan OnlineGDB (Node.js).

Dalam Teori Komputabilitas, Fungsi Ackermann, dinamai menurut Wilhelm Ackermann, adalah salah satu contoh paling sederhana dan paling awal ditemukan dari fungsi total yang dapat dihitung yang bukan Rekursif Primitif. Semua fungsi Rekursif Primitif bersifat total dan dapat dihitung, tetapi fungsi Ackermann mengilustrasikan bahwa tidak semua fungsi yang dapat dihitung total bersifat Rekursif Primitif.

Setelah publikasi Ackermann tentang fungsinya (yang memiliki tiga argumen bilangan bulat non-negatif), banyak penulis memodifikasinya agar sesuai dengan berbagai tujuan, sehingga saat ini "fungsi Ackermann" dapat merujuk ke salah satu dari banyak varian fungsi aslinya. Salah satu versi umum, fungsi Ackermann–Péter dua argumen didefinisikan sebagai berikut untuk bilangan bulat non-negatif m dan n :

Fungsi Ackermann A(x, y) dapat didefinisikan sebagai Bilangan Bulat x dan y dengan :


1. JavaScript Murni

Inilah Program menghitung Operasi Perbandingan dengan JavaScript Murni :

function ack(m, n) {
    if (m === 0) {
        return n + 1;
    } else if (m > 0 && n === 0) {
        return ack(m - 1, 1);
    } else if (m > 0 && n > 0) {
        return ack(m - 1, ack(m, n - 1));
    } else {
        return ack(m, n);
    }
}

console.log("Ackermann Function A(x, y)");
const x = parseInt(prompt("Insert value of x : "));
const y = parseInt(prompt("Insert value of y : "));
const A = ack(x, y);
console.log(`A(${x}, ${y}) = ${A}`);

2. Dengan Node.js

Dan inilah Program menghitung Operasi Perbandingan dengan JavaScript Node.js :

const prompt = require("prompt-sync")();

function ack(m, n) {
    if (m === 0) {
        return n + 1;
    } else if (m > 0 && n === 0) {
        return ack(m - 1, 1);
    } else if (m > 0 && n > 0) {
        return ack(m - 1, ack(m, n - 1));
    } else {
        return ack(m, n);
    }
}

console.log("Ackermann Function A(x, y)");

const x = parseInt(prompt("Insert value of x : "));
const y = parseInt(prompt("Insert value of y : "));

// Validasi input
if (isNaN(x) || isNaN(y)) {
    console.log("Input must be numbers");
} else if (x < 0 || y < 0) {
    console.log("Ackermann only defined for non-negative integers");
} else {
    const A = ack(x, y);
    console.log(`A(${x}, ${y}) = ${A}`);
}

Input dan Output :

Ackermann Function A(x, y)
Insert value of x : 3
Insert value of y : 2
A(3, 2) = 29


Mohon maaf apabila ada kesalahan sedikit pun pada Kode Program ini.

Terima Kasih 😀😊😘👌👍 :)

Post a Comment

Previous Post Next Post