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

#2871
Vaya tela... técnicas rastreras de vendedor de 4ª categoría (más propia de los chinos).

Es claro, que si el mejor modo que conocen para que los usuarios se pasen a comprar terminales nuevos, es joderles el usado (que no por ello viejo), es síntoma claro del bajo potencial de innovación como factor de atracción de usuarios.
#2872
Vaya, promocionando los Xiaomi... a usuarios que a veces no saben ni buscar determinada función, para que acaben teniendo un S.O. que ni conocen ni podrán utilizar con determinados sistemas (por ejemplo pagos) por no portar un android oficial, o simplemente por no tener NFC
...y ya veremos que pasa con el servicio técnico, cuando haya problemas...
#2873
Pués si se dió cuanta a la mañana siguiente, todo lo que tenía que hacer es ir al banco y ordenar la vuelta atrás del dinero. Hay un plazo de días para la anulación.

En cualquier caso, hay que ser más cauto y no pinchar en cualquier web que diga vender... sin conocer previamente que opera adecuadamente. Teclear tus datos bancarios en una web así como sí, es de una torpeza... ante las dudas, lo mejor es probar al menos introduciendo datos falsos de la tarjeta y a ver qué ocurre...

China y en general el mercado asiático, será un gran problema en años venideros... dados los bajos recursos dedicados en esos países a la seguridad propia del país, que se puede esperar de la seguridad por internet.
#2874
Cita de: PalitroqueZ en 21 Diciembre 2017, 02:12 AM
esas son las ganancias a las que hacia referencia y por la que no vale la pena invertir en venezuela.
Ya. Pero eso es la cosecha del 'chavismo'.
Si plantas tomates, obtienes tomates. Si plantas patatas, obtienes patatas.
...y si plantas promesas falsas, populismo utópico y demás tonterías, se tiene lo que hay.

Y lo peor, no es tanto lo que hay, si no que es una generación completa, la que ya ha nacido y mamado toda ese mundaneo.
Cuando uno tiene un oficio y de repente un día decide atracar bancos, quizás decida dejarlo el día que lo metan en la cárcel, pero si alguien ya desde la cuna viene como ladrón, va a ser que morirá siendo ladrón toda su vida.

Así que este conflicto de Venezuela, dejará un lastre muy largo en el tiempo, cuando el chavismo quede sepultado... Una verdadera pena.
#2875
Programación C/C++ / Re: Mejorar el codigo
20 Diciembre 2017, 18:26 PM
Yo no lo haría de forma ligeramente diferente a como lo resuelve engel lex

Básicamente sabemos que solo tiene posibilidades de ser primo si acaba en 1,3,7 ó 9, luego esa debería ser la primera condición a verificar.
Luego, en efecto basta con llegar a la raíz cuadrada del número más alto, ya que a*b = b*a, con lo que al llegar al punto donde 'a' sea la raíz cuadrada, luego los valores de 'a', irán tomando los de 'b' y viceversa...




buleano = funcion EsPrimo(entero Valor)
     entero unidades, max, k

    unidades = (valor modulo 10)

    Si ((unidades and 1) = 1) luego  // primer filtro  (eliminamos los acabados en 0,2,4,6 y 8, es decir aceptamos solo los impares
        Si (unidades = 5) luego   // y ahora descartamos el impar 5
            Si (valor=5) luego
                Devolver TRUE
            Sino
                Devolver FALSE  // cualquier otro múltiplo de 5 no es primo.
            Fin si
        Sino
            max = RaizCuadrada(valor) +1  // segundo filtro,
            bucle para k desde 7 hasta max en incrementos de 2
                  Si ((valor modulo k) = 0) Devolver FALSE
            Fin bucle

            Devolver TRUE
        Fin si
    Sino  // todavía podría ser 2 que es el único par que es primo (divisible sólo: por sí mismo y la unidad)
        Si (valor = 2) luego
            Devolver TRUE
        Sino
            Devolver FALSE
        Fin si
    Fin si
Fin funcion

Este código es óptimo para saber si un número cualquiera (aleatorio) es primo, pero si vas a operar con una lista seguida de valores, puede ser optimizada, toda vez que determinadas comprobaciones pueden moverse al bucle principal de la lista, evitando la llamada a esta función.

Aparte de eso, el bucle puede mejorarse toda vez que sabemos que si acaba en 5, no será primo, y también porque muchos impares son múltiplos de 3 (esto es cada 3 impares seguidos, 1 es múltiplo de 3): 11,13->15;  17,19->21; 23,25->27; 29,31->33 . 

Queda a tu esfuerzo optimizar dichos casos...
#2876
Cita de: PalitroqueZ en 19 Diciembre 2017, 16:51 PM
...
en venezuela ... aquel que quiera emprender una empresa, deberá "compartir" sus ganancias con el gobierno si o si,...
Más o menos como en todas partes. Se llaman impuestos, pero con la notable diferencia de que son porcentajes establecidos de forma pactada y razonada (no siempre, por supuesto).

Entre 'compartir' y 'hacerse con el control' está la diferencia. Si arriesgas y te sale bien, que luego se quieran quedar con TODO tu beneficio, y si arriegas, lo pierdes  y TE JODES, ante esa perspectiva no habrá ningún inversor. No existe interés en arriesgar tu economía para que los resultados sin son buenos pasen a manos del gobierno y son malos, sacudan tu bolsillo. Habrá interés en arriesgar, invertir, cuando exista una posibilidad razonable de obtener beneficios.

...pero algunos parecen no entender las matemáticas más simples ni la psicología más elemental...



Cuando el gobierno 'chavista' acabe (sea cuando sea que ocurra), a buen seguro empezarán a saltar muchos 'peces gordos' fuera del 'estanque' para que no les pillen... En cada gobierno autocrático, acaban asentándose parásitos que por sus labios desbordan idealismo barato por los 4 costados, pero por detrás están desfalcando todo cuanto llega a sus manos, y todo el control que realizan no acaba sino en información privilegiada para sus fechorías... se los ha visto en todas partes a lo largo de la Historia. Venezuela no va a ser ninguna excepción a este respecto.
#2877
Estos jerifaltes como de costumbre con sus tonterías sin sentido.

El único impuesto razonablemente exigible es que si se benefician de un subsidio por el consumo energético, por el mero hecho de minar biutcoin, les exigieran el pago completo del consumo energético, asumiendo que no es un gasto para la 'supervivencia' per sé del núcleo familiar.

Querer tener un listado de 'mineros de bitcoin', no es más legal que querer tener un listadod e todas las personas que cada día pronuncian la palabra 'veremos' (o cualquier otra), una solemne idiotez propia como no, de gobiernos totalitarios repletos de inútiles idealistas...
#2878
Software / Re: Recuperar contraseña archivos .RAR
17 Diciembre 2017, 17:15 PM
Puedes intentar algo simple...

A menudo algunas web publican/publicaban contenido con contraseña, pero la contraseña solía ser trivial en esos casos... del tipo: la contraseña es el nombre de la web, bien que no exactamente, espacios en blanco, puntos, etc... podrían no ir, así como  no respetar las mayúsculas (todo en minúculas o viceversa)... en casos m
ás extraños, he llegado a ver que de un año a otro, la contraseña era la misma, excepto porque al final la contraseña acababa en los caracteres del año en que se estaba.

...ergo, yo intentaría esto mínimo: Si sabes como se llama la web de la que provenía, prueba con contraseñas consistiendo en variaciones del nombre de la web... al modo que te he comentado.
#2879
Windows / Re: Nuevo Icono en la barra de inicio.
17 Diciembre 2017, 17:09 PM
Ese es el icono típico de shell.

De hecho, cuando abres una ventana de comandos (cmd), solía ser el símbolo que aparece a la izquierda a mo do de indicador de 'esperando entrada de datos' (se podía cambiar, por supuesto).
Powershell, es por decirlo de modo simple una versión muchísimo más potente del vetusto cmd (a su vez sucesor del command.com).

Para más inri, ahí mismo te muestra la opción: "Desanclar de la barra de tareas", ¿luego... qué entiendes de lo que lees?.

#2880
Yo veo más interesante que una función devuelve un valor indicando cuales de las 8 posibles movimientos del caballo son válidas.

Se pasa a la función las cordenadas del caballo y el estado del tablero.
Con estado del tablero, se indica que contiene uno de estos 3 tipos de valores (en cada casilla del array que lo mantiene):
---: =0; Casilla no ocupada.
---: >0; Casillas ocupadas por el contrincante (el valor define que figura es).
---: <0; Casillas ocupadas por tus propias figuras (el valor define que figura es).

Luego, como el caballo tiene 8 posibles movimientos, usaremos un byte como respuesta:
- Cada bit a 1 indica movimiento posible (casilla vacía o figura del enemigo que se puede comer).
- Cada bit a 0, movimiento no posible (esto es, fuera del tablero u ocupada por tus propias figuras)


// Esta funcion devuelve un byte indicando en cada bit si la casilla correspondiente a dicho bit puede o no saltar el caballo a ella.
// Si el movimiento es posible y la casilla está vacía u ocupada por el enemigo, se pone el bit correspondiente a 1.
byte = funcion PosicionesValidas(entero x, entero y, array tablero() )
   byte n
   
   ' bit 0 y 5 (porque ambos comparten el x-1)
   Si (x-1) >= 0) luego
       Si (y-2) >= 0) luego // bit 0            
           Si Tablero(x-1, y-2) >= 0 luego n = 1 //previamente valía 0.
       fin si
       Si (y+2) >=0) luego //bit 5
           Si Tablero(x-1, y+2) >= 0 luego n= (n or 32)
       Fin si
   Fin si

   ' bit 1 y 4 (porque ambos comparten el x+1)
   Si (x+1) >= 0) luego
       Si (y-2) >= 0) luego // bit 1            
           Si Tablero(x+1, y-2) >= 0 luego n=(n or 2)
       fin si
       Si (y+2) >=0) luego //bit 4
           Si Tablero(x+1, y+2) >= 0 luego n= (n or 16)
       Fin si
   Fin si
// -----------------------------
    ' bit 6 y 7 (porque ambos comparten el x-2)
   Si (x-2) >= 0) luego
       Si (y-1) >= 0) luego // bit 6            
           Si Tablero(x-2, y-1) >= 0 luego n=(n or 64)
       fin si
       Si (y+1) >=0) luego //bit 7
           Si Tablero(x-2, y+1) >= 0 luego n= (n or 128)
       Fin si
   Fin si

   ' bit 2 y 3 (porque ambos comparten el x+2)
   Si (x+2) >= 0) luego
       Si (y-1) >= 0) luego // bit 2            
           Si Tablero(x+2, y-1) >= 0 luego n= (n or 4)
       fin si
       Si (y+1) >=0) luego //bit 3
           Si Tablero(x+2, y+1) >= 0 luego n= (n or 8)
       Fin si
   Fin si

   devolver n
fin funcion


- Otra función debiera admitir a qué cordenadas refiere un bit 'n' del byte (que devuelve la función anterior) dada la posición actual del caballo.
- Se añade además  a la función otro parámetro; el array del tablero, y así la función retorna un byte, que es indicadtivo de si se mueve a dicha casilla y si además 'se come' una ficha del enemigo, ó si no es posible moverse a ella...  

// Una enumeración para la devolución de la función así resulta útil saber que pasó.
//  igualmente bastaría un sByte y acordar que este
enumeracion PosibilidadesDeMovimiento
    Movimiento_No_Mueve = -1 //No se puede mover a esa posición (están tus figuras o apunta fuera del tablero)
    Movimiento_Vacio = 0 //se posiciona en OTRA casilla vacía, no pasa nada más.
    // Al comer se podría prescindir de qué figura come (y en todos estos casos devolver simplemente 1) aunque resulta más interesante así...
    // Estos valores deberían coincidir con los valores asignados a las figuras (en otra enumeración, para el tablero)
    Movimiento_Come1 = 1  // come a un peón
    Movimiento_Come2 = 2  //come a una torre
    Movimiento_Come3 = 3  //come a un caballo
    Movimiento_Come4 = 4  //come a un alfil
    Movimiento_Come5 = 5  // Come a la reina.
    Movimiento_Come6 = 6  //  Mata al rey, fin de partida (el rey no tiene movimientos)
fin enumeracion


Y ahora que queda claramente definida lo que tiene que hace rla función su pseudocódigo resultante:
- Posibles es el byte que se devolvió en la función anterior, y bitposición la elección de movimiento del jugador.
- 'x' e 'y' son las cordenadas actuales y a la devolución contendrán las cordenadas de destino del caballo (solo si fue posible moverse).

PosibilidadesDeMovimiento = funcion PosicionarCaballoSobre(byte x, byte y, byte Posibles, byte BitPosicion, array sByte Tablero() )
   sbyte dx, dy
   PosibilidadesDeMovimiento n

   Si ((2^BitPosicion) and posibles) luego  // ¿realmente ese bit está a uno (casilla aceptable donde mover el caballo) ?
       Seleccionar BitPosicion
           caso 0
               dx = x-1
               dy = y-2          
           caso 1
               dx = x+1
               dy = y-2
           caso 2
               ...  // a rellenar por ti...
           caso 3
               ...
           caso 4
               ...
           caso 5
               ...
           caso 6
               ...
           caso 7
               ...
       Fin seleccionar
 
       // no hace falta comprobar dx y dy dentro del tablero, ya que eso se comprobó en la función anterior y se garantiza al inicio de esta función...
       n = Tablero(dx, dy)
       Si (n>0) luego
           x = dx
           y = dy
           devolver n
       Osi (n=0)
           devolver n
       fin si
   Fin si

   devolver -1
fin funcion



Luego el código de las llamadas sería algo como:

array sByte tablero(0 a 7, 0 a 7)  //el array del estado del tablero está definidio a nivel del módulo/clase

Funcion JugarCaballo(byte x, byte y)  //x, y son las cordenadas actuales del caballo.
   sByte n, p
   posibilidadesDeMovimiento j
   byte dx, dy

   n = PosicionesValidas(x, y, tablero() )
   Si (n> 0) luego //hay posiciones válidas para el caballo desde donde está actualmente
       dx= x
       dy = y
       Hacer
           mensajeAlJugador ""Elige una de los 8 posibles movimeintos del caballo (un valor en el rango: (0/7)" con imagen adjunta de las psoiciones que son 0-7)
           p = JugadorEligePosicion // para el caballo (en el rango 0-7
           j = PosicionarCaballoSobre(x, y, n, p, tablero() )
       Repetir mientras (j<0)

       Si (j>0)
           ComerFichaEnemiga(x, y, j) // allí se ve si la ficha comida es el rey en cuyo caso acaba la partida.
       Fin si
       MoverCaballoA(x, y)

       // Actualizar estado del tablero:
       tablero(dx, dy) = 0 // casilla libre, caballo retirado de ahí.
       tablero(x, y) = -3 // 'nuestro' caballo en dicha posición (hbiera o no una ficha del enemigo en ella).
   fin si
fin funcion

   

Los bits que definen la posición del movimiento serían así: