tablereverse - Maple Help

tablereverse

reverse table

 Calling Sequence tablereverse(t, c, opts)

Parameters

 t - table c - (optional) combiner function opts - zero or or more options as specified below

Options

 • nolist = truefalse
 Specifying 'nolist' or 'nolist'=true causes each entry in the output table s to be a simple collection of indices of t, without wrapping each index in a list. This is useful for tables where every index is a single object. When 'nolist' is used on a table with expression sequence indices or entries, the pairings may be difficult to deduce in the result.
 • sort = truefalse
 Specifying 'sort' or 'sort'=true indicates that each entry of the output table s should be sorted. This is only useful when a non-default combiner function c has been specified which produces ordered containers (for example a list or Array). The default value is false, which means that if the container type is ordered, the order chosen is not specified.

Summary

 • Returns a table which is the result of reversing the table t while combining keys mapping to the same value with combiner function f.

Description

 • The tablereverse function takes a table t and returns a table s which is a reversal of t, in the sense that the indices of s are the entries of t and the entries of s are a collection of the indices of t.
 • By default, each index u appearing in the output table s is mapped to an entry s[u] which is a set of lists. Each list v in the set s[u] will satisfy the property that t[op(v)]=u.
 • The optional argument c allows the specification of a combiner function c which accepts an expression sequence of inputs representing keys in t which map to the same value and returns some customized value.
 • The default combiner function is simply the set constructor {} which collects all its arguments together in a set.

Examples

 > $T≔\mathrm{table}\left(\left["apple"="fruit","orange"="fruit","zucchini"="vegetable","milk"="dairy"\right]\right)$
 ${T}{≔}{table}{}\left(\left[{"zucchini"}{=}{"vegetable"}{,}{"apple"}{=}{"fruit"}{,}{"orange"}{=}{"fruit"}{,}{"milk"}{=}{"dairy"}\right]\right)$ (1)
 > $\mathrm{tablereverse}\left(T,\mathrm{nolist}\right)$
 ${table}{}\left(\left[{"dairy"}{=}\left\{{"milk"}\right\}{,}{"vegetable"}{=}\left\{{"zucchini"}\right\}{,}{"fruit"}{=}\left\{{"apple"}{,}{"orange"}\right\}\right]\right)$ (2)

Instead of the default combiner function, use a list constructor and sort the resulting entries.

 > $\mathrm{tablereverse}\left(T,\mathrm{\left[\right]},\mathrm{nolist},\mathrm{sort}\right)$
 ${table}{}\left(\left[{"dairy"}{=}\left[{"milk"}\right]{,}{"vegetable"}{=}\left[{"zucchini"}\right]{,}{"fruit"}{=}\left[{"apple"}{,}{"orange"}\right]\right]\right)$ (3)

This table shows what ABO blood type a person has given their genetic profile.

 > $\mathrm{BloodPhenotypes}≔\mathrm{table}\left(\mathrm{symmetric},\left\{\left(\mathrm{}\left("A",2\right)\right)="A",\left(\mathrm{}\left("B",2\right)\right)="B",\left(\mathrm{}\left("O",2\right)\right)="O",\left("A","B"\right)="AB",\left("A","O"\right)="A",\left("B","O"\right)="B"\right\}\right)$
 ${\mathrm{BloodPhenotypes}}{≔}{table}{}\left({\mathrm{symmetric}}{,}\left[\left({"B"}{,}{"B"}\right){=}{"B"}{,}\left({"A"}{,}{"B"}\right){=}{"AB"}{,}\left({"A"}{,}{"A"}\right){=}{"A"}{,}\left({"O"}{,}{"O"}\right){=}{"O"}{,}\left({"A"}{,}{"O"}\right){=}{"A"}{,}\left({"B"}{,}{"O"}\right){=}{"B"}\right]\right)$ (4)
 > $\mathrm{BloodGenotypes}≔\mathrm{tablereverse}\left(\mathrm{BloodPhenotypes}\right)$
 ${\mathrm{BloodGenotypes}}{≔}{table}{}\left(\left[{"O"}{=}\left\{\left[{"O"}{,}{"O"}\right]\right\}{,}{"B"}{=}\left\{\left[{"B"}{,}{"B"}\right]{,}\left[{"B"}{,}{"O"}\right]{,}\left[{"O"}{,}{"B"}\right]\right\}{,}{"A"}{=}\left\{\left[{"A"}{,}{"A"}\right]{,}\left[{"A"}{,}{"O"}\right]{,}\left[{"O"}{,}{"A"}\right]\right\}{,}{"AB"}{=}\left\{\left[{"A"}{,}{"B"}\right]{,}\left[{"B"}{,}{"A"}\right]\right\}\right]\right)$ (5)

We can see by this result that there are multiple genetic combinations that result in type A, but only one which results in type O.

 > $\mathrm{BloodGenotypes}\left["A"\right]$
 $\left\{\left[{"A"}{,}{"A"}\right]{,}\left[{"A"}{,}{"O"}\right]{,}\left[{"O"}{,}{"A"}\right]\right\}$ (6)
 > $\mathrm{BloodGenotypes}\left["O"\right]$
 $\left\{\left[{"O"}{,}{"O"}\right]\right\}$ (7)

Compatibility

 • The tablereverse command was introduced in Maple 2019.