Thread Hausnummern parsen
(29 answers)
Opened by jan99 at 2014-09-02 08:05 Code (perl): (dl
)
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'); ergibt: 1 3 99 1 1a 1b 1c 1d 1e 1 3 5 7 2 4 6 8 10 11a 12 13-1 42 //EDIT: garantiert gibt es Perl-Code der noch viel kürzer ist aber schwerer nachvollziehbar ;) Aber hier sollen Leute auch lernen können und nicht Perl-Golf spielen. EDIT2: vergessene Anfangszahl einer Reihe falls ohne Suffix Last edited: 2014-09-02 12:32:41 +0200 (CEST) |