[Hilo Oficial] Esto también es otro arte...el ARTE de programar
#85
Cita
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 Smile

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 Smile

Yo... ¿no tenía tu msn?
(Ultima edición: 26-10-2012 08:33 por Nikayuri.)
#86
Cita
Sí que es álgebra de boole, la lógica binaria trabaja con las operaciones del álgebra de boole.
#87
Cita
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?┬á roto2:

Un saludo.
#88
Cita
Led, puedes probar en http://ideone.com/. Tienen un compilador java.
#89
Cita
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.
#90
Cita
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.
[Imagen: 2en8arn.jpg]
#91
Cita
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
#92
Cita
(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 Smile

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 Smile

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?┬á roto2:

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. roto2:
#93
Cita
(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.
#94
Cita
(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
#95
Cita
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. roto2:

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.
#96
Cita
(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.


Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)