(Überarbeitete Version von Wumpus Q. Wumbley über Kommentare verbessert.)Minimal zweispaltigen numerische Eingabedaten für `sort` Beispiel mit unterschiedlichen Permutationen
Was die wenigsten Reihen von zweispaltigen numerischer Eingabe ist erforderlich einzigartig herzustellen vier sort
Ausgänge für die folgenden vier Optionen:
1. -sn -k1
2. -sn -k2
3. -sn -k1 -k2
4. -sn -k2 -k1
?
Hier ist ein 6 row Beispiel (mit 4 einzigartigen Ausgängen):
6 5
3 7
6 3
2 7
4 4
5 2
Als Bequemlichkeit, eine Funktion, diese vier Ausgänge 2 Spalten von Zahlen gegeben zu zählen, (erfordert moreutils), das die Anzahl druckt einzigartige Ausgänge:
# Usage: foo c1_1 c2_1 c1_2 c2_2 ...
foo() { echo "[email protected]" | tr -s '[:space:]' '\n' | paste - - | \
pee "sort -sn -k1 | md5sum" \
"sort -sn -k2 | md5sum" \
"sort -sn -k1 -k2 | md5sum" \
"sort -sn -k2 -k1 | md5sum" | \
sort -u | wc -l ; }
So die einzigartigen Permutationen von diesem Eingang zu zählen:
8 5
3 5
8 4
diese
Run:
foo 8 5 3 1 8 3
Ausgang:
2
(nur zwei einzigartige Ausgänge. Nicht genug ...)
Hinweis, der erste Entwurf dieses Q verwendet eine andere Komfortfunktion, (die ich fälschlicherweise angenommen, würde die gleiche Ausgabe wie die aktuelle Version produzieren würde). Da indirekt die Antwort beide Versionen vergleicht, ist hier die alte Referenz:
oldfoo() { echo "[email protected]" | tr -s '[:space:]' '\n' | paste - - | \
pee "sort -k1n | md5sum" \
"sort -k2n | md5sum" \
"sort -k1n -k2n | md5sum" \
"sort -k2n -k1n | md5sum" | \
sort -u | wc -l ; }
Ihr 6-zeiliges Beispiel scheint zwischen den Zahlen unterschiedliche Leerzeichen zu enthalten. Der Abstand sieht nicht breit genug aus, um eine Registerkarte mit dem üblichen 8-Spalten-Tabstop darzustellen ... aber jetzt sehe ich, dass Sie tatsächlich Tabs in den Post setzen und das ist genau das, was der Renderer mit ihnen gemacht hat. –
Ugh, ein Fehler in 'foo()' ... 'foo 1 2 10 9 1 10 2 9' gibt' 4' zurück, aber Subtraktion * 1 * in den zwei größeren Zahlen ändert die Ausgabe und 'foo 1 2 9 8 1 9 2 8' gibt "2" zurück. – agc
Sie kennen den letzten Ausweg, richtig? Wolltest du '-s' benutzen? Wenn Sie nicht wollten, dass wir mit dem Whitespace spielen * oder * die Tatsache nutzen, dass 9 nach 10 im letzten Vergleich kommt, was genau war der Sinn? –