Skip to content

Instantly share code, notes, and snippets.

@Klrfl
Last active April 29, 2025 11:57
Show Gist options
  • Save Klrfl/3eb5a13b6e3ab6c76eb71284ba9dbe77 to your computer and use it in GitHub Desktop.
Save Klrfl/3eb5a13b6e3ab6c76eb71284ba9dbe77 to your computer and use it in GitHub Desktop.
fun aritmetika question
// file tes vitest
import { it, expect, describe } from "vitest";
import { tentukanDeretAritmetika } from ".";
describe("tentukanDeretAritmetika", () => {
it("barisan aritmetika harus terdiri dari dua angka atau lebih", () => {
expect(tentukanDeretAritmetika([1])).toBe(false);
});
it("menentukan deret aritmetika dengan benar", () => {
expect(tentukanDeretAritmetika([1, 2])).toBe(true);
expect(tentukanDeretAritmetika([1, 150])).toBe(true);
expect(tentukanDeretAritmetika([1, 2, 3, 4, 5, 6])).toBe(true);
expect(tentukanDeretAritmetika([2, 4, 6, 8])).toBe(true);
expect(tentukanDeretAritmetika([2, 4, 6, 12, 24])).toBe(false);
expect(tentukanDeretAritmetika([2, 6, 18, 54])).toBe(false);
expect(tentukanDeretAritmetika([1, 2, 3, 4, 7, 9])).toBe(false);
});
});
/**
* tentukan apakah ini deret aritmetika atau bukan
* @param arr {number[]} - larik angka yang diuji
* @returns {bool} - deret aritmatika atau bukan
* */
export function tentukanDeretAritmetika(numbers: number[]): boolean {
if (numbers.length <= 1) return false;
if (numbers.length === 2) return true;
let result = true;
let delta = 0;
for (let i = 0; i < numbers.length; i++) {
const currentNumber = numbers[i];
const nextNumber = numbers[i + 1];
const currentDelta = nextNumber - currentNumber;
if (i === 0) {
delta = currentDelta;
continue;
}
// angka terakhir
if (i === numbers.length - 1) {
return result;
}
if (currentDelta !== delta) {
result = false;
break;
}
delta = currentDelta;
}
return result;
console.log('made by klrfl')
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment