Kann man mit pgfmath eigentlich alle Permutationen einer Zahlenliste bestimmen?

Z.B. für 1,2,...,6 wäre

alt text

ein mögliches Ergebnis.

Für das einfache Beispiel 1,2,3 wäre das Ergebnis:

alt text

Im Handbuch findet man den Begriff, allerdings in Verbindung mit 'random' und 'Lua'. In Lua bin ich nicht so bewandert.

Falls es nicht gehen sollte würde ich selbst eher in Richtung SageTeX weiterforschen.

Öffne in Overleaf
%\documentclass[]{article}
\documentclass[border=5mm]{standalone}
\usepackage{amsmath}

\begin{document}
$\begin{pmatrix} 1& 2 & 3\\ 1 & 2 & 3\end{pmatrix}$,
$\begin{pmatrix} 1& 2 & 3\\ 2 & 1 & 3\end{pmatrix}$,
$\begin{pmatrix} 1& 2 & 3\\ 3 & 2 & 1\end{pmatrix}$

$\begin{pmatrix} 1& 2 & 3 & 4 & 5 & 6\\ 5 & 1 & 3 & 6 & 2 & 4 \end{pmatrix}$

\end{document}

gefragt 04 Mär '18, 09:05

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

bearbeitet 04 Mär '18, 09:34

Was hast du denn schon versucht?

(04 Mär '18, 11:14) Henri

Ich habe im Handbuch nach 'permutation' gesucht. Meinst Du jetzt, versuchen das irgendwie mit Schleifen umzusetzen oder so?

(04 Mär '18, 12:59) cis

@cis Na ja. Zu schauen ob das schon jemand für dich gemacht hat und dann fragen ob es jemand für dich machen kann zählt jetzt nicht unbedingt als Versuch.

(05 Mär '18, 01:19) Henri

Öffne in Overleaf
\documentclass{article}
\usepackage{amsmath}
\usepackage{luacode}

\begin{luacode*}
-- https://www.lua.org/pil/9.3.html
local function permgen(a, n)
   local n = n or #a
   if n == 0 then
      coroutine.yield(a)
   else
      for i=1,n do
         a[n], a[i] = a[i], a[n]
         permgen(a, n - 1)
         a[n], a[i] = a[i], a[n]
      end
   end
end

local function perm(a)
   return coroutine.wrap(function() permgen(a) end)
end

function print_permutation(a)
    local start = table.concat(a,"&") .. "\\\\"
    for p in perm(a) do
       tex.sprint("\\begin{pmatrix}")
       tex.sprint(start)
       tex.sprint(table.concat(p,"&"))
       tex.sprint("\\end{pmatrix}")
    end
end
\end{luacode*}

\begin{document}

$\directlua{print_permutation{1,2,3}}$

\end{document}

alt text

Permanenter link

beantwortet 04 Mär '18, 21:49

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 04 Mär '18, 21:52

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×27

gestellte Frage: 04 Mär '18, 09:05

Frage wurde gesehen: 4,448 Mal

zuletzt geändert: 05 Mär '18, 01:19