ٹیسٹنگ کے مقاصد کے لیے درست، بے ترتیب CPF (کڈاسترو ڈی پیسواس فزیکاس) نمبر تیار کریں۔ یہ ٹول ایسے CPFs بناتا ہے جو برازیلی سرکاری فارمیٹ اور توثیق کے قواعد کے مطابق ہیں، بغیر کسی حقیقی ذاتی معلومات کے استعمال کے۔
CPF (Cadastro de Pessoas Físicas) ایک منفرد شناخت کنندہ ہے جو برازیل کے شہریوں اور رہائشیوں کو ٹیکس کے مقاصد کے لیے تفویض کیا جاتا ہے۔ یہ جنریٹر درست، بے ترتیب CPF نمبر تخلیق کرتا ہے جو کہ جانچ کے مقاصد کے لیے استعمال ہوتے ہیں۔ یہ نوٹ کرنا اہم ہے کہ یہ جنریٹ کردہ CPF حقیقی افراد سے وابستہ نہیں ہیں اور انہیں صرف جانچ کے ماحول میں استعمال کیا جانا چاہیے۔
ایک CPF 11 ہندسوں پر مشتمل ہوتا ہے:
فارمیٹ عام طور پر اس طرح ظاہر کیا جاتا ہے: XXX.XXX.XXX-XX
CPF کی توثیق کا الگورڈم نمبر کی سالمیت کو یقینی بناتا ہے۔ یہ کیسے کام کرتا ہے:
ایک درست CPF پیدا کرنے کا فارمولا درج ذیل ہے:
1def generate_cpf():
2 # 9 بے ترتیب ہندسے پیدا کریں
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # پہلے چیک ہندسے کا حساب لگائیں
6 sum_1 = sum((10 - i) * digit for i, digit in enumerate(base_cpf))
7 check_digit_1 = (sum_1 * 10 % 11) % 10
8
9 # دوسرے چیک ہندسے کا حساب لگائیں
10 sum_2 = sum((11 - i) * digit for i, digit in enumerate(base_cpf + [check_digit_1]))
11 check_digit_2 = (sum_2 * 10 % 11) % 10
12
13 return base_cpf + [check_digit_1, check_digit_2]
14
جنریٹر درج ذیل اقدامات انجام دیتا ہے:
یہاں کچھ جنریٹ کردہ CPFs کی مثالیں ہیں:
CPF جنریٹر مختلف سافٹ ویئر کی ترقی اور جانچ کے منظرناموں میں مفید ہے:
جبکہ CPF برازیل میں بنیادی فرد کی شناخت کنندہ ہے، کچھ مخصوص سیاق و سباق میں دیگر شناخت کنندے بھی استعمال کیے جا سکتے ہیں:
CPF کو 1965 میں برازیل میں متعارف کرایا گیا تھا تاکہ ملک کے ٹیکس کے نظام کو جدید بنایا جا سکے۔ ابتدائی طور پر، اسے بنیادی طور پر آمدنی کے ٹیکس کے مقاصد کے لیے استعمال کیا جاتا تھا، لیکن وقت کے ساتھ اس کے استعمال میں برازیل کی بیوروکریسی اور تجارت کے مختلف دیگر شعبوں میں توسیع ہوئی۔
CPF کی تاریخ میں اہم سنگ میل:
آج، CPF برازیل کے شہریوں اور رہائشیوں کی حکومت کی خدمات، مالی اداروں، اور بہت سے تجارتی معاملات کے ساتھ تعاملات کا ایک لازمی حصہ ہے۔
یہاں مختلف پروگرامنگ زبانوں میں CPFs کو جنریٹ اور توثیق کرنے کے لیے کوڈ کے ٹکڑے ہیں:
1import random
2
3def generate_cpf():
4 cpf = [random.randint(0, 9) for _ in range(9)]
5 for _ in range(2):
6 value = sum((cpf[num] * ((len(cpf) + 1) - num) for num in range(len(cpf)))) % 11
7 cpf.append(11 - value if value > 1 else 0)
8 return ''.join(map(str, cpf))
9
10def validate_cpf(cpf):
11 numbers = [int(digit) for digit in cpf if digit.isdigit()]
12 if len(numbers) != 11 or len(set(numbers)) == 1:
13 return False
14 for i in range(9, 11):
15 value = sum((numbers[num] * ((i + 1) - num) for num in range(i))) % 11
16 if numbers[i] != (11 - value if value > 1 else 0):
17 return False
18 return True
19
20## مثال کے استعمال
21cpf = generate_cpf()
22print(f"جنریٹ کردہ CPF: {cpf}")
23print(f"کیا یہ درست ہے: {validate_cpf(cpf)}")
24
1function generateCPF() {
2 const cpf = Array.from({length: 9}, () => Math.floor(Math.random() * 10));
3 for (let i = 0; i < 2; i++) {
4 let sum = cpf.reduce((acc, cur, idx) => acc + cur * (cpf.length + 1 - idx), 0);
5 let digit = 11 - (sum % 11);
6 cpf.push(digit > 9 ? 0 : digit);
7 }
8 return cpf.join('');
9}
10
11function validateCPF(cpf) {
12 const numbers = cpf.match(/\d/g).map(Number);
13 if (numbers.length !== 11 || new Set(numbers).size === 1) return false;
14 for (let i = 9; i < 11; i++) {
15 let sum = numbers.slice(0, i).reduce((acc, cur, idx) => acc + cur * (i + 1 - idx), 0);
16 let digit = 11 - (sum % 11);
17 if (numbers[i] !== (digit > 9 ? 0 : digit)) return false;
18 }
19 return true;
20}
21
22// مثال کے استعمال
23const cpf = generateCPF();
24console.log(`جنریٹ کردہ CPF: ${cpf}`);
25console.log(`کیا یہ درست ہے: ${validateCPF(cpf)}`);
26
1import java.util.Random;
2
3public class CPFGenerator {
4 private static final Random random = new Random();
5
6 public static String generateCPF() {
7 int[] cpf = new int[11];
8 for (int i = 0; i < 9; i++) {
9 cpf[i] = random.nextInt(10);
10 }
11 cpf[9] = calculateCheckDigit(cpf, 10);
12 cpf[10] = calculateCheckDigit(cpf, 11);
13 return formatCPF(cpf);
14 }
15
16 private static int calculateCheckDigit(int[] cpf, int factor) {
17 int sum = 0;
18 for (int i = 0; i < factor - 1; i++) {
19 sum += cpf[i] * (factor - i);
20 }
21 int result = 11 - (sum % 11);
22 return result > 9 ? 0 : result;
23 }
24
25 private static String formatCPF(int[] cpf) {
26 return String.format("%d%d%d.%d%d%d.%d%d%d-%d%d",
27 cpf[0], cpf[1], cpf[2], cpf[3], cpf[4], cpf[5], cpf[6], cpf[7], cpf[8], cpf[9], cpf[10]);
28 }
29
30 public static boolean validateCPF(String cpf) {
31 cpf = cpf.replaceAll("[^0-9]", "");
32 if (cpf.length() != 11) return false;
33 int[] numbers = cpf.chars().map(Character::getNumericValue).toArray();
34 if (allEqual(numbers)) return false;
35 int digit10 = calculateCheckDigit(numbers, 10);
36 int digit11 = calculateCheckDigit(numbers, 11);
37 return numbers[9] == digit10 && numbers[10] == digit11;
38 }
39
40 private static boolean allEqual(int[] array) {
41 for (int i = 1; i < array.length; i++) {
42 if (array[i] != array[0]) return false;
43 }
44 return true;
45 }
46
47 public static void main(String[] args) {
48 String cpf = generateCPF();
49 System.out.println("جنریٹ کردہ CPF: " + cpf);
50 System.out.println("کیا یہ درست ہے: " + validateCPF(cpf));
51 }
52}
53
یہ مثالیں Python، JavaScript، اور Java میں CPFs کو جنریٹ اور توثیق کرنے کا طریقہ دکھاتی ہیں۔ آپ ان افعال کو اپنی مخصوص ضروریات کے مطابق ڈھال سکتے ہیں یا انہیں ایسے بڑے نظاموں میں ضم کر سکتے ہیں جنہیں CPF کی ہینڈلنگ کی ضرورت ہوتی ہے۔
جنریٹ کردہ CPFs کا استعمال کرتے وقت، درج ذیل نکات کو ذہن میں رکھنا ضروری ہے:
آپ کے ورک فلو کے لیے مفید ہونے والے مزید ٹولز کا انعام کریں