Funciones de cambio de Forma

» Trans


trans transpone datos.

escribe html [[1 2] [3 4] [5 6] [7 8]]

1 2
3 4
5 6
7 8

escribe html trans [[1 2] [3 4] [5 6] [7 8]]

1 3 5 7
2 4 6 8

» Secciona


muestra secciona lista 2 iota 10

[[0 1] [2 3 4 5 6 7 8 9]]

muestra cuenta [0 1]

2

muestra secciona lista 4 iota 10

[[0 1 2 3] [4 5 6 7 8 9]]

muestra cuenta [0 1 2 3]

4

muestra secciona lista 0 iota 10

[[] [0 1 2 3 4 5 6 7 8 9]]

muestra secciona lista 9 iota 10

[[0 1 2 3 4 5 6 7 8] [9]]

muestra secciona lista 10 iota 10

[[0 1 2 3 4 5 6 7 8 9] []]

muestra secciona lista 20 iota 10

[[0 1 2 3 4 5 6 7 8 9] []]

muestra secciona lista -2 iota 10

[[0 1 2 3 4 5 6 7] [8 9]]

muestra secciona lista -3 iota 10

[[0 1 2 3 4 5 6] [7 8 9]]

muestra secciona lista -20 iota 10

[[] [0 1 2 3 4 5 6 7 8 9]]

muestra secciona [2 abcdefghi]

[[a b] [c d e f g h i]]


» Segmenta


muestra segmenta [3 [0 1 2 3 4 5 6 7 8 9]]

[[0 1 2] [3 4 5] [6 7 8] [9]]

muestra segmenta [3 abcdefghij]

[[a b c] [d e f] [g h i] [j]]

muestra segmenta [1 [0 1 2 3 4 5 6 7 8 9]]

[[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]]

muestra segmenta [9 [0 1 2 3 4 5 6 7 8 9]]

[[0 1 2 3 4 5 6 7 8] [9]]

muestra segmenta [10 [0 1 2 3 4 5 6 7 8 9]]

[[0 1 2 3 4 5 6 7 8 9]]

muestra segmenta [0 [0 1 2 3 4 5 6 7 8 9]]

[[] [] [] [] [] [] [] [] [] [] []]


» Parte


muestra parte [5 [0 1 2 3 4 5 6 7 8 9]]

[[0 1] [2 3] [4 5] [6 7] [8 9]]

muestra parte [9 [0 1 2 3 4 5 6 7 8 9]]

[[0 1] [2] [3] [4] [5] [6] [7] [8] [9]]

muestra parte [3 [0 1 2 3 4 5 6 7 8 9]]

[[0 1 2 3] [4 5 6] [7 8 9]]

muestra parte [5 abcdefghij]

[[a b] [c d] [e f] [g h] [i j]]

muestra parte [[3 2] [0 1 2 3 4 5 6 7 8 9 10 11]]

[[[0 1] [2 3]] [[4 5] [6 7]] [[8 9] [10 11]]]

escribe html parte [[3 2] [0 1 2 3 4 5 6 7 8 9 10 11]]

0 1
2 3
4 5
6 7
8 9
10 11

muestra parte [[2 3] [0 1 2 3 4 5 6 7 8 9 10 11]]

[[[0 1] [2 3] [4 5]] [[6 7] [8 9] [10 11]]]

escribe html parte [[2 3] [0 1 2 3 4 5 6 7 8 9 10 11]]

0 1
2 3
4 5
6 7
8 9
10 11

» Parte » relación con dimenMat


muestra parte [[3 2] [0 1 2 3 4 5 6 7 8 9 10 11]]

[[[0 1] [2 3]] [[4 5] [6 7]] [[8 9] [10 11]]]

muestra dimenmat parte [[3 2] [0 1 2 3 4 5 6 7 8 9 10 11]]

[3 2 2]

muestra menosultimo dimenmat parte [[3 2] [0 1 2 3 4 5 6 7 8 9 10 11]]

[3 2]

muestra parte [[2 3] [0 1 2 3 4 5 6 7 8 9 10 11]]

[[[0 1] [2 3] [4 5]] [[6 7] [8 9] [10 11]]]

muestra dimenmat parte [[2 3] [0 1 2 3 4 5 6 7 8 9 10 11]]

[2 3 2]

muestra menosultimo dimenmat parte [[2 3] [0 1 2 3 4 5 6 7 8 9 10 11]]

[2 3]


» Parte » relación con reparte


muestra expon [ultimo [iota primero]] [10 5]

[5 [0 1 2 3 4 5 6 7 8 9]]

muestra parte expon [ultimo [iota primero]] [10 5]

[[0 1] [2 3] [4 5] [6 7] [8 9]]

muestra impon "cuenta parte expon [ultimo [iota primero]] [10 5]

[2 2 2 2 2]

muestra reparte [10 5]

[2 2 2 2 2]

Otro ejemplo:

muestra parte expon [ultimo [iota primero]] [10 9]

[[0 1] [2] [3] [4] [5] [6] [7] [8] [9]]

muestra impon "cuenta parte expon [ultimo [iota primero]] [10 9]

[2 1 1 1 1 1 1 1 1]

muestra reparte [10 9]

[2 1 1 1 1 1 1 1 1]

Otro ejemplo:

muestra expon [ultimo [iota primero]] [10 3]

[3 [0 1 2 3 4 5 6 7 8 9]]

muestra parte expon [ultimo [iota primero]] [10 3]

[[0 1 2 3] [4 5 6] [7 8 9]]

muestra impon "cuenta parte expon [ultimo [iota primero]] [10 3]

[4 3 3]

muestra reparte [10 3]

[4 3 3]


» Deforma


deforma devuelve una lista plana de la lista complicada que recibe.

muestra deforma [1 [2 [3 4]] [5 [6 7 8]]]

[1 2 3 4 5 6 7 8]

muestra deforma [[0 1] [2 3] [4 5] [6 7] [8 9]]

[0 1 2 3 4 5 6 7 8 9]

muestra deforma [[[0 1] [2 3]] [[4 5] [6 7]] [[8 9] [10 11]]]

[0 1 2 3 4 5 6 7 8 9 10 11]


» Informa


informa indica la "forma" de una lista complicada recibida.

muestra informa [0 1 2 3]

[0 0 0 0]

muestra informa [[0] 1 2 3]

[1 0 0 0]

muestra informa [[0 1] 2 3]

[2 0 0]

muestra informa [[[0] 1] 2 3]

[[1 0] 0 0]

muestra informa [[1 2 [3 4]] [5 [6 7 8]]]

[[0 0 2] [0 3]]

muestra informa [[0 1] [2 3] [4 5] [6 7] [8 9]]

[2 2 2 2 2]

muestra informa [[[0 1] [2 3]] [[4 5] [6 7]] [[8 9] [10 11]]]

[[2 2] [2 2] [2 2]]


» Reforma


reforma recibe una lista y una forma. Restituye la forma indicada a la lista dada.

muestra expon [informa deforma] [[1 2 [3 4]] [5 [6 7 8]]]

[[[0 0 2] [0 3]] [1 2 3 4 5 6 7 8]]

muestra reforma expon [informa deforma] [[1 2 [3 4]] [5 [6 7 8]]]

[[1 2 [3 4]] [5 [6 7 8]]]

muestra reforma expon [informa deforma] [[0 1] [2 3] [4 5] [6 7] [8 9]]

[[0 1] [2 3] [4 5] [6 7] [8 9]]

muestra expon [informa deforma] [[[0 1] [2 3]] [[4 5] [6 7]] [[8 9] [10 11]]]

[[[2 2] [2 2] [2 2]] [0 1 2 3 4 5 6 7 8 9 10 11]]

muestra reforma expon [informa deforma] [[[0 1] [2 3]] [[4 5] [6 7]] [[8 9] [10 11]]]

[[[0 1] [2 3]] [[4 5] [6 7]] [[8 9] [10 11]]]


» Reforma » posible aplicación


A veces es más fácil trabajar con listas planas que con listas complicadas. Se puede trabajar con una version deformada de una lista complicada, guardando con anterioridad su forma. Luego del trabajo sobre la lista plana, se restituye la forma al resultado utilizando reforma.

muestra reforma expon [informa deforma] [[1 2 [3 4]] [5 [6 7 8]]]

[[1 2 [3 4]] [5 [6 7 8]]]

muestra deforma [[1 2 [3 4]] [5 [6 7 8]]]

[1 2 3 4 5 6 7 8]

muestra impon "menos deforma [[1 2 [3 4]] [5 [6 7 8]]]

[-1 -2 -3 -4 -5 -6 -7 -8]

muestra reforma expon [informa [impon "menos deforma]] [[1 2 [3 4]] [5 [6 7 8]]]

[[-1 -2 [-3 -4]] [-5 [-6 -7 -8]]]


» Nivela


nivela, también es conocida como ordenamiento topológico. Recibe una lista de pares. Cada par representa una relación de orden o jerarquía entre dos cosas. nivela devuelve una lista de cosas las de más alto nivel primero.

En en siguiente ejemplo:

3 tiene un nivel más alto que 4

2 tiene un nivel más alto que 3

1 tiene un nivel más alto que 2

muestra nivela [[3 4] [2 3] [1 2]]

[[1] [2] [3] [4]]

1 tiene el más alto nivel.

4 tiene el más bajo nivel.

Otro ejemplo, 3 y 4 están al mismo nivel:

muestra nivela [[2 4] [2 3] [1 2]]

[[1] [2] [4 3]]

Si 1, 2, 3 y 4 representasen actividades y si entendemos por "nivel" que una actividad se debe realizar antes que otra, entonces 3 y 4 podrían realizarse simultaneamente.


» Sincroniza


sincroniza F [A B] devuelve una lista de pares, cada par tiene por primer elemento una lista de elementos de A y por segundo elemento una lista de elementos de B. F es una función predicado.

En cada par, todos los elementos en la primera lista cumplen con la función predicado respecto de los elementos de la segunda lista.

muestra sincroniza [esmenor.o.igual lista] [[0 4] [0 1 2 3 4 5 6 7 8 9]]

[[[0] [0 1 2 3]] 
 [[4] [4 5 6 7 8 9]]]

En lo anterior, todos los elementos en la lista [0], pertenecientes a A, son menores o iguales que todos los elementos de la lista [0 1 2 3], pertenecientes a B. Además, todos los elementos en la lista [4], pertenecientes a A, son menores o iguales que todos los elementos de la lista [4 5 6 7 8 9], pertenecientes a B

Otros ejemplos:

muestra sincroniza [esmenor.o.igual lista] [[0 3 6] [0 1 2 3 4 5 6 7 8 9]]

[[[0] [0 1 2]]
 [[3] [3 4 5]]
 [[6] [6 7 8 9]]]

muestra sincroniza [esmenor.o.igual lista] [[2 4] [0 1 2 3 4 5 6 7 8 9]]

[[[] [0 1]]
 [[2] [2 3]]
 [[4] [4 5 6 7 8 9]]]

En lo anterior, no hay elementos de A que sean menores o iguales que los elementos [0 1] de B. Este hecho es representado por la lista vacía como primer elemento del primer par.

muestra sincroniza [esmenor.o.igual lista] [[0 20] [0 1 2 3 4 5 6 7 8 9]]

[[[0] [0 1 2 3 4 5 6 7 8 9]]
 [[20] []]]

En lo anterior, 20 es mayor que todos los elementos de B, es decir, no se da el caso que 20 sea menor o igual que algún elemento de B. Este hecho es representado por la lista vacía como segundo elemento del último par.

Otro ejemplo:

muestra sincroniza [esmenor.o.igual lista] [[0 1 2 3 4 5 6 7 8 9] [0 4]]

[[[0] [0]]
 [[1 2 3 4] [4]]
 [[5 6 7 8 9] []]]