Szerteszana²

grin agymenései

Mi a leghosszabb nevű magyar település?

2014-01-28 12:49:32 írta grin

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!

Mi a leghosszabb nevű magyar település?

Szerteszana²

grin agymenései