Diyelim ki elimizde harflerden ve sayılardan veya sadece
sayılardan oluşan bir karakter dizisi var. Bu karakter dizisi banka hesap
numarası, konteyner numarası, ISBN
numarası vb. olabilir. Bu numaraları manuel olarak bir sisteme girdiğimizi veya
başka birisine mail ortamında bildirdiğimizi düşünelim. Peki bu karakter dizilerini
klavyeden girerken hatalı girebilir miyiz? Tabi ki evet. Peki bu karakter
dizisinin doğruluğundan nasıl emin olabiliriz? Hem de herhangi bir sistemden
sorgulamadan.
Karakterler arasında matematiksel bir bağ olsa ve son karakter (Check
Digit) bu matematiksel işlemlerin sağlaması niteliğinde olsa. Aslında bütün hikaye
bundan ibaret. Uzun karakter dizilerinin hatalı girilebilmesi ihtimaline karşı bu
diziler içerisinde yapılacak matematiksel bazı işlemlerle doğruluğunu
kontrol etmek. İşte bunun için Modülüs 11 algoritması kullanmış ve bir Check Digit'e ulaşılmış. Ben birazda işimle alakalı olduğu için bir konteyner numarasının
doğruluğunu Modülüs 11 ve Check Digit mantığı ile nasıl buluruz onu
anlatacağım.
Öncelikle konteyner numarası hakkında biraz bilgi vereyim;
- Bir konteyner numarası 4 harf 6 sayı ve 1 check digit yani
doğrulama numarasından oluşur.
- 4 harfin 3 tanesi konteyner sahibini temsil eder.
- Bu 4 harfin sonuncusu konteynerin kategorisini ifade eder ve
bu harfler U, J veya Z olabilir.
- U tüm taşıma konteynerleri için kullanılır
- J bir ekipmana bağlı fakat ayrılabilir konteynerler için
kullanılır
- Z ise dorse römork ve şasiler için kullanılır
- Devam eden 6 rakam konteynerin serisi
- En sonda bulunan rakam ise konteynerin kontrol rakamı yani
Check Digittir.
Peki bu içinde harfler bulunan karakter dizisi ile matematiksel işlemleri nasıl yapacağız?
Bunu aşağıdaki tabloda (Tablo-1) bulunan harf
değer eşlemesi yardımı ile yapacağız. Bu değerler 10 dan başlayacak ve 11’in katları
kullanılmayacak şekilde Z ye kadar verilecektir.
Tablo-1
|
||||||
A
|
10
|
N
|
25
|
|||
B
|
12
|
O
|
26
|
|||
C
|
13
|
P
|
27
|
|||
D
|
14
|
Q
|
28
|
|||
E
|
15
|
R
|
29
|
|||
F
|
16
|
S
|
30
|
|||
G
|
17
|
T
|
31
|
|||
H
|
18
|
U
|
32
|
|||
I
|
19
|
V
|
34
|
|||
J
|
20
|
W
|
35
|
|||
K
|
21
|
X
|
36
|
|||
L
|
23
|
Y
|
37
|
|||
M
|
24
|
Z
|
38
|
|||
Harfler tamam peki sayılar?
Sayılar kendi değerleri ile
alınacaklar.
Şimdi ARKU 830294-4 konteyner numarasının modulus 11 ile doğruluğunu kontrol edelim;
Şimdi ARKU 830294-4 konteyner numarasının modulus 11 ile doğruluğunu kontrol edelim;
- 4 harften oluşan prefix ve
- 6 sayıdan oluşan
seri numarasını alalalım.
- Her birinin karşısına değerlerini yazalım.
- Şimdi
çarpanları bulmak için her bir karakterin bulunduğu pozisyonu 2 nin kuvveti
olarak alalım ve karşısına yazalım. Dikkat edilmesi gereken nokta pozisyon
olarak alınacak sayıların 0 dan başlaması gerektiğidir.
- Her bir karakter için
elde edilen çarpımları toplayalım ve 11 değeri ile modunu alalım. Mod bölme
işleminde kalanı veren bir fonksiyondur.
Örn:
3 mod 2 = 1 ==> 3 ün 2 ile bölümden kalan 1 dir.
5 mod 3 = 2 ==> 5 in 3 ile bölümünden kalan 2 dir.
Karakter
Posizyonu |
Karakter
|
Karakter
Değerleri |
Çarpan
|
Çarpım
|
|
0
|
A
|
10
|
2⁰ =
|
1
|
10
|
1
|
R
|
29
|
2¹ =
|
2
|
58
|
2
|
K
|
21
|
2² =
|
4
|
84
|
3
|
U
|
32
|
2³ =
|
8
|
256
|
4
|
8
|
8
|
2⁴ =
|
16
|
128
|
5
|
3
|
3
|
2⁵ =
|
32
|
96
|
6
|
0
|
0
|
2⁶ =
|
64
|
0
|
7
|
2
|
2
|
2⁷ =
|
128
|
256
|
8
|
9
|
9
|
2⁸ =
|
256
|
2304
|
9
|
4
|
4
|
2⁹ =
|
512
|
2048
|
Toplam
|
5240
|
||||
5240 mod 11 = 4 ==> 5240 ın 11 ile bölümden kalan 4 tür ve 4 Kontrol Numaramız yani Check Digitimizdir.
