Mi a leghosszabb nevű magyar település?
A Nagyon Fontos Problémáknak (NFP) szükséges megoldást találni, ezért született ez a bejegyzés, tekintettel a neten található nagyszámú ostobaságra is.
A dolog úgy kezdődött hogy M. fiam már nagy hatékonysággal tudja
elolvasni az autópályán mellettünk 150-nel 129-cel elszáguldó táblák
feliratait, de csak azt amelyik nem túl hosszú. Adódik a magtól
értetődő NFP: melyik tehát az a település, mely a legvalószínűbb,
hogy kiszúr nagyded gyermekemmel, azaz kvantifikálva melyik
település neve a leghoszabb.
Zárjuk ki most Sepsiszentgyörgyöt és egyéb Világmagyarországi településeket és szorítkozzunk a trianoni bucira. Informatikusként elfogadhatatlan az a hanyagság hogy egyesek fejben próbálják a kérdést eldönteni, mikor létezik egzakt megoldás.
Mielőtt leírnám a megfejtést – mely esetben az eddigi olvasók jelentős része itt távozhatna, és így pazarlásba csapna írásom maradék része – lássuk a teljesen logikus módot, hogy mit kell ilyenkor egy épeszű embernek tennie.
Szükséges először is egy teljes településjegyzék. Optimális esetben az OpenStreetMap alapján indulnék el, de most épp nincs helyi adatbázisom, kifarigcsálni meg lusta vagyok. Ezen okokból a KSH lenne a következő célpont, azonban az erre rendelkezésre álló 45 másodpercen belül nem találtam letölthető teljes településlistát könnyedén feldolgozható formában. Maradt a triviális harmadik (melyre emlékeztem, hogy egyben lehívható): a Magyar Királyi és Császári Posta irányítószámjegyzéke.
Értelemszerűen ezt valami nemszabványos formában adják közre de nem baj, mert átalakítható, így rövid úton CSV lett belőle, ami végre szöveges. Mivel fejből nem ugrik be olyan unix parancs ami betűhosszra rendezne (és a google messze van, kattintani kellene) inkább készült rá egy rövid perl program, mely esetén mellőztem mindenfajta programtervezést és optimalizálást, eképpen:
#!/usr/bin/perl
### sorba.pl ###
binmode STDIN, ':encoding(UTF-8)';
binmode STDOUT, ':encoding(UTF-8)';
while(<>) {
@a=split /\t/;
$t{$a[1]}=length($a[1]);
}
@order = sort { $t{$b} <=> $t{$a} } keys %t;
for my $i (0..25) {
print "$i: $order[$i] - $t{$order[$i]}\n";
}
(Elnézést mindenkitől akinek megbántottam a szépérzékét!) Utólagosan kiderült hogy ha elfelejtem említeni hogy a bemenet UTF-8 kódolású (és itt a szőke dúskeblű olvasóim remélhetően már elfordultak) akkor a program az ékezettől függően rosszul számolja a hosszt, de érdekes módon mindenképp a nyertes a nyertes, mert az kettős mássalhangzókban és ékezetekben egyaránt gazdag. (Szőkék vissza!)
Így leszögezhetjük hogy a TOP10 település az alábbi:
18 betű
5: Kemenesszentmárton - 18
6: Chernelházadamonya - 18
7: Hegyhátszentmárton - 18
8: Szilvásszentmárton - 18
9: Felsőszenterzsébet - 18
10: Táplánszentkereszt - 18
11: Baranyaszentgyörgy - 18
19 betű
1: Szentkirályszabadja - 19
2: Balatonszentgyörgy - 19
3: Nyugotszenterzsébet - 19
4: Jászalsószentgyörgy - 19
És a győztes 20 betűvel Jászfelsőszentgyörgy! Gratulalálalalalalalálálálalálunk!