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 - Serapis

#2431
no es ningún problema...
Por lo general la entrada en vigor de una nueva ley, siempre afecta al usuario, incluso aunque no hubiera motivo, preciamente por la desinformación... así que, porque una vez afecte a las empresas... no pasa nada, después de todo, resulta en beneficio de los mismos usuarios.
#2432
Cita de: engel lex en 30 Mayo 2018, 11:02 AM
me parece increible que no tengan inflación y la luz siga subiendo como si nada D:
Es una cuestión política...
Todos los políticos salientes, acaban teniendo un enchufe en las eléctricas...

Cada vez que se intentó apostar seriamente por energías renovables desde la política, fueron tiempo después dinamitadas. No interesa a las eléctricas, y las leyes se hacen para protegerles, y se hacen porque no queda ninguna duda de que existe un contubernio entre políticos y empresas eléctricas.
Curiosamente los partidos de izquierdas, o están ciegos o pasan de la historia o también ellos participan, porque nunca les he oído pronunciarse al respecto... para ellos el país tiene otros problemas y este no parece ser uno de ellos.
#2433
mmmm... es típico que alguien venga preguntando algo, y luego nunca comparezca, ni siquiera para ver si han respondido...

Si lo que sucede es que te asusta la respuesta, te aclaro que se puede simplificar, pero (resulta conveniente) que antes haya algún "feedback", que demuestre que tienes interés en aprender y no solo en tener una tarea lista.

De todos modos, como va a resultar en incomparecencia, no dejaré a otros en la intriga.




Del mismo modo, que por ejemplo, cuando intentamos trazar un área dados unos  segmentos (medida y ángulo), que delimitan el perímetro... que si sucede, como en el siguiente ejemplo que:

A-------B-------------C----D
AB mide 8, angulo = g
BC mide 13, angulo = g
CD mide 4, angulo = g

Teniendo todos ellos el mismo ángulo y yendo uno a continuación del otro, se puede simplificar los 3 como un único segmento del mismo ángulo pero de longitud la suma de todos ellos:

A-------------------------D
AD mide AB + BC + CD = 25, angulo = g
No necsitamos nada más de dicho ejemplo...

(un ejemplo sencillo de entender por todo el mundo). Del mismo modo cuando hay grafos que son antecedidos por solo un nodo y seguido de también un solo nodo, un tramo así igualmente puede ser resumido en uno equivalente... en tu caso, entonces:
F-H-D-B-C, puede ser resumido como uno nuevo E = HDB  que los remplace. Y por tanto considerar, solo las producciones
A = C|F
y desde C, se puede acceder a los nodos
C = A|F|E|L
F = A|C|E
E = C|F   <---- el nuevo nodo que remplaza (para simplificar) a los 3 intermedios.

H = F|D
D = H|B
B = C|D
L = C <--- esta no interesa, ya dijimos que L es el nodo del estado final, no un estado intermedio.



Si lo montas en un árbol sintáctico (que corresponde al algoritmo, señalado más arriba)... se obtiene esto... debajo lo explico por encima, aunque es autoexplicativo, si lo observas el suficiente tiempo...


La raíz es la producción general, la solución.
Debajo se ponen como hijos cada uno de las alternativas que salen desde "A" (el nodo padre).
De igual modo debajo de cada nodo, se pone las alternativas de esa producción.
De esa manera se va completando el árbol...
Los nodos pintados de verde, son los rechazados. y se rechazan, porque ya han sido visitados... toma un nodo verde, revisa sus ancentros, y verás que ya consta en esa ruta.
Una vez que un nodo es tachado, ya no cabe más descencia de él.
Finalmente (en alguno) se llega al estado terminal, "L"...
Todas las rutas de la raíz "A" a cada una de los nodos terminales "L", son las soluciones que buscas (las he marcado con nodos rojos y caminos en amarillo).
Finalmente se ponen todas, juntas debajo y habiendo recordado deshacer "E", que lo hemos tenido simplificado durante el proceso.
#2434
Programación C/C++ / Re: char* char** y VB6
29 Mayo 2018, 17:10 PM
Para que en vb6 puedas usar librerías externas, necesitas estas cosas:
+ la convención de llamadas tipo C: StdCall
+ Pasar la dirección de la cadena, que en vb luego el parámetro se declarará "ByRef elparametro as string"
+ La cadena de vb6 siempre acaba en un carácter null (0x), luego cuando proceda debes añadir un caracter 0 al final (si se recide desde la dll, porque vb6, lo adjuntará cuando se envíe a la dll). dicho carácter nunca cuenta como propio del tamaño del string.
+ Las cadenas en vb6 por defecto son Unicode (2 bytes por carácter), luego si las tienes de 1 byte por carácter o previamente haces una conversión en tu librería, o lo entregas como un array de bytes, ó como señalo a continuación...
Otra forma más laboriosa es pasar un tipo long que es la dirección de memoria donde se aloja la propia cadena (el primer carácter que interese), y en otro parámetro su longitud, en ese caso sabiendo la longitud (si se recibe en VB6), construyes una cadena de ese tamaño y luego copias el contenido desde aquella dirección a la dirección de tu cadena, la cantidad de bytes señalados. Aquí no importa si allí la tienes de 1 o 2 caracteres por byte (si siempre es igual, haces siempre una conversión en vb6 usando la función StrConv(x, a unicode/desde unicode). Si cada función de la dll, va atener sus propias características, entonces mejor señalar en un tercer parámetro si son 1 o dos bytes por caracter, por ejemplo ",Byval Unicode as boolean), =True para indicar que en origen tiene 2 bytes por caracter... o ",ByVal Unicode as byte)  1= ANSI, 2= UNICODE, 0 = indefinido (en destino debe resolverse).

Este método es el adecuado, si por ejemplo, quieres pasar una subcadena, o no quieres ajustar en origen un formato que entiendes que solo depende del 'destino'. Además de este modo, la cadena tomada en Vb6 es copia (byval), luego se usa también cuando no se quiere alterar la de origen...
Este método que copia contenido desde memoria, no precisa que en origen la cadena tenga un null al final (imagina el caso de una subcadena), dado que tu en Vb6 declaras y construyes una cadena del largo deseado, ya contiene el null final, al reservarse memoria para ella... luego tu solo copias los bytes (caracteres) en su nueva ubicación.

Si no terminas de aclararte, pásame copia de la dll, (con esas 3 funciones), tal cual la tienes ahora y veo de entender donde te has liado... y cual sería la solución menos costosa.
#2435
Ayer te respondi... era una respuesta larga, y cuando fuí a publicarla, él foro me había deslogado por inactividad... y al volver atrás, curiosamente no se recuperó el mensaje (supongo que porque antes tenía desactivado javascript, y en algún punto intermedio lo activé)... en fin me dió pereza rescribir todo de nuevo.

Hoy simplifico, y veo más necesario indicarte esto:
Si necesitas aprender a realizar árboles, cíñete a eso... y deja en paz (de momento, hasta que lo domines), el ejercicio.
Si en cambio necesitas realizar el ejercició, cíñete a eso y olvida de momento los árboles...
Lo que no va bien es que ni sepas de la herramienta ni sepas del materíal. Así no sabe uno que es lo más urgente responderte, porque ambas cosas a la vez resultará lioso.


Si quieres avanzar por un árbol, usa de ejemplo tu propia familia (que es algo que conoces y entiendes bien), basta con las iniciales... no te preocupes si no es binario, ese es un caso particular de los árboles, conviene primero aprender lo genérico...

Decide y aprende una sola cosa de cada vez, y cuando lo domines regresas a la otra cuestión. Así plantea ahora qué necesitas, qué te urge más aprender...

A veces los libros traen malos ejemplos, ejemplos más o menos complejos donde se da por hecho que el que lo lee (es el pecado capital más frecuente en los libros técnicos, y el pecado mortal, cuando se trata de las matemáticas, parece que solo escriben para otros matemáticos, si no visita wikipedia), ya tiene un conocimiento más o menos sólido de otras materias... en esos casos conviene remplazar el ejemplo, por algo que uno pueda resolver bien (entenderlo al margen de lo que trata de enseñar), es decir un ejemplo, no puede ser el objeto de estudio por sí mismo, por eso el nivel de dificultad debe elegirse bien, si no torpedea al que intenta ilustrarse con la ayuda de un libro.
#2436
Los volcanes siempre han afectado al clima...
Desde simplemente oscurecer el Sol durante días, semanas o meses (cuando son docenas), en zonas que abarcan miles de hectáreas (1 hectárea = 100x100m). Hasta cubrir los sembrados con un palmo de cenizas a una distancia de cientos de km. Hay registros (históricos, no solo geológicos) de ambas situaciones.

Sin embargo, bajo mi punto de vista, que un volcán un terremoto o cualquier otro proceso natural, entre en actividad y realice cambios, no lo considero tanto 'cambiar el clima' si no seguir el curso natural (como tan natural será que un día el Sol, devore los planetas del Sistema Solar)...
Para mi cambiar el clima, es cuando algo lo afecta, pero no entra en la "ecuación natural previsible"... como sucede con la actividad humana (petróleos y derivados, hormigones, etc...).
#2437
Cita de: srWhiteSkull en 28 Mayo 2018, 14:48 PM
La idea de usar ondas para derribar un pepino nuclear no es tan descabellado, pero el problema es que actualmente no hay tecnología para lanzar un "láser" lo suficientemente potente que atraviese el blindaje de las ojivas nucleares, y por supuesto a cuanta mayor la distancia más potencia necesitas.
Los hay srWhiteSkull, lo que pasa es que el señor #!drvy es tan inocente que cree que le van a dar los planos de todo, o si no, no existe...

Los rusos no tienen N1 PU74 1D34 de jugar al póker, y el señor #!drvy, parece que tampoco... si tienes un as bajo la manga, TE LO GUARDAS hasta que realmente lo necesites, que será cuando todos vacíen su bolsillo e hipotequen su casa y lo pongan sobre la mesa, para llevarte todo, no para llevarte 4 cochinas monedas... como dice sobre Corea N.
#2438
Cita de: okik en 29 Mayo 2018, 02:07 AM
Podrías ser más específico y no poner equilicuá, un enlace y ya está.

http://dle.rae.es/?id=FznyqUR


Cita de: okik en 29 Mayo 2018, 02:07 AM
Así a ojo viendo el enlace no veo que puedas saber por ejemplo qué lugar ocupa esta variación:
XXXX12111222XX
Sin haber generado ni una sola variación. No vale por ejemplo crear X variaciones o combinaciones que están en una matriz o en memoria o crear un bucle y establecer una condición y decir, vale esta variación y está en tal lugar.

Está todo allí, bastante claro, si te tomas la molestia de leerlo... entresaco un par de párrafos que inicialmente resumen bastante.
Citar

vamos con el primero, el algoritmo-A.

El algoritmo-A, es el más simple de todos en cuanto a líneas de código y como dije es solo un cambio de base de numeración a la base cuyo tamaño representa el alfabeto usado. Es el algoritmo al que todo el mundo (que sepa un mínimo de programación debiera llegar...
- Su fuerte, la extrema sencillez de entenderlo... (y programarlo).
- Su defecto, que no es el más óptimo en cuanto a velocidad.
...
El conjunto de caracteres puede optarse por todo el ASCII (o una parte definiendo un punto de inicio y una cantidad de caracteres), o restringido a los caracteres: 0-9, A-Z, a-z, o cualquier combinación de ellas (pero siempre en el orden en que aparecen. También permite recibir un alfabeto personalizado (básicamente un array con los caracteres que se desee y en el orden que se quiera). Para el propósito de este texto es suficiente ... (una interfaz sencilla basada en A-Z, 0-9, etc..)

En el primer pedazo de código se definen funcionalidad previa, enumeraciones y tal, como se indica aquí:
...
- Luego hay 4 constructores de clase, para permitir invocar el tipo de alfabeto de que se quiere generar en base a las opciones que permite. (para ! X " habría que elegir Custom, y pasar la cadena ("1X2")
- Finalmente hay un método que construye el alfabeto.

La idea de esta clase, es que el alfabeto sea definido una sola vez y pueda ser usada como parámetro para enumerar. Así se evita que mientras se enumere se modifique el alfabeto (o el tamaño del mismo) y dé lugar a errores durante la ejecución. Ya que se construye y luego es de solo lectura, no puede modificarse mientras se usa.

El siguiente código, copiado de allí:
El bucle interno que realiza toda la operatoria, para generar una permutación y el bucle externo para iterar entre ttodas las permutaciones.

Código (vbnet) [Seleccionar]

   Do
       v = k
       n = Numchars
       Do
           x = (v Mod p_Sizealfabeto)
           Clave(n) = p_Alfabeto(x) ' convertir el byte a char.
           v \= p_Sizealfabeto ' división entera.
           n -= 2
       Loop While (n >= 0)
       ' USAR la clave desde aquí
       ' llamada a FuncionX(Clave)
       k += 1
   Loop While (k < s_MaxPermutaciones)



Cita de: okik en 29 Mayo 2018, 02:07 AM
Muéstrame un sistema diferente al mío donde puedas obtener el orden que ocupa dentro de un orden lógico único  de menor a mayor (ya que solo hay uno para cada tipo) sin bucles, sin generar variaciones. Tal como así:
De 2X2XXX1
a
2121110
y después
2121110= 0·3^0 + 1·3^1 + 1·3^2 + 1·3^3 + 2·3^4 + 1·3^5 + 2·3^6 = 1902  (+1)
ya lo tienes.
Equilicuá... si ya has visitado el enlace para saber lo que significa, tu pregunta sobra...

Justo las líneas antes del bucle, señalé esto:
Código (vbnet) [Seleccionar]

   If (.PermutacionInicialLng < 0) Then .PermutacionInicialLng = 0
   If (.PermutacionInicialStr.Length > 0) Then
       ' FALTA: código para convertir la clave a la enésima permutación.
        ' es el proceso inverso al seguido en el algoritmo y debiera facilitarse como una función pública.
       ' k= EnesimaPermutacion(.PermutacionStr)  ' La función que devolvería el índice de la permutación reclamada.
   Else
       k = .PermutacionInicialLng
   End If

Convertir una clave-apuesta (permutación) a un número indexado de permutación dentro de todas las permutaciones, es (como señalo en dicho texto) la operación inversa...
Resulta tan obvio, que ni me molesté en hacerlo. En general con ese algoritmo (el primero de 4), la única forma de parar en una permutación específica para poder continuar desde donde se dejó en otro momento, exije precisamente convertir una permutación a su valor numérico (el enésimo en la permutación, justamente para luego sumar 1 y seguir generando permutaciones partiendo de ese valor)...

Más arriba al comentar sobre ese algoritmo, describiía que es el más sencillo, pero también el más lento de los 4. Todas las permutaciones de la quiniela (3^14= 4'7millones), en éste equipo desde el que escribo, que data del 2008, las genera en 3'99 segundos, en tanto los otros algoritmos, los generan 2-3 órdenes más rápidos (cientos-miles de veces más rápido)... no se requieren multiplicaciones, divisiones, módulo... solo suma 1 para un único carácter (de toda la palabra) para generar la siguiente permutación. En los otros no puedo computar el tiempo exacto, siempre da 0 TICKS (frente a los casi 40millones de ticks).

En definitiva, lo que te decía al principio es que esto es pura combinatoria, tratarlo como algo distinto, aleja el sentido matemático de un problema conocido, hacia algo que pueda parecer 'raro'...
generar claves = generar las apuestas de la quiniela. Es lo mismo, solo cambia el alfabeto usado ("1X2", para la quiniela) y el tamaño de 'palabras' a generar (para la quiniela una palabra de 14 caracteres).
Cambiando el nombre porque el dominio social sea diferente, no lo convierte en ningún problema nuevo ni distinto, de ahí que cuando señalaste que no habías encontrado 'fuentes', sin estar errado, no llega a ser cierto... es solo porque has buscado por un nombre específico, en vez del genérico del problema.



Si quieres hacer algo interesante sobre las quinielas (y de lo que no hay apenas literatura), te comento por ejemplo que intentes lograr cuántas y cuáles permutaciones para 4 partidos, son las mínimas necesarias para asegurar siempre que se aciertan al menos 3 (de los 4 partidos). Es decir que jugando x apuestas para 4 partidos, tengas asegurado (al menos) 3 aciertos... y cuáles son, o mejor dicho, como obtener las combinaciones de dichas apuestas... teniendo en cuanta que todas las permutaciones posibles para esas 4partidos, son al menos 3 triples (27 apuestas) y un partido fijo en las 27 apuestas, que lógicamente son costosas (los triples), ¿...se puede asegurar 3 aciertos con menos apuestas que las 27?...

Esto es algo conocido, aunque te comento que existen muchas combinaciones (y curiosamente la ONLAE, solo contempla 1), más aún esto se puede ampliar a 5, 6, 7, etc... partidos, que lo hace todavía más interesante...

Saludos.
#2439
elimino, el mensaje salió duplicado, al tratar de modificarlo... cosa de los deslogeos...
#2440
Citar
El objetivo del ejercicio no es combinar... se trata de obtener o saber qué posición ocupa X variación
...
La gracia está en que
equilicuá... https://foro.elhacker.net/abril_negro/abril_negro_spok_simple_production_of_keys-t468239.10.html