Mensajes: 17
Temas: 0
Registro en: Sep 2012
Edgar, dos cosas:
No quiero la solución, sólo un par de pistas, como puse en mi comentario anterior (así que no me lo he leído entero). Aunque agradezco el esfuerzo (y me lo guardo) por si más adelante no sé por dónde tirar. Gracias
No voy a operar con 0 y 1. Ya suponía que necesitaba que reconociese cada operación, etc. Yo voy a operar con letras, y es algo muy muy base lo que quiero hacer. También es otra forma de aprender a utilizar los subprogramas y los arrays, que es lo que estamos dando ahora. Poco a poco.
Tú lo que has puesto, así como he podido ver por encima, no es álgebra de Boole. Has hecho el cálculo de un circuito de puertas. Yo hablo de simplificar, por ejemplo:
äbc + abc + d
Siendo ä -> a negado.
Aunque, revisándolo otra vez, veo que es "parecido". Le echaré un ojo, a ver. Todavía no hemos aprendido a buscar en arrays, así que tendrá que ser un poco chapucero. Es lo que tiene estar en primer curso, supongo┬á XD
Muchas gracias, Edgar
Yo... ¿no tenía tu msn?
(Ultima edición: 26-10-2012 08:33 por Nikayuri.)
Sí que es álgebra de boole, la lógica binaria trabaja con las operaciones del álgebra de boole.
Led Zeppelin
Unregistered
Hola.
Si veo que más o menos puedo responder sin tener que usar el compilador iré participando en los katas, pero seguramente me pase más por el post para llorar comentar lo que voy viendo y pediros consejo.
Sobre el kata de las mayusculas, imagino que no vale la función toUpper, ¿no?┬á :
Un saludo.
Led, puedes probar en http://ideone.com/. Tienen un compilador java.
Led Zeppelin
Unregistered
Hola.
(26-10-2012 10:14)Margaruga link Led, puedes probar en http://ideone.com/. Tienen un compilador java.
Omg, compilador Online, me gusta, muchas gracias por el link. Así no me dará más incompatibilidad de path y cosas extrañas con Vista.
Un saludo.
Mensajes: 2.772
Temas: 75
Registro en: Mar 2012
He estado mirando en Phyton las listas/tuplas/diccionarios y he entendido el funcionamiento y sus diferencias pero no veo cuando usar diccionario por ejemplo en vez de una lista. Salvo por la forma de acceder para obtener el dato no soy capaz de ver diferencias prácticas de uso. Si yo creo una lista ya se que es lo que representa cada posición, ¿para que crear un "alias"?
Código:
#LISTA
navemala=[300,100,20,3]
#DICCIONARIO
navemala={"x":300,"y":100,"velocidad":20,"vida":3}
Gracias y saludos.
Mensajes: 4.596
Temas: 83
Registro en: Jul 2012
Código:
El de algebra de bool... se crea un interprete, donde se interpretan. Se puede considerar un minicompilador
0. 0 <- numeros
1. 1 <- numeros
2. &, &&, AND <- and...
3. |, ||, OR <- or...
4. !, ¬, NOT <-- negado
5. ( <--- abrir parentesis
6. ) <--- cerrar parentesis
Luego las definiciones del lenguaje, que consiste en:
a. (b, c, d, e, nothing) <-nothng means end
b. (4, nothing) 5 a 6
c. a 2 a
d. a 3 a
e. (4, nothing) (0, 1)
A partir de aquí, se hace el interprete. El ejemplo anterior:
1 AND ¬ ( 0 OR 1 AND 1 ) OR 0
se convierte en:
1 2 4 5 0 3 1 2 1 6 3 0
Interpretando:
a -> 1 2 4 5 0 3 1 2 1 6 3 0
a -> 1 2 4 5 0 3 1 2 1 6 3 0 -> c
  a -> e -> 1
  2
  a -> 4 5 0 3 1 2 1 6 3 0 -> c
    a -> 4 5 0 3 1 2 1 6 -> a -> b
    4
    5
    a -> 0 3 1 2 1 -> c
      0 3 1 -> a -> d
      0
      3
      1
      2
      1
    6
    2
    a -> 0
En el codigo el orden entre los booleanos no es trivial. La prioridad es un problema.
A partir de aqui tenemos:
0 3 1: true
true 2 1: true
4 5 true 6: false
false 3 0: false
1 2 false: false
Cuando tenga tiempo ya lo programo, pero está es la lógica del compilador que me tocó hacer en programación 2 (si, nos pusieron un compilador) hace años en la facultad.
Vamos, que este ejercicio da para mucho :)
Otra opción es... en algún manual de la facultad, de lisp, seguramente encontrareis como crear un interprete del lenguaje, que fijate tu por donde es muy parecido a esto.
[align=center]Y mientras, en SobreLoQueOpinar...
[b]Análisis: Metroid Prime 3: Corruption
Mensajes: 304
Temas: 7
Registro en: Oct 2012
(26-10-2012 08:29)Nikayuri link Edgar, dos cosas:
No quiero la solución, sólo un par de pistas, como puse en mi comentario anterior (así que no me lo he leído entero). Aunque agradezco el esfuerzo (y me lo guardo) por si más adelante no sé por dónde tirar. Gracias
No voy a operar con 0 y 1. Ya suponía que necesitaba que reconociese cada operación, etc. Yo voy a operar con letras, y es algo muy muy base lo que quiero hacer. También es otra forma de aprender a utilizar los subprogramas y los arrays, que es lo que estamos dando ahora. Poco a poco.
Tú lo que has puesto, así como he podido ver por encima, no es álgebra de Boole. Has hecho el cálculo de un circuito de puertas. Yo hablo de simplificar, por ejemplo:
äbc + abc + d
Siendo ä -> a negado.
Aunque, revisándolo otra vez, veo que es "parecido". Le echaré un ojo, a ver. Todavía no hemos aprendido a buscar en arrays, así que tendrá que ser un poco chapucero. Es lo que tiene estar en primer curso, supongo┬á XD
Muchas gracias, Edgar
Yo... ¿no tenía tu msn?
Hombre, he puesto valores lógicos porque hablabas de resolver operaciones. Lo que he escrito sí es Álgebra de Boole, son operaciones binarias. De todas maneras es exactamente lo mismo operar con valores lógicos que con proposiciones, lo único que cambiaría es que no necesitarías resolver la negación ni los operadores AND y OR, y añadir algún otro procedimiento de simplificación y/o algún recorrido más.
No uses arrays, utiliza listas enlazadas. Los arrays son muy primitivos, no utilizan memoria dinámica. Se te puede quedar corto el espacio asignado, y a la hora de añadir/eliminar valores en cierta posición tendrás que mover el resto de valores posteriores, lo cuál no sólo es un peñazo sino que es ineficiente.
De todas maneras sigo pensando que el proceso es algo farrangoso si no utilizas ningún analizador sintáctico.
(26-10-2012 10:10)Led Zeppelin link Hola.
Si veo que más o menos puedo responder sin tener que usar el compilador iré participando en los katas, pero seguramente me pase más por el post para llorar comentar lo que voy viendo y pediros consejo.
Sobre el kata de las mayusculas, imagino que no vale la función toUpper, ¿no?┬á :
Un saludo.
En parte sí. La función toUpper lo que hace es restar 32 al entero ASCII cuando es necesario. Así que para la mayoría de letras sirve, pero para los carácteres especiales españoles no. Porque estos no van codificados en ASCII, van en UTF-8. :
(26-10-2012 10:37)Babul link He estado mirando en Phyton las listas/tuplas/diccionarios y he entendido el funcionamiento y sus diferencias pero no veo cuando usar diccionario por ejemplo en vez de una lista. Salvo por la forma de acceder para obtener el dato no soy capaz de ver diferencias prácticas de uso. Si yo creo una lista ya se que es lo que representa cada posición, ¿para que crear un "alias"?
Código:
#LISTA
navemala=[300,100,20,3]
#DICCIONARIO
navemala={"x":300,"y":100,"velocidad":20,"vida":3}
Gracias y saludos.
Yo los diccionarios los veo bastantes útiles y sobre todo más cercanos a nosotros.
Código:
diccionario = {'Pepe': 988456783, 'jose': 641345678}
llamar(diccionario['Pepe'])
No son imprescindibles ni creo que no haya nada que no se pueda hacer con otras estructuras pero ahí están.
También son prácticos para implementar el switch...case en Python. Ejemplo
Código:
def funcionSuma(a, b):
    return a + b
def funcionMultiplicacion(a, b):
    return a * b
calculadora = {'+': funcionSuma, '*':funcionMultiplicacion}
calculadora['+'](5, 4) #El diccionario devuelve la variable que apunta a la función y a continuación le pasamos los parámetros que queramos.
Mensajes: 17
Temas: 0
Registro en: Sep 2012
(26-10-2012 10:50)Edgar Allan Poe link Hombre, he puesto valores lógicos porque hablabas de resolver operaciones. Lo que he escrito sí es Álgebra de Boole, son operaciones binarias. De todas maneras es exactamente lo mismo operar con valores lógicos que con proposiciones, lo único que cambiaría es que no necesitarías resolver la negación ni los operadores AND y OR, y añadir algún otro procedimiento de simplificación y/o algún recorrido más.
No uses arrays, utiliza listas enlazadas. Los arrays son muy primitivos, no utilizan memoria dinámica. Se te puede quedar corto el espacio asignado, y a la hora de añadir/eliminar valores en cierta posición tendrás que mover el resto de valores posteriores, lo cuál no sólo es un peñazo sino que es ineficiente.
De todas maneras sigo pensando que el proceso es algo farrangoso si no utilizas ningún analizador sintáctico.
Quizá sea yo la que se está expresando mal ^^
Lo que tengo que hacer es simplificar ecuaciones algebraicas de Boole, no resolverlas. Como en los mapas de Karnaugh. Los operadores serían +, x y suma/multiplicación exclusiva. Y luego las propiedades, pero las más básicas.
Tienes razón en que sería más fácil con listas, pero es que eso todavía no lo hemos dado en la carrera y el objetivo es hacerlo con lo aprendido hasta el momento.
Sí, el que me retó es muy mala persona xD
Led Zeppelin
Unregistered
Hola.
¿Alguien ha dado las comunicaciones RS-232 en Java?. Es lo que estoy dando ahora, y aunque aún estoy dando la teoria, me aseguran que es similar a los canales de entrada y salida de ficheros, pero siento curiosidad por probarlo.
(26-10-2012 10:50)Edgar Allan Poe link En parte sí. La función toUpper lo que hace es restar 32 al entero ASCII cuando es necesario. Así que para la mayoría de letras sirve, pero para los carácteres especiales españoles no. Porque estos no van codificados en ASCII, van en UTF-8. :
A eso me refería, si había que modificar el código ascii o también vale "haciendo trampa", es decir, llamando a toUpper.
Un saludo.
Mensajes: 304
Temas: 7
Registro en: Oct 2012
(26-10-2012 11:00)Nikayuri link Quizá sea yo la que se está expresando mal ^^
Lo que tengo que hacer es simplificar ecuaciones algebraicas de Boole, no resolverlas. Como en los mapas de Karnaugh. Los operadores serían +, x y suma/multiplicación exclusiva. Y luego las propiedades, pero las más básicas.
Tienes razón en que sería más fácil con listas, pero es que eso todavía no lo hemos dado en la carrera y el objetivo es hacerlo con lo aprendido hasta el momento.
Sí, el que me retó es muy mala persona xD
Pero es que da igual que tengas que simplificarlas y no resolverlas. El proceso es prácticamente idéntico, porque las leyes y reglas que se utilizan para simplificar son perfectamente válidas tanto para valores lógicos 1 y 0 como para proposiciones, que al fin y al cabo no son más que variables que pueden adquirir cualquiera de los valores booleanos.
|