Silahkan Pilih 1 File html:
Silahkan Pilih 5 File png (1 judul 2 soal 2 pembahasan) :
Silahkan Klik Hasil Edit:
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
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
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
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
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
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)
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)
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)
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)
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)
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/
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)
def PolaSegitiga(n):
return int(n*(n+1)/2)
def PrintPolaNsuku(n):
for i in range(n):
print(PolaSegitiga(i+1), end=" ")
PrintPolaNsuku(10)
def PolaPersegiPanjang(n):
return n*(n+1)
def PrintPolaNsuku(n):
for i in range(n):
print(PolaPersegiPanjang(i+1), end=" ")
PrintPolaNsuku(10)
def PolaPersegi(n):
return n*n
def PrintPolaNsuku(n):
for i in range(n):
print(PolaPersegi(i+1), end=" ")
PrintPolaNsuku(10)
#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)
#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)
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)
def fibo(n):
if n<3 :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)
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)
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)
def faktorial(n) :
if n==0 :
return 1
else :
return n*faktorial(n-1)
x = faktorial(5)
print(x)
---------------- hasil : -----------
120
#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()
#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()
Gambar : ketika dijalankan
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
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
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:
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:
saya ingat kembali waktu jaman kuliah di berikan tugas seperti ini:
berikut perintahnya :
for i in range(10):
for j in range(i):
print(j+1, end=" ")
print()