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

#2701
Sin llegar al paroxismo de la manía persecutoria, sigo pensando que las telecomunicaciones son sistemas estratégicos, que cada país debiera proteger de puertas adentro. Como mínimo a nivel del funcionariado del gobierno, desarrollando hardware y software propio...
#2702
ASM / Re: ¿Es difícil el lenguaje Ensamblador?
13 Febrero 2018, 15:57 PM
Ensamblador, jamás debiera ser el primer lenguaje de programación que aprender.
Sólo es fácil cuando ya se tienen ciertos conocimientos sólidos, si no, es un galimatías para un principiante.

...por algo hay lenguajes de alto y bajo nivel. Los lenguajes de alto nivel 'reconducen' al programador y en todo momento tiene claro dónde está o qué hace... en ensamblador el código es todo una sopa, la coherencia del código es la que uno mismo le dé, el lenguaje no proporciona prácticamente niveles de abstracción.

Por ejemplo, si uno jamás ha programado un algoritmo de ordenación en un lenguaje de alto nivel, intentar hacerlo en ensamblador, le va a resultar enormemente más complejo, porque donde en un lenguaje de alto nivel te baste 12 líneas de código, en ensamblador puedes llegar a necesitar 50 ó...
#2703
Programación C/C++ / Re: Cartón de Bingo en C.
12 Febrero 2018, 04:13 AM
No es preciso enviar un mensaje personal para estas cosas... pués para eso está precisamente el foro, y así cualquier respuesta sirve para todos.
Los mensajes privados son para cosas que no concierne a nadie más...

Cita de: zkraven en 10 Febrero 2018, 12:09 PM
Hola NEBIRE, sigo teniendo dudas con la función de generar huecos; podrías ayudarme a incluirla en este código:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int filas, columnas; // iteradores

void generar(int matriz[3][9]);
void imprimir(int matriz[3][9]);
void huecos(int matriz[3][9]);

int main()
{
   SetConsoleOutputCP(1252);
   srand(time(NULL));

   int matriz[3][9];

   printf("Este es su Cartón de Bingo: \n");
   printf("\n");
   generar(matriz);
   huecos(matriz);
   imprimir(matriz);
 {
   int opcion;
   do
   {
       printf( "\n   Si desea cambiar su cartón pulse 1: \n");
       printf( "\n   Si le ha gustado su cartón y no desea cambiarlo pulse 2: ");
       scanf( "%d", &opcion );
       switch ( opcion )
       {
           case 1: generar(matriz);
                   imprimir(matriz);
                   printf("\n Suerte con su juego\n");
                   break;
           case 2: printf("\nSuerte con su juego\n");
                   break;
        }
   } while ( opcion !=2 );
}
}

void generar(int matriz[3][9])
{
   for(columnas=0;columnas<9;columnas++)
   {
   do{
       for(filas=0;filas<3;filas++)
       {
           switch (columnas)
           {
               case 0:
                   matriz[filas][columnas] = 1 + rand() % (10 + 1 - 1);
                   break;
               case 1:
                   matriz[filas][columnas] = 11 + rand() % (20 + 1 - 11);
                   break;
               case 2:
                   matriz[filas][columnas] = 21 + rand() % (30 + 1 - 21);
                   break;
               case 3:
                   matriz[filas][columnas] = 31 + rand() % (40 + 1 - 31);
                   break;
               case 4:
                   matriz[filas][columnas] = 41 + rand() % (50 + 1 - 41);
                   break;
               case 5:
                   matriz[filas][columnas] = 51 + rand() % (60 + 1 - 51);
                   break;
               case 6:
                   matriz[filas][columnas] = 61 + rand() % (70 + 1 - 61);
                   break;
               case 7:
                   matriz[filas][columnas] = 71 + rand() % (80 + 1 - 71);
                   break;
               case 8:
                   matriz[filas][columnas] = 81 + rand() % (90 + 1 - 81);
                   break;
               }//final del switch
           }
       }while((matriz[0][columnas]== matriz[1][columnas]) ||
              (matriz[0][columnas]==matriz[2][columnas]) ||
              (matriz[1][columnas]== matriz[2][columnas])||
              (matriz[0][columnas]>matriz[1][columnas])||
              (matriz[1][columnas]>matriz[2][columnas]));
   }
}

void imprimir(int matriz[3][9])
{
   for(filas=0;filas<3;filas++)
   {
       for(columnas=0;columnas<9;columnas++)
       {
           if (columnas == 0 && matriz[filas][0]!=10)
               printf("[  %i ]", matriz[filas][columnas]);
           else
               printf("[ %i ]", matriz[filas][columnas]);
       }
       printf("\n");}
}
void huecos(int matriz[3][9])
{
        do{
           generar(matriz);
        }while();
   }



En el siguiente hilo di una amplia respuesta a otro usuario que preguntaba por un bingo:
https://foro.elhacker.net/buscador2-t472516.0.html;msg2134435#msg2134435

Si bien algunos detalles no quedaron concretados (como tampoco haces tú). Antes de responderte con más precisión sobre el tema es preciso concretar detalles...  de otro modo uno refiere cosas genéricas, que luego resulta más difícil adaptar al caso específico que uno precisa.

Por ejemplo, yo recuerdo en mis tiempos de discotecas (allá a mediados de los 80s), se puso de moda que con la entrada a la discoteca, de regalo, te daban un cartón de bingo (válido para un sorteo, esa noche en el propio local), y a veces, por superar cierto valor en las consumiciones, te daban otro, luego de medianoche en adelante paraban la música un rato y se sorteaba el bingo... recuerdo que aquellos cartones eran de 80 bolas, eran 4 líneas con 5 valores, luego cantar bingo exigía acertar 20 bolas. Sin embargo duraba mucho tiempo y al parecer las consumiciones se 'congelaban' mientras todo el mundo estaba atento al trascurrir del bingo... así que pronto cambiaron a cartones de 90 bolas, con solo 3 líneas asi solo se requerían 15 bolas para alcanzar el bingo. Aunque hay más tamaños de cartones, éste de 90 bolas es el más habitual, así que conviene aclarar los detalles de como es...

Bolas: 90
Lineas: 3
Valores por linea: 9, de los cuales 4 son 'huecos'.
Cantar linea: 5 bolas en línea
Cantar bingo: 15 bolas (3lineas x 5bolas).

Más detalles:
El cartón se reparte en columnas, cada columna acoge a los valores de una decena, así es fácil hallar el valor recién extraído del bombo.
Además, el cartón está 'equilibrado', es decir tiene bolas en todas las decenas. Para que se cumpla esto, ninguna columna debe tener 3 bolas...
Mirándolo bien entonces hay 3 columnas con solo 1 valor y 6 columnas con 2 valores.

Los cartones tienes valores comenzando en 1 y acaban en 90, esto implica que los valores acabados en 0, están en la columna anterior de la decena de la que forma parte... en las explicaciones subsiguientes, en cambio he optado por valores en el rango 0-89 y así, los valores 0,10,20,30...80 están en la misma columna que el resto de valores de la decena.

Otro detalle, es que para que el juego sea equitativo con todos, no puede haber más bolas de un valor que otro en los cartones, esto implica que todas las bolas de un bingo, deben ser alojadas en sendos cartones... así el bingo de 80 bolas se ajusta en 4 cartones (20bolas por cartón x 4cartones = las 80 bolas del bingo).
... y de igual modo para éste: 90bolas de bingo / 15bolas por cartón = 6 cartones...
Es decir las 90 bolas deben repartirse en 6 cartones, y para generar más cartones siempre deben ser de 6 en 6... luego eso que tienes en tu código de 'te gusta este cartón?'... no vale... los jugadores/apostantes/bingueros, no pueden elegir cartón, al menos no debe elegirse un cartón creado al efecto, si no en todo caso, entre los generados (igual que un jugador real, no podría elegir ningún cartón que físicamente no existe, y los que existen, han sido generados siempre en secuencias de 6 en 6...)

Y por último, los cartones deben estar bien proporcionados, con un reparto de valores equilibrado. Al caso, de cada decena debe existir valores. Los jugadores se  quejarían de situaciones similares a éstas:
-- 31 32 -- 33 -- 34 35 --  (números consecutivos)
ó una como esta, (en este caso perfectamente válida)
-- 27 -- 47 67 -- -- 87 17  (números con la misma terminación)
Incluso una línea que sin ser consecutivos tuvieran varios de la misma decena alguien se quejaría:
-- -- 43 -- 48 -- 40 42 45  (todos en la misma decena)
Tampoco se libran situaciones como esta:
03 -- 06 -- -- 09 -- 85 -- 87  (unos muy bajos y otros muy altos).
Esto aunque fuera mejor, quedaría feo:
-- -- -- -- 15 31 55 62 84 (todos los huecos juntos por un lado y los valores por otro).

Se puede considerar dos formas de abordarlo, simple o complejo, según ignoremos ciertas condiciones expresadas más arriba.
Ignoro si todo esto es una tarea escolar, para la Universidad o si es algo más 'profesional', si es un trabajo para la 'Uni', quizás sea mejor obviar muchas cosas, y simplemente repartir las bolas entre los cartones sin molestarse en las otras consideraciones (obviamos mantener no más de 2 valores por decena y para 3 decenas solo 1 valor, además de constatar ordenadas las bolas en el cartón, etc...).

Si es un tarea de la 'Uni', posiblemente sea suficiente la forma simple: repartir los números entre los cartones y alojar los huecos, sin entrar a valorar más consideraciones. Por tanto voy a considerar este útimo caso, como el tuyo, y el pseudocódigo que sigue se ajusta a esto, si luego resulta que es para un trabajo más profesional, pués avisa... es un poco más complejo, pero tampoco excesivamente, aunque si lleva más texto explicativo, para terminar de comprenderlo todo bien...



----------------------------------------
Tu primer trabajo, por tanto es barajar las 90 bolas y repartirlas entre los 6 cartones. Al caso, tras barajar el array él mismo basta inicialmente para contener los 6 cartones en crudo, considerando que cada cartón empieza en los índices múltiplos de 15 ... (cartón 1ª índices del 0 al 14, 2ª índices del 15 al 29, etc... cada 15 se alojan en un nuevo cartón).
El pseudocódigo para esto, ya te lo puse más arriba, copio y pego:


Array de bytes = funcion CrearYRellenarArray(byte cantidad)
   byte k
   array de bytes Bolas(0 a cantidad-1)

   bucle para k desde 0 a cantidad-1
       Bolas(k) = k  
   fin bucle
 
   devolver Bolas
fin funcion


//Y luego se barajan, así el reparto es aleatorio:

funcion Barajar(Array de bytes Bolas, byte Cantidad)
   byte i, j
   entero k

   Bucle para k desde cantidad-1 hasta 1 retrocediendo
       i = random(ente 0 y k)

       j = Bolas(i)
       Bolas(i) = Bolas(k)
       Bolas(k) = j
   fin bucle
fin funcion



He obviado ordenar los valores de cada cartón, porque aquí la forma (simple del bingo) seguida aquí, los desordena de nuevo... al final si lo deseas puedes ordenar los valores de cada línea... a medida que se crea la línea

La 2ª tarea es generar los cartones. Una función invoca en bucle a otra que mete los huecos en cada línea de 1 cartón

// esta función manda meter los números de cada 'cartón' del array bolas en el array de cartón definitivo, con sus respectivos huecos.

// o un array de arrays...
coleccion de arrays = funcion Crear6Cartones(array de bytes Bolas, byte cantidad)
   byte k
   array de bytes carton
   //coleccion  col = nueva coleccion


   bucle para k desde 0 a 5 // 6 cartones
       carton =  MeterHuecos(bolas, k, )
       //col.Add(carton)
       llamada a ImprimirEnPantalla (carton)  ' si solo se ha de probar, que funciona bien, no es preciso devolver una colección, podría bastar con pasarlo por pantalla...
   fin bucle
   
   //devolver col
fin funcion


La 3ª tarea  finalmente es generar un array individual para cada cartón. con sus 27 casillas (3 líneas de 9) generando los huecos...

Para ello primero se crea un array con los 27 elementos que ha de tener.
Se considera subdividido en 3 series de 9, en cada serie de ellas introduce al comienzo, 5 valores procedentes del array bolas, luego se añaden detrás los 4 'huecos' (con valor 255) ... y se baraja esa línea, así quedan repartidos los valores y los huecos...

Array de bytes = Funcion MeterHuecos(array de bytes Bolas, entero NumeroCarton)
   array de bytes Carton(0 a 26)
   byte i, j, n, indice, ix, v
   entero k

   indice = (NumeroCarton * 15)    // indice en el array donde comienza este cartón...
   i = 0

   bucle para j desde 1 a 3  // 3 líneas
       // en este bucle metemos 5 valores en una línea.
       bucle para k desde indice a (indice + 4)
           carton(n) = Bolas(k)
           n +=1
       fin bucle
       indice = k

       // metemos los 4 huecos (valor 255)
       bucle para n desde n a n+3
           carton(n) = 255  
       fin bucle
     
       // Resta barajar esta línea del cartón, que es lo que hace el siguiente bucle:
       bucle para k desde n-1 hasta i+1 retrocediendo  
           ix= random(entre i y k)  // OJO: entre i y k, no entre 0 y k

           v = carton(k)
           carton(k) = carton(ix)
           carton(ix) = v
       fin bucle

       i = n      
   fin bucle  
 
   devolver carton
fin funcion


Solo resta las llamadas a cada función...

funcion Main()
   array de bytes Bolas
   // coleccion col

   Bolas = CrearYRellenarArray(90)
   llamada a Barajar(Bolas, 90)
   
   llamada a Crear6Cartones(Bolas, 90) ' y los imprime, para ver le resultado de cada uno.
   // coleccion = Crear6Cartones(Bolas, 90)
fin funcion


...y listo, es plenamente funcional... cuando lo pases a código... como está escrito de un plumazo, quizás precise alguna pequeña corrección...

La función ImprimirEnPantalla(array de bytes Carton) queda a tu esfuerzo, no creo que tengas problemas (solo recuerda que los huecos contiene valor 255, imprime 2 espacios, o 2 guiones y para valores menores de 10, añade un 0 delante, para cuadrar bien las líneas).

Este método, puede ser suficienbtemente válido para una tarea de estudiante , ya que lo que se persigue es cumplir una funcionalidad, y que el alumno se esfuerce en entender y ser capaz de darle solución, pero no es válido para usar de forma real, los cartones resultantes podrían tener situaciones por las que un jugador tendría 'quejas', tal como te señalaba más arriba...
Si necesitas algo más 'profesional' avisa y me extiendo en los detalles de la 'forma compleja'... no lo es tanto, pero ciertamente tiene más trabajo que esto...

Aquí un resultado al ejectuarlo... Nota como siendo la forma simple, aparecen los fallos descritos al comienzo: columnas con 3 valores, o con 3 huecos, más de 3 valores seguidos, valores desordenados, más de 2 valores de la misma decena, valores de algunas decenas ausentes, etc...
Sin embargo cada línea contiene 5 valores y 4 huecos y los 6 cartones contienen todas las bolas de la 0 a la 89.

--  --  29  15  --  10  77  --  02  
----------------------------------------
75  70  84  --  --  --  07  46  --  
----------------------------------------
--  21  --  76  45  --  24  22  --  
----------------------------------------


06  42  --  87  18  --  --  23  --  
----------------------------------------
--  43  62  31  --  --  --  13  33  
----------------------------------------
53  --  --  --  --  73  71  08  61  
----------------------------------------


09  --  --  88  --  59  --  20  38  
----------------------------------------
82  14  --  --  --  --  35  41  69  
----------------------------------------
--  --  44  --  83  11  74  80  --  
----------------------------------------


--  --  05  26  --  --  58  00  78  
----------------------------------------
37  --  27  55  54  --  --  12  --  
----------------------------------------
49  34  --  56  --  --  51  --  48  
----------------------------------------


--  19  81  40  --  --  17  --  16  
----------------------------------------
79  30  39  --  --  36  --  --  52  
----------------------------------------
72  85  --  --  --  04  68  --  64  
----------------------------------------


--  28  --  --  32  67  --  60  03  
----------------------------------------
--  57  65  --  --  --  01  66  89  
----------------------------------------
--  63  50  86  --  47  --  --  25  
----------------------------------------

La banca para sacar las bolas usa las dos primeras funciones, esto es, crea el array y lo rellena y luego lo baraja...
Una tercera función sería un bucle que va 'cantando' las bolas que señala el bucle... el bucle va recorriendo dicho array barajado...
#2704
El problema existe desde que ambos cables se unificaron en uno solo.

Si el cable de alimentación fuera a una toma solo para alimentación e independiente del de datos, no pasaría (aunque fuera el mismo cable)...

Pero al pretender ahorrar espacio y servir la misma conexión física para ambas funciones, pués ahí ya queda posiblidad para el espionaje y la infección.
#2705
Cita de: wolfbcn en  8 Febrero 2018, 02:11 AM
Allá por el año 1987... veintiún años después del film,
Claramente el que escribió eso, era 'de letras'... ¿no?.

Bien,  a ver si sdalen también gafas que podamos portar todos los ciudadanos y cuya base de datos esté repleta de los negocios de los políticos, sus cuentas y tal y las leyes que aprueban... y así cuando paseemos por las calles, nos salte una alarma de "político corrupto hallado".
#2706
Cita de: Orubatosu en  8 Febrero 2018, 20:43 PM
Es "una putada" pero me parece una muestra de como una buena idea, termina siendo no tan buena por el uso que hacen de ella. La dinamita se inventó como explosivo para su uso en minas, pero también la puedes usar para volar un orfanato por los aires
Coincido en esta ocasión con lo expuesto por Orubatosu...

Me molesta además (del bitcoin) que los 'daños' que se ocasionan por el consumo eléctrico, nos afecta a todos, no a ellos, pero en cambio los 'beneficios' que saquen de minar va a parar a sus bolsillos, no a los de todos.
#2707
La tecnología para identifica al llamante, no vale 2 euros, ni en sueños. Por no valer, yo apuesto a que no vale ni 1 céntimo de euro.
Es desproporcionado y ridículo.

Es como si en un bar, te cobraran 1'5 por una cerveza y 0'50 por 'destaparte' la botella... ridículo.
#2708
Qué gracioso... esta noche tuve un sueño, donde aplicaba un parche que consistía en incluir solo 3 instrucciones ensamblador, referidas precisamente a Spectre y Meltdown  :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh: :laugh:
#2709
Cita de: buite en  8 Febrero 2018, 13:14 PM
La estadística es una parte de la matemática que requiere unos protocolos que, en caso de cumplirse, son fiables en al menos un 95%. Yo la uso muchísimo.
Yo también, pero no sobre sistemas vivos capaces de interaccionar con el resultado.

Cita de: buite en  8 Febrero 2018, 13:14 PM
Otra cosa es que no se hagan bien o que en las encuestas la gente mienta.
Con "la gente mienta", no sé si te refieres a los 'encuenstados', a los 'encuestadores' o a los que 'encargan la encuensta'. Yo apunto a estos últimos, o a la presión que estos hacen a los 'encuestadores' (si es que ambos no son los mismos).

En cualquier caso, detesto que porque una mayoría tenga una preferencia, se elimine mi preferencia (las de las minorías).
Hay una 'prostitución' consentida en la alteración de la realidad, al hacerse caso de las estadísticas. Abedeciéndolas (por el resultado arrojado), estás favoreciendo 'tener la razón'...

#2710
Parece mentira, que seais listos y a la vez tontos.

Las ondas cualesquiera, dadas una frecuencia, no queda simplemente en esa onda hasta que cese la causa... las ondas se alteran... puede dividir o aumentarse su frecuencia... hasta a un niño se le explica ya con apenas 10-12 años, el fenómeno mediante la refracción de la luz, o del sonido y como el cambio de un medio a otro, la onda experimenta una variación (para la luz es obsevable a ojo en el ángulo descrito fenómeno que llamamos refracción), en ambos casos es un cambio en la frecuencia de las ondas. Cuando la luz se descompone en el arcoiris, sucede lo mismo, se separa en diferentes longitudes de onda.
...pero el fenómeno no es únicamente aplicable a las ondas de luz naturales, sucede con TODAS las ondas...
Por otro lado, no hay ondas puras... a pesar de los filtros, cualquier onda incluso emitida muy pura una vez emitida, interfiere con todo lo que se encuentra y hace 'reflejos', 'sombras', 'ecos' y todo a distintas frecuencias, precisamente porque cada medio con el chocan es incapaz de vibrar a la misma frecuencia que le llega...

Cuando las ondas son emitidas, estando los seres vivos en su camino, chocan contra ellos (igual que el viento), son otro medio y la onda hace vibrar al medio con el que se encuentra (l omismo que el viento empuja a su vez a cualquier cosa y si no está firmemente sujeta, la mueve igualmente). Cuanto más sólido más veloz camina la onda a su través, y cuanto menos más decáe... los seres vivos, son precisamente esto último...

Cualquier onda que llega a ti, te impacta y aunque no lo notemos nos hace vibrar por doquier, la piel a una frecunacia, los huesos a otra... tendones a algo intermedio...
El ejemplo más claro de esto, es cuando escuchamos una bateria (tambores y tal) a buen volumen a una distancia no muy grande y sentir como todo el estómago reverbera intentando seguir la misma frecuencia de la membrana del tambor.... precisamente porque son similares emiten y reciben en frecuencias similares.

Tocando las microondas, no sé que física has estudiado tú engel, pero al margen de calentar la piel, el cráneo es una protección, pero nada que ver, con como lo pintas... las microondas pasan a través del cráneo, y el cerebro se empezará a calentar hasta prácticamente licuarse... y el cráneo (las placas óseas) podría seguir prácticamente frío. Precisamente porque el cerebro es una masa semifluída, las moléculas se mueven con más libertad que las del cráneo, cuando son atravesadas por las microondas, el efecto inmediato es un movimiento a más velocidad, looque acaba generando un calentamiento, al final acabará hirviendo y el cráneo reventará debido a la presión interna (no como en las pelis, que podrá parecer como reventar una sandía, lo lógico es que reviente hacia abajo el cuello, porque hay cavidad de escape).

Negar que las ondas alteran a los seres vivos, es escribir una noverla de fantasía. Que no todas producen enfermedades ni males, es otra historia y referente a lo que trata el tema, que las ondas de los teléfonos producen cáncer, a mi no me cabe ninguna duda... Siempre se alude a los efectos que tal o cual frecuencia hace esto o lo otro, aquí o allá, pero el problema no es eso... el problema debe ser algo muy específico y puntual pero que rayando en los años sea el desencadenante...

Un ser vivo está repleto de sistemas complejos, habrá ondas mortales (y no hace falta llegar a las radiaciones gamma, que barren y borran sistemas estelares completos) que por sí mismas no lo sean pero que en determinadas condiciones sí que lleguen a serlo... los científicos, no encontrarán nada, si no dan con las 'determinadas condiciones'... esto es, 'si no repiten el proceso como exactamente se produce en la Vida, es normal que no obtengan los mismos resultados.'
¿Hasta qué punto unos ratones encerrados en unas urnas de cristal (o unas jaulas), dejando un móvil cerca de ellos, reproduce fielmente la vida de las personas?. No hace falta ser un gneio para asegurar que pocas... Si un a inyección de una medicina (bioquímica), quizás sea reproducción muy fiel d elo que pueda suceder en una ser humano, el caso del tf. móvil, más que probablemente diría que no se parece en mucho. Quien sabe quizás sea tener el tf. cerca y al mismo tiempo pronunciar una A muy sonora, el instante inductor del problema, o quizás tener el móvil en la oreja (charlando), mientras estamos cerca de otra fuente de radiación, y que sea ésta quien module las ondas de aquella... o quizás tener el móviol todo el día y haber comido determinado tipo de alimentos... los ratones encerrados en una jaula, desde luego en todos esos aspectos, no se parecen en nada a la vida habitual de los humanos, salvo a unos pocos.

Lo más lamentable de todo, es la estupidez persistente en emperrarse en que si esta o aquella onda... que si el cosmos, que si... son los detalles... las circunstancias concretas, o de otro modo el cáncer aparecería de modo inmediato, tiene que haber factores desencadenantes y acumulativos... y obviamente no será fácil dar con ellos o ya se habrían determinado hace años...