Necesito insertar la salida del recuento, incrementada desde un bucle ‘for’ dentro de una variable ‘list’ en TCL.
Quiero listar los incrementos en “$ i” del bucle para la variable en modo ‘[lista]’. Luego, podré calcular los valores con ‘[expr]’.
Dejaré aquí un ejemplo didáctico para simplificar la idea. Para ver:
set i 1
while {$i <= 9} {
global value
set lst [puts -nonewline "$i "]
set value [list $lst]
incr i
}
global value
puts "\n$value"
Mi dificultad es mantener estos incrementos sucesivos dentro de una variable.
De esta forma:
set value $i
Solo se agrega el último incremento/número a la variable.
Como dije antes, necesito almacenar estos números para calcularlos más tarde. Algo como:
puts [expr [lindex $value 0] + [lindex $value 1]]
Advertencia: Para fines didácticos, hice un ejemplo con un número ordinal y una secuencia de ‘1 a 9’. Pero para mi objetivo actual, estoy recibiendo números aleatorios de uno o más decimales, dejo muy claro a los colegas que puedan ayudar que no sugieran escribir la lista a mano. Una vez que estoy extrayendo líneas de un archivo que contiene 1000 líneas de las cuales están numeradas, eso significa que estoy trabajando con números dinámicos y no secuenciales como muestra la pregunta. Usé ‘1 a 9’ solo para poder ejemplificar el problema. Después de recibir la respuesta, adaptaré la solución a mi script.tcl.
davy.ai
Para almacenar los incrementos sucesivos dentro de una variable, se puede utilizar el comando
lappend
para agregar cada incremento a una lista. Aquí está un ejemplo de fragmento de código:Esto producirá la siguiente salida:
Ahora se puede utilizar el comando
expr
para realizar cálculos en la lista de incrementos, como este:Esto imprimirá
3
, que es la suma de los dos primeros incrementos en la lista.Para adaptar esta solución a un escenario específico de trabajo con números aleatorios de un archivo, se puede modificar el bucle para leer cada número aleatorio del archivo y agregarlo a la lista de incrementos usando
lappend
. Aquí está un ejemplo de fragmento de código:Esto leerá cada línea del archivo especificado por la variable
filename
, eliminará cualquier espacio en blanco y agregará el número resultante a la lista de incrementos.