Thread Zahlenbereich mit Ausnahmen definieren? (z.B. 1-10 ohne 5) (4 answers)
Opened by Sven_123 at 2010-06-21 10:10

murphy
 2010-06-21 10:39
#138552 #138552
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
2010-06-21T08:10:33 Sven_123
Ich möchte alle möglichen Kombinationen von Matrixelementen haben, bei denen alle Zeilen und Spalten nur jeweils einmal vorkommen. Die einfachste Möglichkeit sind, denke ich verschachtelte foreach-Schleifen, bei denen ich in den inneren Schleifen die außen benutzten Elemente nicht mehr benutze. [...]

In der Tat dürfte das eine vernünftige Lösung sein.

Quote
Da hab ich aber weder im Buch, noch im Wiki, oder der perldoc einen Ausdruck für gefunden (wobei mir auch keine wirklich passenden Suchwörter einfallen). Das ^ der Regex geht aufjedenfall nicht (ein "(1..10^5)" gibt ein (1..15) - da muss ich auch nochmal suchen, warum*g).
[...]

Das liegt daran, dass es keine spezielle Syntax dafür gibt, eine Liste natürlicher Zahlen in einem Bereich mit Ausnahme eines Wertes zu erstellen. Der Ausdruck (1..10^5) bedeutet "Liste aller Zahlen von 1 bis 10 xor 5" und 10 xor 5 ist halt 15.

Du kannst aber einfach über mehrere Indexlisten iterieren. Also zum Beispiel so:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
use 5.012;
use List::Util qw[min max];

for my $l (0..2) {
  for my $k (0..($l-1), ($l+1)..2) {
    my ($j1, $j2) = (min($l, $k), max($l, $k));
    for my $j (0..($j1-1), ($j1+1)..($j2-1), ($j2+1)..2) {
      say "l = $l, k = $k, j = $j";
    }
  }
}


Quote
[...] die unless-Schleifen [...]

Eine Abfrage mit if oder unless ist keine Schleife.
When C++ is your hammer, every problem looks like your thumb.

View full thread Zahlenbereich mit Ausnahmen definieren? (z.B. 1-10 ohne 5)