QR#3556

QR

1 saniyə
64 meqabayt
Asan

QR Kodları (ən kiçik ölçüsü pikselə piksel olanı aşağıda göstərilmişdir) qara və ya ağ piksellərin (modulların) kvadrat massivləridir. Bu kodlar Mövqe Tanıma Nümunələrini (kvadrat hədəf nümunələri), Zamanlama Nümunələrini (növbələşən qara və ağ xətləri), Böyük QR Kodlarda Düzləşdirmə Nümunələrini, Format Məlumatını (nöqtəli pikselləri), Böyük QR Kodlarda Versiya məlumatını və Məlumat və Səhv Düzəltmə Kod Sözlərini (boz 8 piksel blokları) ehtiva edir.

-ə- QR Kodu məlumat və səhv düzəltmə kod sözünə malikdir. Bu kod üçün ən aşağı səhv düzəltmə səviyyəsində, məlumat kod sözü və 7 səhv düzəltmə kod sözü var. Məlumat rəqəm üçün bit, simvol üçün bit, 8 bit bayt və ya Kanji üçün hər simvola bit olaraq kodlana bilər. Məlumat qruplar şəklində kodlanır: ?rejim, simvol sayı, simvol məlumat bitləri?. Rejim məlumat axını daxilində dəyişə bilər. Rejim bitlik kodla və simvol sayı isə rejim və QR Kod ölçüsündən asılı olaraq dəyişən bit sayı ilə müəyyən edilir. -ə- kodu üçün simvol sayı bitləri:

Rejim Adı

Rejim Bitləri

Sayı Bitləri

Rəqəmsal

0001

10

Alfanümerik

0010

9

8 bit bayt

0100

8

Kanji

1000

8

Bitirmə

0000

0

Bütün məlumat axını bitirmə kodu ilə sona çatır ki, əgər kifayət qədər yer yoxdursa, bu kod qısaldıla bilər. Bitirmə kodundan sonra qismən doldurulmuş hər hansı bir kod sözü 0 bitləri ilə doldurulur. Qalan kod sözləri isə növbələşən şəkildə 11101100 və 00010001 olaraq təyin edilir. Rəqəmsal sətirlər 3 rəqəm bir anda kodlanır. Əgər qalan rəqəmlər varsa, 2 rəqəm 7 bitdə və ya 1 rəqəm 4 bitdə kodlanır. Məsələn:

12345678 -> 123 456 78 -> 0001111011 0111001000 1001110

Rejim (0001) və say (8 -> 0000001000) ilə prefiks edilir, bu isə (4 + 10 + 10 + 10 +7) bitdir:

0001 0000001000 0001111011 0111001000 1001110

Alfanümerik sətirlər simvolları kodlayır (boşluq simvolunu təmsil edir):

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$%*+-./:

0-dan 44-ə qədər olan rəqəmlər kimi, sonra iki simvol 11 bitdə kodlanır:

* 45 +

əgər simvolların sayı təkdirsə, son simvol 6 bitdə kodlanır. Məsələn:

AC-42 -> (10,12,41,4,2) -> 10*45+12=462, 41*45+4=1849, 2->00111001110 11100111001 000010

Rejim və say ilə prefiks edilir (4 + 9 + 11 + 11+ 6) bitdir:

0010 000000101 00111001110 11100111001 000010

8 bit ikili və Kanji rejimləri bu problem üçün sadə olacaq. Kanji kodları sadəcə qeyri-şəffaf 13 bit kodları olacaq; onların təmsil etdiyi simvolları deşifrə etməyə ehtiyac yoxdur, sadəcə onaltılıq dəyərləri. Məsələn:

8 bit 0x45 0x92 0xa3 -> 01000101 10010010 10100011

Rejim və say ilə prefiks edilir (4 + 8 + 8 + 8 + 8) bitdir:

0100 00000011 01000101 10010010 10100011

Kanji 0x1ABC 07x0345 -> 1101010111100 0001101000101

Rejim və say ilə prefiks edilir (4 + 8 + 13 + 13) bitdir:

1000 00000010 1101010111100 0001101000101

QR Kodun 19 kod sözü məzmununu formalaşdırmaq üçün ilk 3 ardıcıllığı birləşdirin (rəqəmsal, alfanümerik və baytlar üçün). Bitləri birləşdirin, 8 bit kod sözlərinə bölün, bitirmə kod sözünü əlavə edin, hər hansı bir doldurma bitlərini və doldurma baytlarını əlavə edin (41 + 41 + 36 məlumat bitləri + 4 bit bitirmə kodu = 122 -> 16 bayt əldə etmək üçün 6 doldurma biti lazımdır və 19 baytı doldurmaq üçün 3 doldurma baytı lazımdır):

0001 0000001000 0001111011 0111001000 1001110

0010 000000101 00111001110 11100111001 000010

0100 00000011 01000101 10010010 10100011

0000 000000 11101100 00010001 11101100

8 bit kod sözlərinə bölün:

00010000 00100000 01111011 01110010 00100111 00010000 00010100 11100111

01110011 10010000 10010000 00001101 00010110 01001010 10001100 00000000

11101100 00010001 11101100 -> HEX 10207B72271014E77390900D164A8C0EC11EC

19 kod sözünü oxumaq və müvafiq məlumatları çap etmək üçün bir proqram yazın.

Giriş

Girişin ilk sətri tək bir tam ədəd P (1 le; P le; 1000) ehtiva edir, bu, ardınca gələn məlumat dəstlərinin sayıdır. Hər bir məlumat dəsti tək bir sətirdən ibarətdir, bu sətir məlumat dəsti nömrəsi N, ardınca tək bir boşluq və 38 onaltılıq rəqəm ehtiva edir ki, bu da QR Kod məlumatının 19 baytını verir. Etibarlı onaltılıq rəqəmlər 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E və F.

Çıxış

Hər bir məlumat dəsti üçün bir çıxış sətri var. Bu sətir məlumat dəsti nömrəsini (N), ardınca tək bir boşluq, nəticədə QR deşifrə edilmiş simvolların sayını, tək bir boşluq və QR Kod məlumatına uyğun gələn simvol sətirini ehtiva edir. Çıxış sətirində, çap edilə bilən ASCII simvolları (0x20 ilə 0x7e arasında) ASCII simvolu kimi çap edilir, ANCAQ əks slash (\) \ və funt işarəsi (#) \# kimi çap edilir. Çap edilə bilməyən 8 bit məlumat \xx kimi çıxarılır, burada x onaltılıq rəqəmdir (məsələn, Æ). Çap edilə bilməyən 8 bit məlumat hər hansı bir dəyərdir ki, bu, boşluq (0x20) ASCII dəyərindən az və ya 0x76-dan çoxdur. 13 bit Kanji dəyərləri #bxxx kimi çap edilir, burada b 0 və ya 1 və x onaltılıq rəqəmdir (məsələn, #13AC).

Nümunələr

Nümunə 1

Loading
Loading