Gyakorlati alapok

Az új magyar autórendszám még izgalmasabb rejtélyei

 

Az előző fejezetben a témakör megfelelő előzetes kidolgozása után kilistáztuk a magyar autórendszámokat. Ez voltaképpen azt jelenti, hogy bár a problémáról kellő részletességgel nyilatkoztunk, azt csakis matematikailag és programozástechnikailag oldottuk meg, nem pedig valós, adminisztratív elvárások alapján, mert nincsenek meg az ehhez szükséges információk.

 

Ebben a fejezetben reagálunk az új autórendszámokra, amelyeket ebben az évben, azaz 2022-ben kezdtek kiosztani. A változás egyszerű és könnyen látható:

 

www.informatika-programozas.hu - Kombinatorika - Autórendszámok

 

www.informatika-programozas.hu - Kombinatorika - Autórendszámok

 

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

Míg a régi autórendszámban 3 nagybetűs karakter és 3 szám szerepel, addig az új változatban 4 karakter és 3 szám.

 

A változtatás zseniális, valószínűleg rengeteg dolgozott rajta a Belügyminisztérium matematikai kutatócsapata!

 

Nézzük meg az ehhez kapcsolódó matematikát!

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 AAAA és ZZZZ 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 AAAA-000 és ZZZZ-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 AAAA-000 és ZZZZ-999 közötti tartomány?


A 4 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 a 264 képlet alapján az 456 976 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. - AAAA-000


...


1000. - AAAA-999

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


456 976 x 1000 = 456 976 000
 

Évente (becsült) 500.000 db autórendszám kiosztása esetén ez a mennyiség elég lesz Magyarországon az elkövetkező majdnem 1000 évre (913,952 év), tehát ez a rendszámsorozat ki fog futni kb. 3022-re. Láthatóan ez már jóval nagyobb variációs mennyiség az előzőnél és megjegyzem: kis ésszel lehetett volna ezzel is kezdeni.

Ám a ténylegesen felhasznált rendszámvariációk ennél nyilvánvalóan kevesebben vannak. Erről részletesen írok az előző fejezetben.


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 7 (mert 4 karakter + 3 számról van szó). Az 1., 2., 3., 4. ciklus a betűket, a 5., 6., 7. 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]). Ha ezután a futtatásra kattintunk, akkor a JVM derekasan elkezdi listázni a variációkat és akár néhány év alatt végezhet is.

 

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

Gyors számítás: ha a kódba 1 másodperces késleltetést iktatnánk, akkor nyilvánvalóan 456 976 000 másodpercig tartana a listázás. Ez a  456 976 000  / 60 / 60 /24 képlet alapján több mint 5289 napot, azaz több mint 14 évet jelentene.

A listázást a konzol feletti piros gombra való kattintással tudjuk megállítani. Arra se számítsunk, hogy a gyorsaság miatt a konzol pontosan fogja megjeleníteni, emiatt a végeredménynél is csak 1 rövid részletet tudtam megmutatni. 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"};
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 < tomb.length; l++){
                for(int m = 0; m <= 9; m++){
                    for(int n = 0; n <= 9; n++){
                        for(int o = 0; o <= 9; o++){
                            System.out.print(tomb[i] + tomb[j] + tomb[k] + tomb[l] + "-" + m + n + o);
                            System.out.println();
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

 


Végeredmény (például):
...
AAHK-995
AAHK-996
AAHK-997
AAHK-998
AAHK-999
AAHL-000
AAHL-001
AAHL-002
AAHL-003
AAHL-004
AAHL-005