Programación en shell

Iniciado por Lariscal23, 6 Diciembre 2021, 19:58 PM

0 Miembros y 1 Visitante están viendo este tema.

Serapis

#10
Ya. Pero las respuestas han sido dadas.

Lo único que no se ha detallado es el cálculo de la entropía que debe uno asumir que es justamente lo que estais estudiando y en lo que debeis demostrar que habeis comprendido. Si uno resuelve eso, por vosotros, no mereciríais entonces la nota que os den, pues no os la habríais ganado al resolveros la tarea.

Solo aclararé por si quedan algunas dudas que en todo sistema, la suma de las probabilidades de aparición de cada símbolo (que aparecen en el sistema concreto) debe ser igual a 1, pués es lo mismo que decir la suma de las partes equivalen al todo (obvio, no?).

Inicialmente, por teoría: la frecuencia de aparación de cada símbolo (cáracter) en este caso sería 1/96. Como decía más arriba, si el texto tiene exactamente 96 caracteres y cada uno aparece una sola vez (lo que se llama ideal), entonces cada caracter aparece exactamente 1/96 que multiplicado por 96 (o 1/96 + 1/96... es decir 96 sumas) = 1
El 96 viene de que son 96 los caracteres imprimibles, pués es de asumir que tirais de un fichero de texto. Salvo que el profesor os hubiera indicado expresamente algo como a-z = A-Z... en cuyo caso las 'cuentas' deben cambiar.

Entonces, vuestro trabajo es considerar la cantidad de caracteres que contiene la línea y contar la aparición de cada símbolo-carácter, y así determinar su frecuencia de aparición. La suma luego de todas las probabilidades debe sumar 1 (o 0.9999999 que puede darse por un asunto de falta de precisión). No hagais redondeos en las probabilidades, a lo sumo eliminad lo que exceda de 4 decimales. incluso un valor 0.98 el profesor entenderá que ha sido resuelto... y dirá lo que oportunamente considere respecto de la precisión si lo considera necesario.

Pongo un ejemplo y no diré más:
-------------------------------------------------
Si tengo el texto: "independientemente"
Los símbolos únicos son: i,n,d,e,p,m,t
Cuantas veces aparece cada símbolo?:
i= 2
n= 4
d= 2
e= 6
p= 1
m= 1
t= 2
Cuantas letras hay?: 18
Entonces cual es la probabilidad con que aparece cada carácter?:
i= 2/18 = 0'1111
n= 4/18 = 0'2222
d= 2/18 = 0'1111
e= 6/18 = 0'3333
p= 1/18 = 0'0555
m= 1/18 = 0'0555
t= 2/18 = 0'1111
Cuánto suman las probabilidades?:
0'1111 + 0'2222 + 0'1111 + 0'3333 + 0'0555 + 0'0555 + 0'1111 = 0'9998

Otra cosa aparte es, si os piden cuantos bits se precisan para representar cada simbolo, pero asumo que eso en todo caso sería más adelante si tratais la compresión, aunque quizás paseis por encima de soslayo pues es parte de la teoria de la información, pero sin profundizar. La compresión no deja de ser un tema más profundo y no descarto que algún profesor esté tentado de hacer algún ejercicio simple, relativo a sencillos cálculos.


Relee las respuestas, está prácticamente todo ahí... decir o hacer más, ya supone hacer la tarea.



Releyendo tu mensaje incluso suena (quizás) un poco a pitorreo, puede parecer contradictorio,  quizás porque fue un copy/paste, o por lo menos se presta a 'diferentes' interpretaciones, cómo mínimo están desordenadas las ideas, o se ha manipulado inadecuadamente. Desde luego su redacción queda defectuosa tal como se presenta.

Cita de: informatica123456 en 13 Diciembre 2021, 09:25 AM
Crear una archivo de fuente de información
 Se pedirá el nombre de fichero por pantalla
 En el caso de que el archivo exista ya se mandará un mensaje de error
y no se hará nada.
Si el archivo no existe se creará de la siguiente
manera:
• Se pedirá el número de mensajes que tiene la fuente de
información
• Se pedirán las probabilidades de cada mensaje de una en una
hasta completar el fichero.
Al finalizar la toma de probabilidades, si la suma de las mismas no es
1 se mostrará un mensaje de error y se borrará el fichero.
Primero dice 'crear' un fichero, pero luego dice que si existe (será si existía uno del mismo nombre previo a crearlo), luego toca solicitar el nombre antes de crearlo.
Si ya existe, es lógico que se utilice (ese mismo) en vez de intentar crear otro, luego el mensaje de error procedente sería algo como: "El fichero ya existe, abriremos ese en vez de crear otro..." , por lo que esa frase de: "...no se hará nada", es de suponer que se refiere a "no se intentará crear otro si ya existe", y por tanto seguir adelante...

Pero luego la siguiente parte del enunciaod dice: "si no existe se creará de la siguiente manera...", que no se detalla (asumo que se puede haber retirado esa parte o que va en distinto orden).
Y al final lo que se espera que se haga con el fichero difiere solo de lo que solicitaba 'Lariscal...', en que en el caso de el/ella, solo se pedía para una determinada línea, y en tu caso se pide para cada línea del fichero, además vas contando las líneas que tiene el mismo porque también se exige.

La diferencia de detalles es tan nimia y simple que uno debiera ser capaz de hacer las ligeras modificaciones de código precisas.