Gyakorlati alapok

Mikori az autórendszám?

 

A fejezet elméleti megközelítései A magyar autórendszám izgalmas rejtélyei című fejezetben kerültek kidolgozásra.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Ennek legfontosabb következtetése, hogy az algoritmus kellő információk hiányában csak részben tudja megmutatni a valós autórendszámkiadás listáját, tehát a megközelítés tisztán matematikai.

 

Ennek előzménye a következő volt.


Amint a magyar járműveken láthatjuk, a magyar autórendszám kis kivételtől eltekintve 3 db nagybetűs karakterből és 3 db számból áll:

 

www.informatika-programozas.hu - További információk!

A kivételek az ideiglenes-, és egyéb rendeltetésű rendszámok; ezek E-Z-P nagybetűk valamelyikével kezdődnek és további 5 számkaraktert tartalmaznak, velük nem foglalkozunk.

Az alap karakterkészlet angol nyelv gyökerű, mert láthatóan nincsenek megengedve a nemzeti betűkarakterek, például Ű, ebből következően 26 nagybetűből áll...
 

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
 

...így értékkészlete AAA és ZZZ között váltakozik.

A számok értékkészletét sem nehéz kitalálnunk, hiszen 000 és 999 között mozog. Ha a 2 csoportot egyesítjük, akkor a teljes értékkészlet AAA-000 és ZZZ-999 között lesz. Ez veti fel a legfontosabb kérdést, miszerint mekkora lesz a teljes variációs lehetőség, azaz AAA-000 és ZZZ-999 közötti tartomány?


A 3 db nagybetű variálgatása tisztán kombinatorikai kérdés, annak ismétléses variációs változata és a végeredmény nem is olyan lesújtó, hiszen a 263 képlet alapján az 17576 lesz. Ehhez jön sorozatonként az 1000-szeres szorzó, hiszen 1 betűsorozathoz 1000 db további számvariáció illeszthető. Például:


1. - AAA-000


...


1000. - AAA-999

Tehát a fenti részeredményt még meg kell szorozni 1000-rel:


17576 x 1000 = 17 576 000
 

www.informatika-programozas.hu - További információk!

 

A különbség A magyar autórendszám izgalmas rejtélyei című fejezethez képest, hogy ebben az évben (2022) a Belügyminisztérium lezárta ezen típusú rendszámok kiadását és újra tért. Erről részletesen írok Az új magyar autórendszám még izgalmasabb rejtélyei című fejezetben.

 

Az 17 576 000 db rendszámkiadás, mint elméleti összvariációs lehetőség tehát a 2022. évvel lezártnak tekinthető, ez egyúttal azt is jelzi, hogy ezt a mennyiséget (vagy számomra nem megállapítható hányadát) 2022 - 1990 = 32 év alatt "fogyasztották el". Ez évente a 17 576 000 / 32 képlet alapján 549250 db rendszámkiadást jelent (ez eddig csak becsült érték volt).


A rendszámtömeg teljes matematikai listázásához kvázinukleáris kombinatorikai szuperfegyverünket töltjük csőre, ami az egybeágyazott for ciklusok használata. Kombinációs mélysége mindig annyi lesz, amennyi a variálandó karakterek száma, jelen esetünkben 6 (mert 3 karakter + 3 számról van szó). Az 1., 2., 3. ciklus a betűket, a 4., 5., 6. ciklus a számokat variálja. Az angol nagybetűs karakterkészletet érdemes letennünk egy állandó, String típusú tömbbe...

 

String[] tomb = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}

 

...mert így elemeire könnyű lesz hivatkozni (tomb[x]).

 

A további különbség az eddigi listázó kódokhoz képest: most csakis arra vagyunk kíváncsiak, hogy mely rendszámoknál voltak az évfordulók. Ehhez kapcsolatot kell teremtenünk a rendszámkiadás konkrét számlálója (alább int count) és az évente kiadott rendszámmennyiség közt (549250). A trükk egyszerűen megvalósítható: ha count számláló 549250-tel osztott maradéka 0 (if(count % 549250 == 0)), akkor az éppen az évforduló váltáspontja és pontosan ott kell elkapnunk a rendszámot.


Nézzük meg a futtatható Java-kódot:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
String[] tomb = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
int count = 1;
int year = 1990;
for(int i = 0; i < tomb.length; i++){
    for(int j = 0; j < tomb.length; j++){
        for(int k = 0; k < tomb.length; k++){
            for(int l = 0; l <= 9; l++){
                for(int m = 0; m <= 9; m++){
                    for(int n = 0; n <= 9; n++){
                        if(count == 1) {
                            System.out.println(year + ".ev: " + tomb[i] + tomb[j] + tomb[k] + "-" + l + m + n
                                                        + " (Sorszam: " + count + ".)");
                        }
                        if(count % 549250 == 0) {
                            year++;
                            System.out.println(year + ".ev: " + tomb[i] + tomb[j] + tomb[k] + "-" + l + m + n
                                                        + " (Sorszam: " + count + ".)");
                        }
                        count++;
                            }
                        }
                    }
                }
            }
        }
    }
}

Végeredmény:
1990.ev: AAA-000 (Sorszam: 1.)
1991.ev: AVD-249 (Sorszam: 549250.)
1992.ev: BQG-499 (Sorszam: 1098500.)
1993.ev: CLJ-749 (Sorszam: 1647750.)
1994.ev: DGM-999 (Sorszam: 2197000.)
1995.ev: EBQ-249 (Sorszam: 2746250.)
1996.ev: EWT-499 (Sorszam: 3295500.)
1997.ev: FRW-749 (Sorszam: 3844750.)
1998.ev: GMZ-999 (Sorszam: 4394000.)
1999.ev: HID-249 (Sorszam: 4943250.)
2000.ev: IDG-499 (Sorszam: 5492500.)
2001.ev: IYJ-749 (Sorszam: 6041750.)
2002.ev: JTM-999 (Sorszam: 6591000.)
2003.ev: KOQ-249 (Sorszam: 7140250.)
2004.ev: LJT-499 (Sorszam: 7689500.)
2005.ev: MEW-749 (Sorszam: 8238750.)
2006.ev: MZZ-999 (Sorszam: 8788000.)
2007.ev: NVD-249 (Sorszam: 9337250.)
2008.ev: OQG-499 (Sorszam: 9886500.)
2009.ev: PLJ-749 (Sorszam: 10435750.)
2010.ev: QGM-999 (Sorszam: 10985000.)
2011.ev: RBQ-249 (Sorszam: 11534250.)
2012.ev: RWT-499 (Sorszam: 12083500.)
2013.ev: SRW-749 (Sorszam: 12632750.)
2014.ev: TMZ-999 (Sorszam: 13182000.)
2015.ev: UID-249 (Sorszam: 13731250.)
2016.ev: VDG-499 (Sorszam: 14280500.)
2017.ev: VYJ-749 (Sorszam: 14829750.)
2018.ev: WTM-999 (Sorszam: 15379000.)
2019.ev: XOQ-249 (Sorszam: 15928250.)
2020.ev: YJT-499 (Sorszam: 16477500.)
2021.ev: ZEW-749 (Sorszam: 17026750.)
2022.ev: ZZZ-999 (Sorszam: 17576000.)


Fent említettük, hogy a fenti levezetés pusztán matematikai, azonban a valósághoz azért kis tapasztalattal közelíthetünk. Leginkább úgy, hogyha felfedezzük, hogy konkrét rendszámkiadáskor bizonyos betűket garantáltan kihagytak, ezek a Q, W, X és Y voltak. A betűhalmazt reprezentáló tömbünk tehát a 4 betű kivételével így fog módosulni:

 

String[] tomb = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","R","S","T","U","V","Z"}

 

Ez már csak 22 db betű, tehát a végeredmény a 223 * 1000 képlet alapján 10 648 000 teljes rendszámkiadási mennyiséget jelez. Ez 10 648 000 / 32 képlet alapján évente 332750 db rendszámkiadást jelent. Módosítsuk ezen adatokkal a kódot:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 



public class Main {
public static void main(String[] args) {
String[] tomb = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","R","S","T","U","V","Z"};
int count = 1;
int year = 1990;
for(int i = 0; i < tomb.length; i++){
    for(int j = 0; j < tomb.length; j++){
        for(int k = 0; k < tomb.length; k++){
            for(int l = 0; l <= 9; l++){
                for(int m = 0; m <= 9; m++){
                    for(int n = 0; n <= 9; n++){
                        if(count == 1) {
                            System.out.println(year + ".ev: " + tomb[i] + tomb[j] + tomb[k] + "-" + l + m + n
                                                        + " (Sorszam: " + count + ".)");
                        }
                        if(count % 332750 == 0) {
                            year++;
                            System.out.println(year + ".ev: " + tomb[i] + tomb[j] + tomb[k] + "-" + l + m + n
                                                        + " (Sorszam: " + count + ".)");
                        }
                        count++;
                            }
                        }
                    }
                }
            }
        }
    }
}

Végeredmény:

1990.ev: AAA-000 (Sorszam: 1.)
1991.ev: APC-749 (Sorszam: 332750.)
1992.ev: BIF-499 (Sorszam: 665500.)
1993.ev: CBI-249 (Sorszam: 998250.)
1994.ev: CRK-999 (Sorszam: 1331000.)
1995.ev: DJN-749 (Sorszam: 1663750.)
1996.ev: ECR-499 (Sorszam: 1996500.)
1997.ev: ESU-249 (Sorszam: 2329250.)
1998.ev: FKZ-999 (Sorszam: 2662000.)
1999.ev: GEC-749 (Sorszam: 2994750.)
2000.ev: GUF-499 (Sorszam: 3327500.)
2001.ev: HMI-249 (Sorszam: 3660250.)
2002.ev: IFK-999 (Sorszam: 3993000.)
2003.ev: IVN-749 (Sorszam: 4325750.)
2004.ev: JNR-499 (Sorszam: 4658500.)
2005.ev: KGU-249 (Sorszam: 4991250.)
2006.ev: KZZ-999 (Sorszam: 5324000.)
2007.ev: LPC-749 (Sorszam: 5656750.)
2008.ev: MIF-499 (Sorszam: 5989500.)
2009.ev: NBI-249 (Sorszam: 6322250.)
2010.ev: NRK-999 (Sorszam: 6655000.)
2011.ev: OJN-749 (Sorszam: 6987750.)
2012.ev: PCR-499 (Sorszam: 7320500.)
2013.ev: PSU-249 (Sorszam: 7653250.)
2014.ev: RKZ-999 (Sorszam: 7986000.)
2015.ev: SEC-749 (Sorszam: 8318750.)
2016.ev: SUF-499 (Sorszam: 8651500.)
2017.ev: TMI-249 (Sorszam: 8984250.)
2018.ev: UFK-999 (Sorszam: 9317000.)
2019.ev: UVN-749 (Sorszam: 9649750.)
2020.ev: VNR-499 (Sorszam: 9982500.)
2021.ev: ZGU-249 (Sorszam: 10315250.)
2022.ev: ZZZ-999 (Sorszam: 10648000.)