// ------------------------------------------------------------
// Function: generate_number
// Purpose: Create one 3-digit integer with distinct digits,
// drawn from a shared pool of available digits.
// The first digit is never zero, so the result
// is always a true 3-digit integer.
// ------------------------------------------------------------
function generate_number(available_digits: string[], length: number = 3): number {
// Choose the first digit from the pool, excluding '0'
const non_zero_digits: string[] = available_digits.filter((d: string): boolean => d !== "0");
const first_digit: string = non_zero_digits[Math.floor(Math.random() * non_zero_digits.length)];
// Remove first digit from pool
const firstIndex: number = available_digits.indexOf(first_digit);
available_digits.splice(firstIndex, 1);
// Choose the remaining digits from the updated pool
const remaining: string[] = [];
for (let i: number = 1; i < length; i++) {
const d: string = available_digits[Math.floor(Math.random() * available_digits.length)];
remaining.push(d);
// Remove chosen digit
const idx: number = available_digits.indexOf(d);
available_digits.splice(idx, 1);
}
// Build the number as a string, then convert to int
const digits_str: string = first_digit + remaining.join("");
return parseInt(digits_str, 10);
}
// ------------------------------------------------------------
// Function: generate_three_distinct_digit_numbers
// Purpose: Produce three integers, each with distinct digits,
// and no digit repeated across all three numbers.
// All numbers are guaranteed to be 3 digits long.
// ------------------------------------------------------------
function generate_three_distinct_digit_numbers(): [number, number, number] {
// Start with all digits 0–9 as strings
const digits: string[] = [];
for (let i: number = 0; i < 10; i++) {
digits.push(String(i));
}
// Generate three numbers, each 3 digits long
const n1: number = generate_number(digits);
const n2: number = generate_number(digits);
const n3: number = generate_number(digits);
return [n1, n2, n3];
}
// ------------------------------------------------------------
// Main execution
// ------------------------------------------------------------
for (let i: number = 0; i < 5; i++) {
const result: [number, number, number] = generate_three_distinct_digit_numbers();
console.log(`(${result[0]}, ${result[1]}, ${result[2]})`);
}
/*
run:
(639, 850, 271)
(675, 419, 203)
(469, 251, 380)
(801, 345, 296)
(543, 270, 196)
*/