Halaman

Minggu, 10 Agustus 2025

Mengacak isi dari sebuah Array - javascript

Mengingat waktu pelajaran saat kuliah, cara mengacak acak urutan sebuah array adalah sebagai berikut.


function RandomMyArray(Arr){

for (var i=0; i<Arr.length; i++){

var r = Math.floor(Math.random() * Arr.length);

var a = Arr[i];

Arr[i] = Arr[r];

Arr[r] = a;

}

return Arr

}


Saya menggunakan fungsi ini pada himpunan nomor 1 hingga 15 di link ini : https://soulmathonline.blogspot.com/2025/05/soal-himpunan-1-15.html

Yaitu ketika mengacak jawaban salah yang saya sediakan lebih dari 3, kemudian ambil jawaban salah urutan 3 terdepan.


Semoga bermanfaat

Penggunaan angka untuk pangkat - javascript

Untuk himpunan, ada yang namanya banyak pemetaan yang mungkin dari A ke B. Rumusnya adalah n(B) pangkat n(A). Untuk pangkatnya saya pakai ini : 

var pangkat = ["⁰","¹","²","³","⁴","⁵","⁶","⁷","⁸","⁹"];

Tidak lupa juga pakai syarat n(a) tidak sama dengan n(B), agar bisa mencantumkan salah satu jawaban salahnya adalah n(A) pangkat n(B).

Untuk lebih jelasnya bisa lihat hasilnya di nomor 8 di link https://soulmathonline.blogspot.com/2025/05/soal-himpunan-1-15.html

Semoga bermanfaat

Sabtu, 09 Agustus 2025

Mengambil anggota yang sama alias irisan - javascript

 Jika ada dua array mempunyai beberapa anggota yang sama, maka untuk mengambil beberapa anggota yang sama tersebut bisa menggunakan fungsi ini :

function irisan(arrA,arrB){

var arr = [];

for(var i=0;i<arrA.length;i++){

for(var j=0;j<arrB.length;j++){

if(arrA[i]==arrB[j]){

arr.push(arrA[i]);

}

}

}

return arr;

}


Saya gunakan dalam mencari irisan dari dua buah himpunan seperti di nomor 6 di soal ini : https://soulmathonline.blogspot.com/2025/05/soal-himpunan-1-15.html

Semoga bermanfaat

Menggabungkan dua array, diurutkan, dan delete anggota yang sama - javascript

Fungsi di bawah ini adalah untuk menggabungkan dua buah array yang berbeda, di urutkan dari terkecil ke terbesar, dan jika ada anggota yang sama maka akan di delete salah satunya.

function gabungan(arrA,arrB){

var arr = arrA.concat(arrB);

arr.sort(function(a, b){return a-b});

var fixArr = [];

var cek=arr[0];

fixArr.push(arr[0]);

for(var i=1;i<arr.length;i++){

if(arr[i]!==cek){

fixArr.push(arr[i]);

cek=arr[i];

}

}

return fixArr;

}


Penggunaannya ada di soal nomor 5 di kumpulan soal himpunan https://soulmathonline.blogspot.com/2025/05/soal-himpunan-1-15.html

Semoga bermanfaat

Mods(a,b) - Sisa pembagian a oleh b - javascript

Berikut adalah cara mencari sisa pembagian a oleh b dengan menggunakan bahasa pemrograman javascript. Saya gunakan untuk mencari bilangan ganjil, yaitu a adalah bilangan ganjil jika mods(a,2) == 1. Contoh penggunaan dalam soal matematika bisa di lihat soal himpunan di https://soulmathonline.blogspot.com/2025/05/soal-himpunan-1-15.html untuk nomor 2.

function Mods(m,n){

var m0 = m;
var m0b = m0;
var ct = 0;
do{
m0b = m0;
m0-=n;
ct++;
}while(m0>=0);
var sisa = Math.abs(m0b);
return sisa;

}


Silahkan komentar jika punya ide lain dari bentuk di atas ya ..

Terimakasih dan semoga bermanfaat

Rabu, 19 Maret 2025

Javascript - random tempat jawaban ABCD

function RandomMyArray(Arr){

/* ---- RANDOM isi Array ---- */

/* Global */

for (i=0; i<Arr.length; i++){

r = Math.floor(Math.random() * Arr.length);

a = Arr[i];

Arr[i] = Arr[r];

Arr[r] = a;

}

return Arr

}

function NoJawabanBenar(Arr, jwb){

for (i=0; i<Arr.length; i++){

if (Arr[i]==jwb){

return i;

break;

}

}

}

function GetABCD(no){

var ABCD = ["A","B","C","D"]

return ABCD[no]

}


function GetSoal1(){

var ss, Ar, jawab, noBenar, textSoal, textJawab, ArFix;

ss = "Bilangan p dan q bilangan cacah dan p + q = p, maka ... </p>";

Ar = [];

Ar.push("p unsur identitas penjumlahan");

Ar.push("p unsur identitas perkalian");

Ar.push("q unsur identitas penjumlahan");

Ar.push("q unsur identitas perkalian");

jawab = Ar[2];


Ar=RandomMyArray(Ar);


noBenar = NoJawabanBenar(Ar, jawab);

textSoal = ss+" <p>A. "+Ar[0]+" <br>B. "+Ar[1]+" <br>C. "+Ar[2]+" <br>D. "+Ar[3]+"</p>";

textJawab = jawab+"</p>";


ArFix = []

ArFix.push(textSoal);

ArFix.push(textJawab);

//ArFix.push(noBenar);

ArFix.push(GetABCD(noBenar));

//console.log(ArFix);

return ArFix

}


var ss;

var ss = GetSoal1();

document.write("<p>"+ss[0]+"</p>");

document.write("Jawaban : "+ss[2]);




Untuk melihat hasil : https://galihwidosamodra.blogspot.com/2025/03/soal-random-abcd-01-identitas-operasi.html << Refresh link untuk random ABCD

Coba html dan javascript

Soal Random Jawaban

Selasa, 18 Maret 2025

Python - membuat soal SPLDV - beserta jawaban

 import random

a1 = 1

a2 = 2

b1 = 1

b2 = 2


def rdmKoef():

    return random.randint(1, 5)


def rdmSoal():

    return random.randint(1, 10)


while a1/a2== b1/b2 :

    x = rdmSoal()

    y = rdmSoal()

    a1 = rdmKoef()

    b1 = rdmKoef()

    a2 = rdmKoef()

    b2 = rdmKoef()


    c1 = a1*x + b1*y

    c2 = a2*x + b2*y


if a1==1: strA1 = "x"

else: strA1 = str(a1)+"x"

if b1==1: strB1 = "y"

else: strB1 = str(b1)+"y"

if a2==1: strA2 = "x"

else: strA2 = str(a2)+"x"

if b2==1: strB2 = "y"

else: strB2 = str(b2)+"y"


pers1 = strA1+" + "+strB1+" = "+str(c1)

pers2 = strA2+" + "+strB2+" = "+str(c2)

jawab = "x = "+str(x)+" dan y = "+str(y)


print(pers1)

print(pers2)

print(jawab)







Python - KPK beberapa angka

 def get_kpk(a,b): 

 m=a

 n=b

 p = m%n

 if p == 0: 

  return a

 elif m<n :

  m=b

  n=a

  return get_kpk(m,n)

 else :

  while m%n != 0 :

   m+=a

  return get_kpk(m,n)


def Long_get_kpk(*arr):

 a = get_kpk(arr[0],arr[1])

 for i in range(len(arr)-2):

  a = get_kpk(a,arr[i+2])

 return a


kpk = Long_get_kpk(2,3,9)

print(kpk)




Python - FPB beberapa angka

 def findFPB(a,b):

    if b==0:

        return a

    else :

        return findFPB(b, a%b)

  

def Long_get_FPB(*arr):

 a = findFPB(arr[0],arr[1])

 for i in range(len(arr)-2):

  a = findFPB(a,arr[i+2])

 return a

 

 

FPB = Long_get_FPB(16,48,8,144)

print ("FPB = " ,FPB)

FPB = Long_get_FPB(1,15,20,40,35)

print ("FPB = " ,FPB)




Senin, 17 Maret 2025

Python - Statistik - Mean, Median, Modus - data tunggal

import random


#random data -------------------------------

mydata = [[10,1],[20,1],[30,1],[40,1],[50,1],[60,1],[70,1],[80,1],[90,1],[100,1]]

frek = [1,2,3,4,5,5,6,7,8,9]

nn = len(frek)


def acakfrek(_frek):

    nn = int(len(_frek))

    for i in range(nn):

        m = random.randint(0, nn-1)

        n = random.randint(0, nn-1)

        temp = _frek[m]

        _frek[m] = _frek[n]

        _frek[n] = temp

    return _frek  

frek = acakfrek(frek)


#mengisi data khusus frekuensi

def isiDataf(_data, _frek):

    _mydata = _data

    for i in range(nn):

        _mydata[i][1] = frek[i]



#mencari total frekuensi

def totf(arr):

    totalf = 0

    for i in range(len(arr)):

        totalf += arr[i]

    return totalf

    


#mean ------------------------------------

def meanf(arr,totf):

    totnil = 0

    for i in range(len(arr)):

        totnil += arr[i][0]*arr[i][1]

    _mean = totnil/totf 

    return _mean



#median ----------------------------------

def fkumulatif(arr):

    ffk = []

    for i in range(len(arr)):

        tfk = 0

        for j in range(i+1):

            tfk+=arr[j]

        ffk.append(tfk)

    return ffk


def medianf(arrdata,totf):

    a1 = 0

    a2 = 0

    cektotal = totf%2

    if cektotal==0 :

        #ada2

        a1 = int(totf/2)

        a2 = a1+1 

    else :

        #ada1

        a1 = int((totf+1)/2)

        a2 = a1

    med1=0

    med2=0

    i=0

    while a1>fk[i] :

        i+=1

    med1 = i

    i=0

    while a2>fk[i] :

        i+=1

    med2 = i

    _median = (1/2)*(arrdata[med1][0]+arrdata[med2][0])

    return _median



#modus ------------------------------------

def modusf(arrdata):

    _modus = arrdata[0][0]

    fmodus = arrdata[0][1]

    for i in range(nn):

        if fmodus<arrdata[i][1]:

            fmodus = arrdata[i][1]

            _modus = arrdata[i][0]

    return _modus

 

 

isiDataf(mydata, frek)

totalfrek = totf(frek)

fk = fkumulatif(frek)

mean = meanf(mydata,totalfrek)

median = medianf(mydata, totalfrek)

modus = modusf(mydata)

print("mydata     = ",mydata)

print("totalfrek  = ",totalfrek)

print("fkumulatif = ",fk)

print("Mean       = ",mean)

print("Median     = ",median)    

print("Modus      = ",modus)




Minggu, 16 Maret 2025

Python - mencari KPK dua bilangan

def get_kpk(a,b): 

 m=a

 n=b

 p = m%n

 if p == 0: 

  return a

 elif m<n :

  m=b

  n=a

  return get_kpk(m,n)

 else :

  while m%n != 0 :

   m+=a

  return get_kpk(m,n)

  


KPK = get_kpk(12,15)

print("KPK dari 12 dan 15 adalah ", KPK)

Python - mencari fpb 2 bilangan dengan euclid dan rekursif

def find_fpb(a,b): 

 if b == 0: 

  return a

 else: 

  return find_fpb(b,a%b)


myFPB = find_fpb(6,8)

print("FPB dari 6 dan 8 adalah",myFPB)



Sumber : https://koding.alza.web.id/algoritma-untuk-mencari-faktor-persekutuan-terbesar-fpb/


x y dan trigonometri

Posisi x dan y jika diketahui xpusat, ypusat, sudut, dan jarak


x = xpusat + jarak*cos(sudut*Pi/180)

y = ypusat + jarak*sin(sudut*Pi/180)

Python - pola bilangan segitiga

def PolaSegitiga(n):

 return int(n*(n+1)/2)


def PrintPolaNsuku(n):

 for i in range(n):

  print(PolaSegitiga(i+1), end=" ")


PrintPolaNsuku(10)

Python - pola bilangan persegipanjang

def PolaPersegiPanjang(n):

 return n*(n+1)


def PrintPolaNsuku(n):

 for i in range(n):

  print(PolaPersegiPanjang(i+1), end=" ")


PrintPolaNsuku(10)

Python - pola bilangan persegi

def PolaPersegi(n):

 return n*n


def PrintPolaNsuku(n):

 for i in range(n):

  print(PolaPersegi(i+1), end=" ")


PrintPolaNsuku(10)

Python - triple pythagoras

#Triple pythagoras adalah pasangan 3 angka bulat yang memenuhi rumus pythagoras a² + b² = c², dimana c adalah angka terbesar dari pasangan tersebut.


#Triple pythagoras 20 pasang

max = 20

print ("Triple pythagoras")

for i in range(max):

 p = i+3

 n = i+4

 if n%2 != 0 :

  a = n

  b = n*n/2 - 0.5

  c = n*n/2 + 0.5

 else:

  a = n

  b = n*n/4 - 1

  c = n*n/4 + 1

 a = int(a)

 b = int(b)

 c = int(c)

 print(a," ",b," ",c)


Sabtu, 15 Maret 2025

Python - segitiga pascal - dengan rumus kombinasi nCr

#Segitiga Pascal #Mencari_kombinasi 

def faktorial(n): 

 if n==0:

  return 1

 else:

  return n*faktorial(n-1)


def kombinasi(n,r):

 tmp = ((faktorial(n))/(faktorial(n-r)*faktorial(r)))

 return int(tmp)


def SegitigaPascal(m):

 n = m+1

 for i in range(n):

  for j in range(i+1):

  tmp = str(kombinasi(i,j))

  print(tmp, end=" ")

 print()


SegitigaPascal(6)

Python - Deret Fibonacci

def fibo(n):

 if n<3 :

  return 1

 else :

  return fibo(n-1)+fibo(n-2)


def deretFibo(n):

 tmp = ""

 for i in range(n):

  tmp+=str(fibo(i+1))+" "

 return tmp

  

y = deretFibo(6)

print(y)

Python - Fibonacci - Un

def fibo(n):

if n<3 :
  return 1
else :
  return fibo(n-1)+fibo(n-2)

x = fibo(6)
print(x)

Python - mencari Sn deret Geometri

Bentuk dasar

Function Sn_Geometri(a, r, n)

  if n == 1

      return a

  else 

   return Sn_Geometri(a, r, n-1) + (a*Pow(r, n-1))


--------------------------------------------------

#Format python 

import math

def Sn_Geometri(a, r, n) :

  if n == 1 :

   return a

  else :

   return Sn_Geometri(a, r, n-1) + (a*math.pow(r, n-1))


Sn = Sn_Geometri(1,2,3)

print(Sn)

Python - mencari Sn deret Aritmatika

Bentuk dasar

Function Sn_Aritmatika(a, b, n)

  if n == 1

      return a

  else 

   return Sn_Aritmatika(a, b, n-1) + (a+(n-1)*b)


--------------------------------------------------

Format python

def Sn_Aritmatika(a, b, n) :

  if n == 1 :

      return a

  else :

   return Sn_Aritmatika(a, b, n-1) + (a+(n-1)*b)


Sn = Sn_Aritmatika(1,1,10)

print(Sn)

Pecahan di Python

from fractions import Fraction

a = Fraction(1,4)

b = Fraction(2,4)

c = a + b

print(c)

print(a," ",b)


Hasil output

3/4 

1/4 1/2


-----

3/4 adalah c setelah penjumlahan a+b

1/4 adalah a

1/2 adalah b (penyederhanaan dari 2/4)








Online editor untuk Python

Barusan ketemu online editor untuk python. Catet ah di sini.

https://www.online-python.com/

Jumat, 14 Maret 2025

Python - faktorial dengan rekursif

def faktorial(n) :

 if n==0 :

  return 1

 else :

  return n*faktorial(n-1)

  

x = faktorial(5)

print(x)


---------------- hasil : -----------

120


Python - Mencari permutasi nPr

 #Mencari_Permutasi


def faktorial(n) :

 if n==0 :

  return 1

 else :

  return n*faktorial(n-1)


def permutasi(n,r):

 return ((faktorial(n))/(faktorial(n-r)))  

  

def CariPermutasi(n,r):

 nCr = int(permutasi(n,r))

 return nCr


def Main():

 print("- Mencari Permutasi -")

 n = int(input("n   = "))

 r = int(input("r   = "))

 x = CariPermutasi(n,r)

 print("C(",n,"," ,r,") = ", x)


Main()



Di atas : coding
Gambar : ketika dijalankan

Python - Mencari kombinasi nCr

 #Mencari_Kombinasi


def faktorial(n) :

 if n==0 :

  return 1

 else :

  return n*faktorial(n-1)


def kombinasi(n,r):

 return ((faktorial(n))/(faktorial(n-r)*faktorial(r)))  

  

def CariKombinasi(n,r):

 nCr = int(kombinasi(n,r))

 return nCr


def Main():

 print("- Mencari Kombinasi -")

 n = int(input("n   = "))

 r = int(input("r   = "))

 x = CariKombinasi(n,r)

 print("C(",n,"," ,r,") = ", x)


Main()



Di atas : coding

Gambar : ketika dijalankan

Python - memanggil file py - dan menggunakannya

Buat file mymodule.py berisi :

#module kabataku

def kali(a, b):

 return a*b

def bagi(a, b):

 return a/b

def tambah(a,b):

 return a+b

def kurang(a,b):

 return a-b


-----------------------
paggil file mymodule.py dan menggunakan

#memanggil file mymodule
import mymodule

print("kali 4 x 2 : ", mymodule.kali(4,2))
print("bagi 4 / 2 : ", mymodule.bagi(4,2))
print("tambah 4 + 2 : ", mymodule.tambah(4,2))
print("kurang 4 - 2 : ", mymodule.kurang(4,2))


------------------
Hasil


Kamis, 06 Maret 2025

Jumlah n suku pertama deret aritmatika di python

 rumusnya jumlah n suku pertama dari deret aritmatika


Sn = jumlah suku ke n 

rumus

Sn = n/2 * (a + Un)


dimana

n  : banyak suku

a  : suku ke 1

Un : suku ke n


berarti harus ada 3 inputan:


inp_n = input("masukkan n : ")

inp_a = input("masukkan a : ")

inp_Ua = input("masukkan Un : ")


Jangan lupa angkanya dijadikan integer

inp_n = int(inp_n)

inp_a = int(inp_a)

inp_Un = int(inp_Un)


untuk fungsi :

def Sn(n,a,Un):

 out_Sn = n/2 * (a + Un)

 print("Sn = ", out_Sn)


misalkan deret ini : 1, 4, 7, 10

berarti 

a = 1

n = 4

Un = 10

maka



Penggunaan input di python

 Bisa dijalankan di komputer yang sudah diinstall python.


misal ada fungsi cetak angka : 

def SegitigaAngka(n):

for i in range(n):

for j in range(i):

print(j+1, end=" ")

print()


Kemudian fungsi input :

def MasukkanAngka():

    angka = input("masukkan angka : ")

    angka = int(angka)

    SegitigaAngka(angka+1)


Selanjutnya tinggal menjalankan fungsi input:







Menjadikan fungsi di python

awal :

--------------------------------------

for i in range(10):

for j in range(i):

print(j+1, end=" ")

print()


ketika dijadikan fungsi :

--------------------------------------

def SegitigaAngka(n):

for i in range(n):

for j in range(i):

print(j+1, end=" ")

print()


SegitigaAngka(10)


untuk pemanggilannya menggunakan : SegitigaAngka(10)


hasilnya sama: 



Print pola angka di python

saya ingat kembali waktu jaman kuliah di berikan tugas seperti ini: 


nah, saya coba utak utik menggunakan python, dan ketemu ....

berikut perintahnya :

for i in range(10):

for j in range(i):

print(j+1, end=" ")

print()