elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Programación en shell
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Programación en shell  (Leído 9,234 veces)
Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.355


Ver Perfil
Re: Programación en shell
« Respuesta #10 en: 13 Diciembre 2021, 18:19 pm »

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.

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.


« Última modificación: 13 Diciembre 2021, 22:33 pm por Serapis » En línea

Hadeva25184

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Programación en shell
« Respuesta #11 en: 31 Enero 2022, 13:37 pm »

Hola buenas tardes, quiero meter las distintas líneas de un documento en variables para después trabajar con ellas y no se como se hace. Me podríais ayudar porfa :(


En línea

.xAk.


Desconectado Desconectado

Mensajes: 397


F0r3v3R NeWbI3


Ver Perfil WWW
Re: Programación en shell
« Respuesta #12 en: 3 Febrero 2022, 17:43 pm »

quiero meter las distintas líneas de un documento en variables para después trabajar con ellas

sí claro, y cuál es la duda, en principio cada línea es un identificador separado por fin de línea hasta el fin del documento.

Un modo muy sencillo es cambiar la entrada y salida estandar de la shell a un archivo y tratarlo como si fuese la terminal. La salida que esperabas ver en la pantalla irá a parar al archivo.

para leer si no quieres profundizar sobre read, sed y awk son tus amigos.
En línea


Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema programacion de shell RFI
Nivel Web
skapunky 9 4,043 Último mensaje 11 Julio 2007, 01:39 am
por skapunky
Ejercicios básicos de programacion en Shell script...
Programación General
er_anyel 1 3,859 Último mensaje 8 Noviembre 2011, 10:59 am
por er_anyel
Ejercicios básicos de programacion en Shell script...
Ejercicios
er_anyel 5 9,642 Último mensaje 14 Abril 2012, 15:23 pm
por Stakewinner00
Programacion shell y awk
GNU/Linux
idelkys 0 1,261 Último mensaje 13 Julio 2012, 00:49 am
por idelkys
[PHP Shell] Poison Shell 1.0 (Version Identada)
Nivel Web
BigBear 3 6,851 Último mensaje 15 Octubre 2012, 07:52 am
por ameise_1987
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines