1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
#!/usr/bin/perl use strict; use warnings; use 5.010; sub even { return $_[0] % 2 == 0 } sub hausnummer_liste { my $nummer = shift; my @liste; # Nummern sind ; getrennt $nummer =~ /;/ and @liste = split( /;/, $nummer ) and return @liste; # Nummern sind 1-42 oder 1-1f if ( my ( $von, $vona, $nach, $nacha ) = $nummer =~ /^(\d+)([a-z])?-(\d+)([a-z])?$/i ) { if ( $vona || $nacha ) { push @liste,$von if not $vona; # Nummer ohne Suffix auch merken push @liste, "$von$_" for ( ( $vona || 'a' ) .. ( $nacha || 'z' ) ); # Suffixreihe erzeugen return @liste; } else { # gerade Nummern even($von) and even($_) and push @liste, $_ for ( $von .. $nach ); # ungerade Nummern !even($von) and !even($_) and push @liste, $_ for ( $von .. $nach ); return @liste; } } else { return $nummer; } } say for hausnummer_liste('1;3;99'); say ""; say for hausnummer_liste('1a-1e'); say ""; say for hausnummer_liste('1-7'); say ""; say for hausnummer_liste('2-11'); say ""; say for hausnummer_liste('11a;12;13-1'); say ""; say for hausnummer_liste('42');
sub even { return $_[0] % 2 == 0 }
return $nummer if $von >= $nach; # kann 7-1 oder 2-2 sein
Quote1-5 -> 1,3,5 (sind nur ungerade ganze Zahlen vorhanden, dann eine Liste)
QuoteIch will mal ganz destruktiv behaupten, dass das einfach nicht geht, was du willst. Du brauchst eine Datenbank mit allen Straßen und Hausnummern.
Quote1-5 kann aber auch 3a oder 3q enthalten.
Quote...wieder irgendwie anders geregelt ist.
QuoteIch habe für ein Projekt Daten der Katasterämter bekommen. Die wissen genau, welche Hausnummern es wo gibt und welche nicht. Diese zu bekommen ist aber alles andere als einfach und zur großen Freude sind sie auch völlig unterschiedlich organisiert und daher von verschiedensten Datenformaten, auch wenn da gerade eine Vereinheitlichung im Gange ist.
QuoteWenn du mal Google Maps (die Konkurrenz) benutzt, siehst du, dass die sehr offensichtlich solche Daten haben.
QuoteBei Openstreetmap ist ja teilweise schon jede Straßenlaterne eingezeichnet, indem Freiwillige die Positionen erfasst haben. Die naheliegende Lösung wäre also, dass diese Freiwilligen auch die Hausnummern aufzeichnen.
Quotewarum ich bei 2 Autobahn-Kreuzen jeweils auf die Abfahrt fahren sollte und mich dann immer jeweils links halten sollte, sodass ich am Ende wieder auf den Haupt-Fahrspuren gelandet wäre, erschloss sich mir nicht. Habe ich dann auch nicht gemacht.
2014-09-03T13:53:01 CrianVenedig ist nun nicht in Deutschland, aber da gibt es z.B. gar keine (relevanten) Straßennamen, die haben die Häuser alle durchnummeriert. Ich hoffe, das ist ein ziemlich einmaliger Fall.