Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Tachikomaia

#1001
Programación General / Re: Iniciando...
1 Agosto 2018, 21:42 PM
Perdona si la pregunta es tonta pero ¿quieres información para "usarla en algún problema de la vida real" o sólo te interesa "la parte de programación de Windows"?

Con lo 2ndo no puedo ayudarte.

Lo 1ero es bastante amplio y hasta podría ser despectivo, aunque no parece ser tu intención serlo. Te explico. Un amigo me dice que yo hago cosas muy abstractas, que le gustan las cosas concretas. Y parece como si lo que yo hiciera fuese inútil. En ese sentido yo te podría decir que la programación está un poco lejos de lo que es "resolver problemas de la vida real" (he ahí lo despectivo), me parece que más bien lo intenta... Aunque no sé mucho confío en la programación (se dice que es la nueva alquimia), pero no sé si es tan útil en ese sentido, profesionalmente hablando: La programación no hace crecer patatas, no resuelve problemas de sequía, no cura enfermedades, etc. Habría que ver a qué problemas te refieres.

En fin, participé más bien por curiosidad y por si necesitabas aclarar algo, no porque realmente pueda ayudarte porque no sé mucho ^^u lo mío son más bien teorías personales.

Suerte!
#1002
Disculpa la demora, a veces me canso de estas cosas o no tengo ganas en el momento, queda para mañana y así, qué sé yo.

Algo que debo aclararte es que si bien me será útil obtener condiciones random, también voy a necesitar que se generen listas (eso cuando necesito poner una condición en un lado y no sé cual sería; equivale a usar fuerza bruta en la que el candidato no sería un número sino una condición). Olvidé eso. Listas es como esto:
https://www.geeksforgeeks.org/possible-strings-length-can-formed-given-string/

Cita de: NEBIRE en 28 Julio 2018, 04:00 AMBien... ahora te has expresado mejor... Así que sí, si sirvió que te explicaras.
Sigo teniendo mis dudas.

CitarDe entrada te diré que ya te puse en otro hilo que abriste un pseudocódigo, pero nuevamente lo pisaste como una alfombra, sin saber que lo estabas pisando...
He revisado este tema
https://foro.elhacker.net/programacion_general/duda_sobre_expresiones_condicionales-t485203.10.html
2 veces (la pág 3 sólo 1 vez) pero no sé a qué te refieres. Tal vez no pusiste el pseudo sino que mencionaste un algoritmo. Eso no lo revisé. No sé. Recuerdo que alguien me dijo una función, quizá tú, pero no lo encontré.

CitarLo importante de mis preguntas eran dos o tres cosas:
- 1º para que las necesitabas... esto es, solo querías imprimrlas o bien al final tendrías que aplicarlas. Contestado, al final acabarás aplicándolas...
Pero es lo de menos. Lo importante es que se impriman las que necesito y las pueda copiar. Lo demás es para más adelante. Si a copiarlas y pegarlas le quieres llamar "aplicarlas", bueno, también es eso, por ahora.
En fin, yo te sigo la corriente, pero me parece que en este sentido complicaste el tema innecesariamente.

Citar- 2º cuánto de largas podrían llegar a ser tales expresiones?
Depende de cual sea el problema más complejo que yo logre resolver. En teoría, lo que el programa aguante, no sé, nunca me pasó que se trancara por exceso de información (sí por loops o en Clipper porque el programa al compilarlo pesaba mucho, pero era otra cosa, un juego).

Citaraveces, si algo es breve, se resuelve más pronto a mano que generando un algoritmo efectivo.
Bueno, ya te expliqué que a la larga me convendría el code.

CitarTambién porque si la cantidad es enorme, aplicarlas (o solo escribirlas a disco), podría llegar a tener tantas combinaciones que ni el disco tendría espacio suficiente, ni tu vida para verlas aparecer todas...
Estoy muy lejos de querer guardar una lista (sólo en la pantalla del output...) y no tengo interés en verlas todas.

Citar- 3º Si no se iban a aplicar no tiene importancia ciertos detalles, si se van a aplicar, en cambio son otros detalles los que no importan.
No imagino del todo de qué hablas. Si me dices un poco más, gracias.

Citar- 4º El lenguaje en que vayas a programar, generalmente no importa... peor a este caso, creo que sí, porque desconozco realmente hasta que punto 'tu lenguaje' tenga las cosas encesarias o las facilidades para poder programarlas adecuadamente.
En general siempre tuve todo lo que necesité. Lo que no tiene por ejemplo es "figuras" para hacer las detecciones de colisiones más exactas. Acá todo es rectangular o cuadrado. Tampoco tiene, creo, la función para obtener el resto de una división, pero se puede hacer. En fin, no sé qué decirte.

Citarse le puede sumar el problema del rendimiento...
Tiene algunos, pero es largo de explicar y no viene mucho al caso (los problemas que yo conozco, otros puede que sí).

Citary siempre podrás adquieri un nuevo equipo, añadir memoria
He tenido problemas al hacer juegos, pero en esto no creo. Es sólo texto...
No tengo dinero ni mucho interés en toquetear mi machine.

Citaro mejor cambiar de lenguaje.
Difícil pero supongo que no imposible.

CitarAl caso
Al fin.

Citargran parte de lo que necesitas encaja de pleno en la teoría de compiladores, pero como ya has demostrado tu nivel, será harto complejo explicarte como abordarle de la forma más óptima.
Alguien me recomendó que haga "el árbol" o algo así, pero leí en wikipedia y no entendí. Sí recuerdo que hablaba de compiladores.

Citar1 - Una forma sencilla de abordarlo y sin requerir paréntesis, es que generes dos operandos y los calcules, el resultado es un operando listo para ser operado con el siguiente operando generado.
Esta es la forma en que funciona una calculadora de mano simple.

A = A op B
A = A op C
A = A op D
'A', puede entenderse como 'acumulador', 'resultado' en una calculadora.
Y 'op' como el operando concreto que a cada momento se precise usar. El orden de ejecución será el que uno precise... aunque yo pongo B,C,D podría ser alterado
A = A op C
A = A op B
A = A op D
No estoy entendiendo.

Mira, he hecho este código:
SC1P1 = 1;
SC1P2 = 1;
SC1P3 = 0;
Op1 = " < ";
Op2 = " <= ";
Op3 = " == ";
Op4 = " != ";
Op5 = " > ";
Op6 = " => ";
function PassorPrint () {
    if (SC1P1<SC1P3) {
        if (SC1P2<5) {
            trace ("V"+SC1P1+eval("Op"+SC1P2)+"V"+SC1P3);
        } else {
            trace ("V"+SC1P3+eval("Op"+(SC1P2-4))+"V"+SC1P1);
        }
    }
}
do {
    if (SC1P3<2) {
        SC1P3 = SC1P3+1;
        PassorPrint();
    } else {
        SC1P3 = SC1P1;
        if (SC1P2<6) {
            SC1P2 = SC1P2+1;
            PassorPrint();
        } else {
            SC1P2 = 1;
            SC1P1 = SC1P1+1;
            PassorPrint();
        }
    }
} while (SC1P1<2);


Este es el output:
V1 < V2
V1 <= V2
V1 == V2
V1 != V2
V2 < V1
V2 <= V1

Sólo eso, sí. Tendría que hacer un código que genere condiciones compuestas por más subcondiciones (SC), estoy en eso.

¿Ese output tiene que ver con lo que me estás diciendo? Cuando haya más SC tendré que ponerles paréntesis. Me dices que "sin usar paréntesis" entonces m...

Citar2 - Dicho de otro modo habrá tantos modos de órdenes (de ordenar los operandos) de ser ejecutado como el factorial de operandos que haya. El factorial es 1*2*3*4*5 es decir 5 variables pueden ordenarse de 120 maneras distintas, 6 de 720 (1*2*·*4*5*6*7), etc....
Bien...

Citar3 - Si usamos un solo operador son solo esas 120 expresiones distintas. Pero, nuevamente, aclaramos que la cantidad d eoperadores para n operandos siempre será n-1 operadores (el principio de la valla, cuantos postes se requierne para tender una alamabrada? 2 postes para una alambrada, y luego un poste por cada nueva alambrada, luego siempre hace falta 1 poste más que alambradas).
Ok...

Citar...con 5 operandos, en medio habrá 4 operadores. Nuevamente estos operadores pueden ser  ordenados de distintas formas... sigue la misma regla del factorial: 1*2*3*4 = 24 formas de ordenar los 4 operadores. Combinándolas con las 120 combinaciones posibles de operandos tendrás 120*24 = 2.880 expresiones.
No sé si te estoy siguiendo, pero una cosa son lo operadores de comparación y otros los que relacionan (and y or). xor puede ser también, aún no lo estudié.

Citar4 - En este punto hay que observar que es evidente que habrá expresiones equivalentes "A = (B + C)" es equivalente a  "A = (C + B)" (solo hemos cambiado el orden de los operandos, pero el operador no altera el producto.
m...... Probablemente no lo había aclarado pero, por ahora no quiero que haya operaciones en las condiciones, sólo Variable, comparador, variable, relacionador, etc.
No sé si lo que estás haciendo contradice eso. Si estás planeando poner operaciones me serviría, pero comencemos por lo sencillo.

Citar5 - Sin embargo dada la velocidad de cálculo, es preferible recalcularlas que intentar buscarlas para desecharlas... es menos costoso
No entendí.

Citar(creo que estamos hablando de operaciones buleanas... and or, xor... era así, no?).
Así es.

CitarNatualmente optar por esta solución (que gana en velocidad y ahorra en simpleza), a cambio dará redundancia de resultados (saldrán más resultados 'correctos' pero que son equivalentes).
Quiero evitar redundancias...

Citar6 - Bien, de hacer un filtrado de redundancia de expresiones equivalentes, es preferible hacerlo ahora, porque la cantidad de expresiones 'correctas' entre las que buscar equivalentes, será considerablemente menor que al comienzo con todas las combinaciones posibles. Es decir supongamos que de entre esas 2880 expresiones resultantes, 60 dan una respuesta 'correcta', buscar entre ellas las equivalentes entre sí, es considerablemente más breve (en tiempo de cálculo que hacerlo sobre las 2880.
¿Puedes encontrarlas sin filtro? m...

Citar7a - No estamos considerando paréntesis de momento. Y no lo haremos hasta que quede claro todo lo previo y considerar si de verdad los vas a necesitar.
Phew.

CitarEsto es si hay problemas de rendimeinto, por la complejidad de las expresiones que nos lleve a reducir de entrada las expresiones únicas para ejecutar solo esas... mientras no se demuestre que esto sea más rápido que calcularlas, no veo la necesidad de introducir paréntesis...
¿?

Citar7b - Porque como ya te he dicho antes, si vas operando sobre la marcha y consideras las combinatoria de los operandos y de los operadores, no necesitas paréntesis porque acabas por ejecutar todas las expresiones posibles.
Se supone que lo has entendido, pero... necesito generar las expresiones posibles. ¿Cómo, sin paréntesis, podrías generar esto "(V1<V2 o V1<V3) y V1<V4"? Tú mismo me decías en otro tema que no se puede vivir sin paréntesis. En fin, tú sabrás lo que haces...

CitarY de momento lo dejo aquí esperando haberme hecho entender... y si es conforme que haya entendido correctamente tus necesidades dada tu explicación previa de lo que haces (exiges que haga el programa).
¡Pero cuánto protocolo hombre!

CitarY con lo que me digas si falta algo lo vemos y si no avanzamos derivando por un lado o por otro... Esto es, he puesto 7 puntos espero que todos y cada uno de ellos te hayan quedado claros, por eso los he marcado, para que no lo pises como si fueran invisibles.
No los memoricé pero sí los leí y opiné como has visto, pero me parece que te complicas mucho. De momento me serviría que hagas un código como el que yo hice, pero que en vez de producir condiciones de 1 subcondicion, sean de 2, o sea: V op V rel V op V
El output debería ser algo así:
V1 < V2 && V1 < V3
V1 < V2 && V1 <= V3
V1 < V2 && V1 == V3
V1 < V2 && V1 != V3
V1 < V2 && V3 < V1
V1 < V2 && V3 <= V1
V1 < V2 && V2 < V3
...
V1 < V2 && V4 < V3
Nota: V4 no es un error. Pero sólo hay V4 si en la misma condición hay otras 3.
...
V1 < V2 or V1 < V3
...
V1 < V2 or V4 < V3
V1 < V3 or V1 < V2 <-- Esta creo que es repetida, debe evitarse.

Por ahora es lo que intento hacer.

Tengo este código que sería un intermedio entre el código que antes te puse, y el que quiero hacer.
// Partes de la subcond.
SC1P1 = 1;
SC1P2 = 1;
SC1P3 = 0;
// Cosas para evitar ifs.
Op1 = " < ";
Op2 = " <= ";
Op3 = " == ";
Op4 = " != ";
Op5 = " > ";
Op6 = " => ";
CursorMax1 = 2;
CursorMax2 = 6;
CursorMax3 = 2;
Reset2 = 1;
Reset3 = SC1P1;
// Otras cosas.
Cursor = 3;
function PassorPrint () {
    if (SC1P1<SC1P3) {
        if (SC1P2<5) {
            trace ("V"+SC1P1+eval("Op"+SC1P2)+"V"+SC1P3);
        } else {
            trace ("V"+SC1P3+eval("Op"+(SC1P2-4))+"V"+SC1P1);
        }
    } else {
        Reset3 = SC1P1;
    }
    Cursor = 3;
}
do {
    if (eval("SC1P"+Cursor)<eval("CursorMax"+Cursor)) {
        set ("SC1P"+Cursor, eval("SC1P"+Cursor)+1);
        PassorPrint();
    } else {
        set ("SC1P"+Cursor, eval("Reset"+Cursor));
        Cursor = Cursor-1;
    }
} while (SC1P1<2);
Si lo consideras confuso e ineficiente, concuerdo xD Pero por ahora es lo que tengo.

Gracias.
#1003
Cita de: animanegra en 27 Julio 2018, 09:33 AMUna máquina no tiene por que llevar las ideas de nadie programadas.
Más o menos. Uno como programador debería saber a priori cuales son los resultados posibles, pues puso posibles ideas. Está claro que la elegida no tiene por qué ser la que nosotros hubiéramos elegido, esa es la gracia y es lo que dices. Pero también es cierto que nosotros ponemos la idea de cómo determinar cual es la idea correcta, o si pudiéramos, la idea para determinar cual es la idea para determinar cual es la idea correcta. Siempre algo le vamos a poner.

Puedes cambiar la idea por "el método", si te queda más claro. Es lo que dije antes del pez. Normalmente se da el pez. En este caso damos el cómo pescar. Pero también se podría dar el método para aprender cosas, como cómo pensar.

Cita de: NEBIRE en 27 Julio 2018, 16:15 PMNo. No es ninguna convencioón social. suelta un niño en una isla y deja que crezca sólo, verás como de adulto, sabrá que hay cosas que son buenas y que otras son malas, sin que nadie le haya enseñado (manipulado), nada.
Al menos uds parecen estar de acuerdo en que esas ideas las determina el ambiente, los genes, etc.

CitarEl bien y el mal, te lo enseña en definitiva tu propia alma
¿Te refieres a nuestra mente, intuición o qué?

Citarsin importar lo que en principio cuando niño alguien te haya dicho que está bien o mal... finalmente tu acabarás cuestionando (juzgando) la veracidad de las mismas.
Depende de varias cosas. Hay cosas más difíciles de cuestionarse (porque no se nos ocurre, nos parece obvio o malo, nos sentimos mal) que otras. Y también depende del nivel de filosofía o multiculturalidad (no es lo mismo) que se promueva, porque si se promueve mucho la tradición (y no consiste en cuestionar), se complica.
Te gustará este video:
https://www.youtube.com/watch?v=cZYNADOHhVY
No siempre es tan fácil...

Citarcreo que todos estaríamos de acuerdo en que, poniendo en una bandeja 1000 temas y juzgando 1000 personas esos temas como buenos o malos, vendríamos a coincidir prácticamente en todo
Depende de los temas, pero yo te diría que no es así. Por ejemplo hoy discutí con mi padre porque según él en el fútbol está bien que los equipos tengan presidente y dirigentes, "porque en todo el mundo es así", cuando a mí me parece que uno de los dos sobra, o ambos.

CitarLa ética son reglas sociales de comportamiento.
Yo la entiendo como la rama de la filosofía, que estudia las morales. Lo que estás definiendo sería la moral o una moral.

Citarno existe ninguna obligación respecto de cómo deben ser esas reglas éticas
Si son éticas entonces deben ser de cierto modo. Que los humanos les llamen o las consideren éticas aunque no lo sean, es otra cuestión.

CitarEl bien y el mal, están por encima de la ética, tarde o temprano, tu propia conciencia te dice si algo que hiciste está bien o no, y el remordimiento, está para decirte que hiciste algo que estaba mal...
Lo que diga la consciencia depende de lo que esté captando, o sea es variable. Por ejemplo una vez le pregunté a una chica qué haría conmigo por un dinero, y muchos me hicieron sentir que eso estaba mal, que la traté de p**a, que en vez de querer esforzarme por que ella esté bien recurrí a algo fácil, y a veces me sentí mal... pero pronto recordé o pensé que eso lo hice porque quise darle algo bueno y sólo se me ocurrió ofrecerle ese dinero, y en mi opinión aunque la pregunta fuese apuntando a hacer algo sexual literalmente no es eso, por lo que es mucho más lógico que preguntar si quería ir al cine por ejemplo, ya que eso es muy limitado (lo otro podía ser básicamente lo que ella quisiera) y no estoy especificando que le pagaría la entrada. Entonces me siento mal porque ella se enojó y demás, pero si lo pienso profundamente, ya ves. Entonces eso del remordimiento depende de la capacidad de pensar de cada uno y de los valores que se tenga. Repito, yo considero que existe una definición correcta de lo que es El Bien, pero es muy difícil de demostrar, y no creo que "la consciencia" o "el remordimiento" sean la demostración.
Podemos razonar mal (falacias, delirios), podemos ver mal (o más bien interpretar mal: Ilusiones ópticas), y podemos sentir cosas que no corresponde sentir.

CitarYo recuerdo aún siendo niño haber hecho cosas de las que sentí que no estaba bien y desde luego nadie me dijo nunca antes que hacer eso estaba mal...
Alguna idea tendrías. O luego de hacerlo te diste cuenta de algo que antes no tenías en mente.

Citarun otrdenador carece de lógica para esto, se basa en acierto y error, el remordimiento es algo que aunque acabe en acierto, te dice que ESTÁ MAL
No entiendo eso. Pero el remordimiento sería como que un if no se cumpla, una variable sea -1 o -algo y haría que el programa haga revisiones extra o lo que sea.

CitarNo podemos programas que no tenga ideas mías, si soy yo quien lo programa, básicamente todo lo que tiene programasdo son ideas mías...
Sí, lo que sucede es que podemos no ser conscientes de esas ideas. Como te comenté en el otro hilo esto se basa en parte en relacionar cosas: Poner objeto A arriba de B, etc. Esa podría ser la idea base. Ahora bien, que A sea por ejemplo jugo de naranja y B un metal líquido es algo que podría no ocurrirsenos. Y te di un ejemplo, es obvio que sí me ocurrió, pero imagino que hay cosas que no a menos que me pasara haciendo millones de cosas como has comentado que hacen las computadoras, pero creo que no podría porque me aburriría.

Citarpara que esto no fuera así, un ordenador tendría que programarse a sí mismo 8o a un tercero), sin intermediación de ningún humano para ello...
En realidad si el aparato inicial lo hizo un humano y no hay azar de por medio entonces seguimos en la misma, como has dicho.

Citarsi las máquinas fueran 'inteligentes', la mitad de un niño... la propia máquina haría lo mínimo que hace un niño, tener curiosidad e investigar
No me cierra que sea necesario tener curiosidad para tener inte, pero bueno, creo que se puede programar más o menos de la misma forma que está programado un niño. Para curiosear.

CitarUna báscula pueda pesar todo lo que pongas encima de ella, pero jamás podrá pesarse a sí misma. Será otra quien la pese a ella, pero JAMÁS a sí misma. Esa es la esencia de la consciencia, pesarse a sí misma.
Demasiado metafórico para mí. ¿Qué significaría "autopesarse"? ¿autoobservarse? Existen al menos 2 teorías de lo que es la consciencia. Una es que es simplemente un observador, que quizá tiene una especie de espejo. Otra, la que yo creo, es que es un conjunto de cosas, de ideas, etc, una forma de observar, o sea, más adelante dices:
CitarCuando un ordenador tenga capacidad de decir, "mmm el comparador que tengo es lento, voy a hacer que funciones más rápido...
Ahí no es que el ordenador se esté autoobservando, sólo está observando partes de si mismo, son cosas distintas creo. Es como si la balanza hiciera una copia de alguna de sus partes y la pesara. Pero no se está pesando ella misma. ¿Podría pesar una copia? Supongo.

Por otro lado, eso que estás diciendo se puede lograr mediante un contador de tiempo que dura un proceso y un if que determine qué es lento y qué no. Lo de hacer las funciones más rápido ya es más de imaginación, pero no lo veo imposible. A las demás cosas que dices no las revisé detenidamente pero creo que tampoco.

Citaral final solo hace lo que le hemos dicho que haga, aunque ese algo sea muy amplio...

ESTÁ LIMITADO POR DISEÑO, nuestro diseño.
Es así. Pero nuestro diseño puede ser mejorar el diseño, analizando cosas que no tenemos ganas de analizar, sólo especificamos cómo analizar.
#1004
Cita de: NEBIRE en 27 Julio 2018, 04:28 AMHe tachado una frase, que creo no admite discusión...
En esta sección del foro, vale.

CitarUna máquina no puede tener libre albedrío
Ok.

Citarporque no puede pensar
Esto me parece que da para otro tema: "Máquina pensante: ¿Es imposible o cómo hacerla?". Pero no lo haré pronto. Sólo por curiosidad: ¿A qué llamas pensar? Porque aunque estoy de acuerdo contigo en que no pueden tener LA, las razones que doy de ello son distintas, o sea, creo que sí podrían pensar. Si el humano, que se supone es material, puede, por qué no iba a poder una máquina que también lo es. Sino es que la materia orgánica tiene alguna propiedad no imitable, pero no lo sé. No veo por qué no puede haber instrucciones que imiten el pensamiento humano. Los sentimientos son también imitables.

CitarPuede calcular, pero eso no es pensar
El tema es a qué llamas calcular. Porque si por ejemplo evaluar cosas como verdaderas o falsas es calcular entonces no veo por qué nosotros cuando hacemos eso no calculamos.
Nuestra forma de pensar implica que "vemos" cosas, o "escuchamos", etc, todo mentalmente digo. Pero eso capaz que se puede imitar...

Citarcarece de consciencia
Esto suele decir el creyente al que me referí al inicio. ¿Pero qué es eso? ¿no es simplemente información? ¿decir consciencia es lo mismo que decir autoconsciencia? Se dice que nadie puede conocerse a sí mismo totalmente, pero se dice que los humanos tienen autoconsciencia. Si una máquina sabe cuánta energía le queda y sabe si tiene alguna parte rota, etc... o sea, lo que intento decir es que no entiendo qué marca la diferencia entre ser autoconsciente y no serlo.

Citarpor lo tanto desconoce lo que es el bien y el mal...
En esto me parece que te enredaste. El LA no es simplemente poder elegir entre lo bueno y lo malo, va más allá de eso y no hay por qué enredarse con eso, ya que es un tema complicado.

Citara lo sumo podrías programar que debe entender un programa por bien y mal, incluso puedes programar que cambie, que no tenga fijo la entrada que tu le diste, pero jamás lo hará por mediación de consciencia de la que carece.
El concepto de bien o mal no está del todo definido. Yo no soy relativista pero cual sería el significado correcto no es el tema a discutir. Ahora bien, por curiosidad: Pienso que se entiende lo que son esas cosas, a partir de información. Y creo que la consciencia es la percepción de información. Pero tú pareces estar hablando de otra cosa. ¿Por qué para determinar qué es El Bien, se debería tener autoconsciencia? Puede ser porque la propia existencia es una información relevante, pero el concepto va más allá de la existencia o estado de un aparato... ¿qué importa si es autoconsciente o no?

Citar...y siempre será incorrecto, porque cada cual tendremos un juicio algo ligeramente distinto de lo que está bien y mal (es decir si no nos ponemos de acuerdo en ciertas cuestiones, un programa para una máquina implica que porta las 'ideas específicas' de alguien y que el resto tiene que tragar con ellas como si fueran las 'correctas').
Sí, esto pasa siempre, lo diga un moralista o una máquina. Y demostrar que sólo hay un concepto o idea correct@ es complicado. Aunque si una máquina pudiera y algunos no lo entiendan la falla sería de ellos.

No veo por qué esto viene al caso, pero bue.

CitarLa intuición humana, por ejemplo desdeña contínuamente porcentajes incluso del 99% a favor de ese 1%... y contínuamnete hay aciertos con ese 1%... ...esa era la respuesta correcta, en la que muchos no habían confiado.
Si te entendí bien estás diciendo que el humano a veces elige cosas que estadísticamente se consideran incorrectas o que una máquina consideraría tal. Eso suena a la película Yo Robot. Pienso que las máquinas pueden ser programadas para actuar como se quiera (nos salimos de tema pero bue), o sea, si quieres que imite al humano en el sentido de que tenga "intuición" y por ella de vez en cuando no siga las estadísticas ¿por qué no se va a poder? La intuición, a menos que sea algo medio mágico, es información de la que uno no es del todo consciente, una fuerza que nos recomienda hacer una cosa en vez de otra.
Yo no programo mucho, pero usaría estadísticas sólo cuando haya random. Considero que en iguales situaciones, si se aplica la misma acción, el resultado es siempre el mismo. El problema suele ser que no conocemos toda la situación y por ende el resultado se altera. En tales casos hay que intentar entender por qué pasa eso.

CitarUn humano sabe equivocarse y no pasa nada, se sigue mejorando... para una máquina, no suele ser aceptable el error, puede costar vidas. Si un humano comete un error puede ser aceptable (porque todos los cometemos), pero para una máquina ciertos errores son intolerables...
No le veo sentido a esto. La máquina puede ser programada para que mejore, tolere y en teoría todo lo que haga el humano. Salvo tener sentimientos, pero en esta cuestión se pueden considerar simplemente una fuerza que influye en el pensamiento.

Citarsi un hombre genera 100 ideas y 1000 pensamientos, sin duda alguna serán más eficaces que lo que haga una máquina también con 100 ídeas y 1000 pensamientos...
Pienso que depende de cómo la programes. Además las personas nos equivocamos mucho.

CitarEl modo mas sencillo de demostrarlo, es pedirle a una máquina que si es tan lista, que sea ella quien diseñe su próxima versión (en vez de otro grupo de humanos), y que sea más eficaz de forma notable no en un ridículo 1-5%... además deberá exigírsele que incluya novedades jamás vistas hasta ahora como hace el hombre constantemente... no basta con mejorar las capacidades existentes, si no crea otras nuevas...
Creo que aún no hay una máquina tan lista, pero también que tu test no es bueno, porque entre más listo sea alguien menos se podrá mejorar, mentalmente hablando, porque está más cerca del límite. Los humanos tampoco son tan hábiles en mejorar sus cosas. Si lo logran es porque adquieren nueva información, pero en tu test no has dado esa posibilidad. Algunos aspectos son más fáciles de mejorar que otros...

Citarpero créeme, las máquinas son idiotas... difícilmente superan a un niño de 5 años...
¿No es un tema de software?
Ojo, a mí no me interesa hacer una máquina con LA, y si no lo tienen o si no piensan parecido a un humano es en parte porque no interesa, ni conviene, que lo hagan. Eso explicaría en parte que el software sea pobre en inteligencia, o la máquina en sí. Pero si tiene memoria y todo lo que tiene... ¿no es suficiente? Es decir, sólo falta el software adecuado.

Citarpara no falsificar los conceptos, de 'inteligencia' y capacidades.
Sí, cuando me empecé a meter en estos asuntos me interesaba hacer una "IA" (y mi nick, es Tachikoma + IA), pero llegó un punto en que ya no quise más usar esas palabras. Parece inútil ponerse a discutir o definir qué es inteligencia. Hagamos lo que nos parezca y veremos...
#1005
Cita de: NEBIRE en 26 Julio 2018, 15:01 PMEs cansino indicarte cosas que luego ignoras.
Si es el caso te pido disculpas.

CitarY tampoco tiene sentido resolver un problema estricto, sin un contexto que le dé sentido...
Te lo explico entonces, aunque creo que ya te lo expliqué un poco en otro tema y no le veo mucho sentido a hacerlo.

Quiero hacer un programa que mejore el universo o descubra cómo. No simplemente mediante leer páginas como hace Google, sino razonando, inventando. Leer páginas de hecho no lo veo necesario en esto, no va por ahí.

Como no tengo idea de cómo hacer ese programa, lo que hice fue algo similar aunque muy sencillo, resuelve una duda muy sencilla. En el código pongo una respuesta base, escribo la condición que debe cumplirse para que la duda se considere resuelta, y digo que la respuesta se varíe de cierto modo hasta que cumpla la condición. Casi así:
Candidato = 0;
Repetir
  Candidato++
Mientras Candidato < 10
Imprimir: "La respuesta es " + Candidato
Eso según he visto es:
https://es.wikipedia.org/wiki/B%C3%BAsqueda_de_fuerza_bruta
De hecho la palabra "Candidato" la tomé de ahí.

No le digo al programa cual es la respuesta a la duda, aunque en este caso sea obvia y el programa no parezca tener utilidad. Lo que pasa es que es una práctica para acercarme a lograr mi objetivo... Como un principiante hace prácticas para aprender a programar algo que quiera.
Lo que hago es darle los medios para que averigüe la respuesta, como se enseña a pescar en vez de dar pescado, aunque en mi caso quisiera llegar a enseñarle a aprender lo que se necesite, no simplemente enseñarle a pescar.

Ahora tengo que complicar la duda para que parezca más la que realmente me interesa resolver. Para eso puedo:
A- Complicar la condición a cumplir.
B- Hacer que el programa averigüe también la respuesta base.
C- Hacer que el programa averigüe también cómo variar la respuesta base.
D- Hacer que el programa averigüe también cual es la condición a cumplir.
Etc, no viene al caso la lista entera.

Resulta que B, C y D, se podrían considerar otros programas con otras dudas, o sea, no hay por qué resolver 2 dudas en el mismo, estas son dudas más complicadas que llegaré a enfrentar luego de aplicar muchas veces A.
Lo que pasa es que hay dudas en las que desconocemos más que simplemente la respuesta, pero cuando eso pasa supongo que se puede plantear cada una por separado, en distintos programas. Por ejemplo puede que desconozcamos las posibles acciones que pueden realizarse (esto está relacionado con B y C). En el universo imaginate: ¿Cuales son las posibles cosas que pueden hacerse? Poner objeto A arriba de B, ETC, pero no sabemos todo.

Entonces, como di a entender, aplicaré A muchas veces, o sea voy a complicar la condición muchas veces. Voy también a ir agregando variables de la situación, o sea, en la duda inicial de ejemplo no hay variables de esas, pero las dudas normalmente incluyen alguna, por ejemplo la medida del lado de un cuadrado, posición de unas fichas, etc.

Por ende, me conviene hacer un programa que haga las complicaciones. Pero me refiero a que la condición sea más complicada, no es que la base deba ser igual. Por ejemplo si tenemos 10 == Candidato, la próxima podría ser:
Candidato < Variable1 y Variable1 < Variable2
De hecho Candidato podría no estar presente, aunque para eso debe modificar alguna variable. No viene al caso.

Es entonces un generador de expresiones condicionales. Se escribe la cantidad que se quiere generar, y el programa las genera.

Nota: De momento NO intento que las expresiones puedan tener modificaciones de las variables. Ej: V1*2 < V2+4

El problema es que esas expresiones deben cumplir ciertas condiciones... No deben tener contradicciones como:
Candidato < Variable1 y Variable1 < Candidato
O sea deben ser posibles de cumplir, pero también posibles de no cumplir, hay que evitar cosas como:
Candidato == Variable1 or Variable1 != Candidato
Y quisiera evitar redundancias como:
Candidato <= Variable1 or Candidato < Variable1
...pero estas cosas no es el tema al menos aún.

Resulta claro que quiero que las expresiones puedan tener paréntesis, pero sólo en tanto no sean redundantes. Porque me parece absurdo que los tengan si sobran, eso es todo.

El resto ya fue explicado más o menos...

Dada una expresión, se generaría un número al azar o dependiente de la cantidad de "os" que tenga, si tiene alguna "y" separando, no pensé en eso ^^u pero es que parece secundario: La cosa es que podrían agregarse paréntesis por ahí y por allá, como comenté en el 1er post, y entonces tendría que detectar cuales sobran y cuales no.

No son redundantes cuando cambian la "lógica" de la expresión.

Creo que eso es todo...

Puf.

Ah, por cierto: Si crees imposible hacer un programa que mejore al universo o averigüe cómo, entonces me interesa aprender a hacer programas que resuelvan dudas, avanzar en eso.

CitarEn resumen: ¿pará que se van a utilizar tales expresiones?
Las copiaré, y las pegaré en el código de un programa que intentará cumplirlas. Repetiré eso muchas veces. Me gustaría por ende que la expresión fuese llevada "al if" directamente, sin que yo tenga que copiarla y pegarla, pero eso es otro tema.
Quiero hacer un programa que cumpla condiciones cada vez más complejas. Hacer experimentos con eso. Evitar tener que idear y escribir yo condiciones a cada rato.

Citar¿cuál es la últilidad práctica que han de tener?
Creo que ya respondí eso o más o menos...

Citarasí se podrá ver una forma óptima y elegante de crearlas.
Ojalá...

CitarSi tapas el monte y solo muestras una hoja, no te ayudas a tí mismo.
Es que no lo veo necesario y quería mantener el hilo corto. Si hubiera spoiler... pero igual había dicho algo:
"Quiero el pseudocódigo de un programa que genere expresiones que no tengan paréntesis redundantes."

¿No alcanzaba? ¿realmente lo que agregué te sirvió de algo para responder?
#1006
Cita de: animanegra en 26 Julio 2018, 10:23 AMsi defines libre albedrio como poder actuar aisladamente del resto (como seres individuales) probablemente no lo tenemos, mira los estudios de zimbardo... ^^ No somos seres individuales somos seres sociales y como tal actuamos. Como decia mi madre, tu eres tu y tus circunstancias. :)
Aisladamente no en un sentido espacial, por las dudas. También sería "aisladamente" de cada partícula, átomo, etc, salvo que sea parte de la estructura que produce el LA. Es decir, esa estructura debería no ser influenciada más que por ella misma y sólo si quiere. Parece incoherente e imposible...

Si no conoces a Ortega y Gasset, te recomiendo que lo viches.

Cita de: NEBIRE en 26 Julio 2018, 15:05 PM
Este foro es sobre PROGRAMACIÓN....
Este hilo, por tanto debería moverse al FORO LIBRE, aquí no pinta nada.
Capaz que no quedó claro pero estoy preguntando cómo se haría un programa que tenga libre albedrío, si alguien lo cree posible. Expliqué el contexto de la pregunta, quizá demasiado, pero la pregunta es de programación.
#1007
Cita de: engel lex en 26 Julio 2018, 06:07 AMel problema es definir el libre albedrío, es decir, podría hacer cosas en base a números aleatoriamente ... pero no sería libre albedrío...
Correcto. Si yo tuviera que dar una definición diría que es el poder actuar sin que algo más allá de nosotros mismos nos esté causando hacer una cosa u otra. Dicho de otro modo es ser una estructura que no pueda ser influida por cosa alguna salvo que dicha estructura quiera, pero tenemos la gravedad por ejemplo... ¿podría hacerse una excepción? ¿podría ser una estructura "flotante"? Pero además esa estructura habría sido construida por algo, o sea que tampoco es que todo haya sido libre... ¿excepción?

Citarlas computadoras son deterministas es decir, los números al azar generados pueden ser calculados y sabrías su resultado...
¿No dependen de la temperatura en los chips o algo así? Lo que me llamó bastante la atención recientemente es que en un speed run de Mario, si dejaban la pantalla de inicio cierta cantidad de tiempo, luego los monitos del nivel 8 saltan justo cuando al jugador le conviene. Se nota que el random está basado en el tiempo pero uno pensaba que sería mucho más complejo. Si fuese tan fácil uno podría ganas más en los juegos de casino xD

Citar¿como determinas si una computadora tiene consciencia?
Nunca lo pensé, más bien pensé en el tema de cómo hacer que la tenga, cosa que tampoco he pensado tanto.
Se dice que el solipsismo es irrefutable... Pero la máquina quizá tenga actividad eléctrica en alguna zona, eso sería algo...
El solipsismo es la idea de que sólo podemos demostrar nuestra propia consciencia, que podríamos estar soñando ergo que todo, incluyendo otras personas, sean creación de uno mismo. Bastante egocéntrico sí, no es que yo lo crea.

CitarDescartes te diría "en el momento que la computadora dude de tener consciencia, quiere decir que la tiene" (jaja! truco con las pelis de ciencia ficción bien hechas! spoiler permanente!)...
Siguiendo tu razonamiento o pregunta anterior cabría preguntarse cómo determinar si está dudando...

Es más, cuando se habla de que las computadoras aprenden mucha gente "patalea" conque en realidad aprender es otra cosa.

Citaren resumen, incluso se discute el hecho del humano y libre albedrío en si mismo, pero esto implicaría que existe un Dios
No necesariamente. El LA parece y está vinculado a algo milagroso, pero no hay real dependencia al menos no veo.

Citara su vez implica que existe un "Destino" y que eres libre de cambiarlo...
Los que creen en el LA suelen decir que el futuro aún no existe, aunque dicen que Dios lo vió. Contradicciones...

Citarasí que la demostración de libre albedrío requiere en conjunto la demostración de la existencia de dios...
Bueno... si se quiere asociar tanto a algo milagroso... Pero creo que hay ateos que defienden su existencia...
#1008
Me canso de leer ciertas defensas a Dios en un foro que se supone es de filosofía. Por ejemplo más o menos esto:
"Creó al mundo y ahora no interviene ¿Qué culpa tiene Dios si te cae un árbol encima?"
"Nos da libertad. Lo malo que hace el humano es culpa del humano"
Combinada con la creencia de que Dios ha visto el futuro, sabe lo que pasará, y puede evitarlo se supone, lo cual es paradójico, pero eh, mucho de lo relacionado con él lo es.




Si tú creas un personaje de modo que camine por un sitio justo cuando algo está por caer allí, es que:
A- No sabías lo que estabas haciendo. Tu personaje es aplastado por culpa de tu ignorancia. Dios sería ignorante.
B- Le haz puesto azar. El aplastamiento se debe a tu irresponsabilidad, a dejar las cosas en manos del azar. Dios no sería necesariamente malvado, pero habría causado desastres debido a no programar bien o en pos del bien.
C- Querías que lo aplastara. Eso en general te convierte en un malvado, si el personaje fuese sensible. Si lo aplastarás, sería más coherente haber creado un personaje más apropiado, que pueda ser feliz sin tener que ser aplastado. Dios sería malvado o tonto.
D- Le has puesto libre albedrío a tu personaje o a lo que sea que derribó el árbol. Esto me parece imposible. ¿Alguien lo cree posible y tiene idea de cómo se haría? Pero de hecho parece entrar en las anteriores categorías. Ponerle un "diagrama de flujo desconocido que lo lleva a ser aplastado", parece lo mismo que aplastarlo (sólo que el proceso es más complejo o misterioso), o que poner azar o no tener idea de lo que se está haciendo. Un creyente puede decir que es un sacrificio necesario para que haya eso tan preciado que llama libertad, aunque bien sabemos que los árboles podrían evaporarse en vez de caerse, por ejemplo. Si puede dar eso tan mágico que parece ser la libertad, debería poder hacer eso otro con los árboles, o que se derritan, o que se caigan lentamente, o que un bicho los coma, etc. Hablo de árboles viejos. Los que por ejemplo caen por vientos fuertes se evita evitando vientos fuertes.

Por supuesto un creyente podrá decir que una máquina no puede ser libre pero un humano sí, pero los argumentos que suelo leer sobre eso son muy pobres. Que un programador programa a la máquina, como si Dios no hubiera programado al hombre en caso de que realmente lo hubiera creado. Yo dudo que los humanos tengamos alma o cosas raras así que probablemente seamos imitables, pero hay creyentes que afirman la libertad humana incluso sin que haya algo sobrenatural. Así que no se trata de demostrar que tenemos alma, sino de demostrar que el libre albedrío es una ilusión. Esta creencia está implicada en el determinismo fuerte:
https://es.wikipedia.org/wiki/Determinismo#Determinismo_en_los_individuos
A los amantes de la física cuántica, que parece refutar a ese determinismo, les advierto que las teorías de cosas que suceden "porque sí", son interpretaciones de los hechos, el azar ontológico es indemostrable. Capaz que para uds un determinista es lo que para un determinista es un creyente, pero bue, tampoco es que importe mucho.

Si alguno cree que por algún motivo las máquinas no pueden tener libre albedrío pero el humano sí, me gustaría escuchar sus razones.


El caso de los "seres libres que hacen maldades" es muy similar al del "ser libre que es aplastado", no lo explicaré para no alargar tanto el post.


Por cierto, originalmente estaban hablando de niños que mueren de cáncer, por si el caso del árbol parece una tontería. Por algún motivo el creyente puso ese otro ejemplo al responder.
#1009
Resumen en negrita.

Parece que expresiones como esta:
Variable1 < Variable2 y Variable1 < Variable3 o Variable2 == Variable3
son análogas a esta:
2 * 3 + 4
en el sentido de la prioridad: Así como los * se aplican antes que los +, las "y" se aplican antes que las "o".

Supongamos que tenemos:
A s B s C s D s E
donde las letras mayúsculas representan números y las s representan signos.


Los paréntesis son redundantes cuando no alteran el orden de las operaciones.


Redundantes tipo 1: Envuelven sólo un valor.
Ej: (A) s B s C s D s E

Quiero el pseudocódigo de un programa que genere expresiones que no tengan paréntesis redundantes. Generar las expresiones no es difícil (al menos las que intenté por ahora; hay otras), lo difícil para mí actualmente se relaciona con los paréntesis. Según pensé, luego de generar una expresión la podría variar poniéndole paréntesis.

Los que abren sólo se pueden poner en las posiciones indicadas por los números de arriba y los que cierran en los de abajo. Básicamente al inicio de una expresión no tiene sentido cerrarlo y al final no tiene sentido abrirlo. El programa siempre en algún punto cerraría los que abra así que no tiene que revisar si todos están abiertos y cerrados. Ej:
Posición de los abiertos: 1, 3
Cerrados: 2, 4
Resultado: (A s (B s C) s D) s E

Unos paréntesis son redundantes tipo 1 si un número está en ambos grupos
En criollo: Si se cierra a penas se abre.
Ej:
Posición de los abiertos: 1, 3
Cerrados: 3, 4
Resultado: (A s B s (C) s D) s E
¿De acuerdo? ¿se les ocurre un método mejor de nombrarlos/generarlos?


Redundantes tipo 2: Envuelven a todo el resto.
Ej: (A s B s C s D s E)

Ocurren cuando:
- En abiertos está el nro 1.
- En cerrados está el número más alto admisible.
y alguna otra condición que no llego a entender. ¿Cual/es?

El problema son casos como por ejemplo este:
(A s B s C) s (D s E)
Posición de los abiertos: 1, 4
Cerrados: 3, 5
Ahí hay 1 y 5 pero no hay falla, por eso falta alguna condición más.


Redundantes tipo 3: No envuelven algún + y no hay un * fuera.
Recuerden que eso del + y * es una analogía. Pero la cosa es que A * B * C = A * (B * C). En la práctica puede que no si el resultado de A * B o B * C es infinito en extensión, pero por ahora no trabajo con eso. Condición1 y Condición2 y Condición3 = C1 y (C2 y C3). Los paréntesis tienen sentido si implican alguna + y hay alguna * fuera. Es decir, cuando alteran el orden normal de las operaciones.

Por ahora no puedo decir cómo detectaría estos, si acaso puedo averiguarlo. Necesito hacer ciertos códigos o pseudos antes de poder analizar esto. Pero si alguno sabe detectarlos, agradezco la respuesta.


¿Hay algún otro tipo?
#1010
Programación General / Re: Saludos
26 Julio 2018, 01:35 AM
No sé mucho del tema, pero Python podría ser, debido a que supuestamente es el más fácil de usar, dentro de los que son muy usados.

Para mí es Action Script de Macromedia Flash 5, pero no te lo recomiendo porque casi nadie lo usa y la mayoría lo critica mucho.
BASIC y Clipper también me parecieron más fáciles que Python pero son muy viejos, y gráficamente muy limitados. No confundir BASIC con Visual Basic. El 2ndo es mucho más complicado.




Cómo usar AS de MF5:
Lo instalas, haces el tutorial que viene incluído, vas ganando experiencia, etc.

Cómo usar Python:
Hay que buscar un IDE creo, hay que crear una variable de entorno, y si mal no recuerdo son 2 exes o sea tienes que probar a ver cual es el indicado.




Cómo unir un número y una string en AS de MF5:
Definir número. Ej: Num = 4;
Definir texto. Ej: Tex = "Hola";
Union = Num + Tex;

En Python.
Eh... no llegué a aprenderlo, me pareció excesivamente complicado. Por lo que acabo de ver hay que usar una función especial.
https://es.stackoverflow.com/questions/57263/c%C3%B3mo-concatenar-int-y-str-con-python
Si quieres tener que memorizar funciones especiales por cada chorrada que tengas que hacer, ya sabes.




Cómo poner variables en un archivo con AS de MF5:
Definir variables a guardar. Otras definirlas dentro de un objeto.
fs command ("save", "Nombredearchivo.extensión");
...
Más o menos eso. Hay varias cosas a tener en cuenta.
- No funciona si el archivo/código que estás ejecutando es un swf, sí si es exe. Me refiero al programa. El archivo que estás creando puede ser un txt.
- No funciona en versiones posteriores a la de MF5. Por eso me quedé en esa vieja versión (y porque en mi vieja compu es la que anda a velocidad normal, y porque las nuevas herramientas las pusieron en "íconos" grandes, no dejan ver bien la pantalla). Por algún estúpido motivo decidieron quitar esta función y en su lugar pusieron algo que me pareció excesivamente complicado (por lo que leí consiste en enviar un mail (ya sé que suena loco, pero fue lo que leí) o ejecutar un archivo o no sé bien qué, que tenga lenguaje de javascript).
- La función no está documentada, o sea, fue descubierta mediante hacking o no sé qué.
- No se sabe exactamente cuando las variables se terminan de guardar. Eso es problemático sí. Pero como desarrollé una forma de saberlo (básicamente copiando las variables a un objeto, cargar el archivo a él, y hacer tiempo hasta que las variables sean iguales a las que están en la raíz), no tengo mucho problema.
- Esta función sustituye el contenido antiguo del archivo. Si por algún motivo quisieras agregarle variables en vez de sustituirlas, es fácil: Cárgalas antes de usar el save. Eso se hace también con una línea cortita, es fácil, aunque también tiene sus cosas a tener en cuenta.
- Puedes crear archivos con nombres normalmente imposibles, los cuales puede que te sea difícil borrarlos. Tendrás que borrar la carpeta donde estén o usar alguna herramienta especial. Obviamente si haces bien las cosas no vas a crear archivos así.
...
Un problema sí es que en este programa los do while largos trancan la computadora (aparece un cartel, no es que tengas que resetarla, puedes usar el clásico CLTR ALT SUPR). Tienes que usar goto en esos casos. Algo que la mayoría de los programadores no recomiendan.

En Python:
Eh... no llegué a aprenderlo, me pareció excesivamente complicado.
https://es.stackoverflow.com/questions/105106/guardar-datos-de-un-txt
No tanto, pero eso de "abrir un archivo, leer las líneas y cerrarlo", parece una chorrada xD
- Quisiera guardar mi coche en vuestro estacionamiento.
- Inicio el proceso. ¡Abran el garaje!
- ¡Abierto!
- ¡Cuenten los autos!
- ¡Contados!
- ¡Cierren el garaje!
- ¡Cerrado!
- ¡Ábranlo!
- ¡Abierto!
- Pase...
Encima el forero dice que hay que crear una línea y luego eliminar una línea y espacios, es un desastre xD

¿Te das cuenta? En el lenguaje que digo se hace con sólo 1 línea de código, y bien cortita. En este otro lenguaje te exigen hacer otras cosas que parecen burocráticas, absurdas. Por eso no lo aprendí. Pero no me hagas mucho caso, que yo no tengo títulos ni nada.


POR OTRO LADO, tu firma me hizo sangrar los ojos digamos. Te recomiendo verr esto:
https://www.youtube.com/watch?v=cZYNADOHhVY
El dragón creo que representa el envejecimiento, pero podría representar cualquier cosa que una persona con 2 dedos de frente mínimo consideraría negativa, como la muerte.
Decir que la muerte es lo mejor de la vida (que es prácticamente lo que dices) parece una de las cosas más estúpidas que he escuchado.