Durante mayo estuve desarrollando una nueva interfaz web para la radio que fabrique. Dicha interfaz esta hecha usando Bootstrap y Material Design for Bootstrap.
Leer másCategoría: JavaScript
JavaScript es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico. Leer más.
Redirecciones JavaScript y PHP según el dispositivo para forocoches
Hay una cosa muy molesta que llevo sufriendo un tiempo con Opera, y es que el Speed Dial al sincronizarse con Opera Link me sintoniza el ordenador y el móvil para que tenga todas las configuraciones iguales. Esto no es ningún problema, si no toda una ventaja.
El problema esta cuando te encuentras páginas que aun disponiendo de una versión normal, para ordenadores, y otra móvil, para Smartphones, pasan completamente de hacer una redireccion, de modo que dependiendo del dispositivo con el que te conectes te cargue una plantilla u otra. Ejemplo de ello es forocoches, que dispone de versión normal bajo el subdominio www, y de versión móvil bajo el de m.
Leer másConversor de gráficos de 8×8 pixeles a binario para matrices de Leds
Ahora que estoy empezando a usar matrices de Leds he observado que es algo complicado dibujar los diferentes caracteres o gráficos de forma directa, pues los valores que hay que usar están en binario, bueno, en realidad se trabaja con un rango de números entre 0 y 255 por fila que se obtienen al usar la base dos y el exponente correspondiente al número de columna.
En resumen, si queremos encender los siguientes Leds para formar una flecha hay que pasar los siguientes números.
Leer más10) Mastermind
Mastermind (Español «Mente maestra») es un juego de mesa, de ingenio y reflexión, para dos jugadores.
Se juega en un tablero con fichas blancas y negras pequeñas y de otros colores, de un tamaño algo superior. Uno de los jugadores escoge un número de fichas de colores, 4 en el juego original, y pone un código secreto oculto del otro jugador. Éste, tomando fichas de colores del mismo conjunto, aventura una posibilidad contestada con negras (fichas de color bien colocadas) o blancas (fichas de color con el color correcto, pero mal colocadas).
Termina al averiguarse la combinación (es decir, se consigue una combinación con cuatro negras), o bien se agota el tablero (depende del tamaño, aunque generalmente son 15 combinaciones).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 |
/* 10) La maquina elegirá cuatro colores (Rojo, Verde, Azul o Negro) al azar, repetidos o no, en un determinado orden. A continuacion el jugador debera acertar los colores en el orden exacto, si el primer color que eligio la maquina coincide con el primero del jugador, se mostrara un 1, si no coincide, pero el color del jugador esta presente en uno de los tres colores restantes de la maquina, se mostrara un 0. En caso contrario no se mostrara nada. Así sucesivamente con el resto de colores. De forma que si la maquina elige: “N V A A”, y el usuario: “R R A N”, se mostrara: “1 0”, el 1 por la A que coincide, y el 0 por la N que esta presente en la combinacion de la maquina. Otros ejemplos: La maquina elige “R R N V”: Usuario: Resultado: Significado: V N A R 0 0 0 Tres colores estan y uno no. R N A R 1 0 0 Uno coincide, dos estan y uno no. R A N N 1 1 Dos coinciden, dos no estan. R V N R 1 1 0 0 Dos coinciden, dos estan. R R N V 1 1 1 1 Los cuatro colores coinciden. http://es.wikipedia.org/wiki/Mastermind */ //Se inician las variables var dado; var ColMaquina=""; var ColUsu=""; var ColUsuario=""; var ColUsuario2; var resultado=""; var uno=""; var dos=""; var tres=""; var cuatro=""; var intentos=0; var NumExactos=0; var NumPresentes=0; //La maquina elije cuatro colores y los guarda todos concanetados en una variable. //Para que los colores sean mas aleatorios, cada color tiene dos valores del dado, y el dado es de 8 caras. for (var i=0;i<4;i++){ dado=Math.floor(Math.random()*8); if (dado==0 || dado==4){ ColMaquina = ColMaquina + "R"; } else if (dado==1 || dado==5){ ColMaquina = ColMaquina + "V"; } else if (dado==2 || dado==6){ ColMaquina = ColMaquina + "A"; } else if (dado==3 || dado==7){ ColMaquina = ColMaquina + "N"; } } alert(ColMaquina); //Se muestra ayuda sobre el juego si el usuario asi lo decide if(confirm("Necesita ayuda para jugar?")){ alert("La maquina elegirá cuatro colores (Rojo, Verde, Azul o Negro) al azar, repetidos o no, en un determinado orden.\n\nA continuacion el jugador debera acertar los colores en el orden exacto, si el primer color que eligio la maquina coincide con el primero del jugador, se mostrara un 1, si no coincide, pero el color del jugador esta presente en uno de los tres colores restantes de la maquina, se mostrara un 0. En caso contrario no se mostrara nada.\nAsí sucesivamente con el resto de colores.\n\n\nDe forma que si la maquina elige: \”N V A A\”, y el usuario: \”R R A N\”, se mostrara: \”1 0\”, el 1 por la A que coincide, y el 0 por la N que esta presente en la combinacion de la maquina.\n\n\nOtro ejemplo:\nLa maquina elige \”R R N V\”:\n\nUsuario: Resultado: Significado:\nV N A R 0 0 0 Tres colores estan y uno no.\nR N A R 1 0 0 Uno coincide, dos estan y uno no.\nR A N N 1 1 Dos coinciden, dos no estan.\nR V N R 1 1 0 0 Dos coinciden, dos estan.\nR R N V 1 1 1 1 Los cuatro colores coinciden.\n"); } //Comienza un do while que no parara hasta que el usuario acierte la combinacio de colores de la maquina do { //Ahora pedimos al usuario que elija sus cuatro colores y que se guarden en una variable for (var i=0;i<4;i++){ do { ColUsu=prompt("Elija la " + (i+1) + "º inicial de sus cuatro colores:\n\nR - Rojo\nV - Verde\nA - Azul\nN - Negro").toUpperCase(); } while (ColUsu!="R" && ColUsu!="V" && ColUsu!="A" && ColUsu!="N"); ColUsuario = ColUsuario + ColUsu; } //Ahora se hace la comparacion de colores entre la maquina y los que ha elegido el usuario: //Primera letra de la maquina con las letras del usuario: if (ColMaquina.charAt(0) == ColUsuario.charAt(0)){ uno = "1"; } else { if (ColMaquina.charAt(0) == ColUsuario.charAt(1)){ dos = "0"; } else { if (ColMaquina.charAt(0) == ColUsuario.charAt(2)){ tres = "0"; } else { if (ColMaquina.charAt(0) == ColUsuario.charAt(3)){ cuatro = "0"; } } } } //Segunda letra de la maquina con las letras del usuario: if (ColMaquina.charAt(1) == ColUsuario.charAt(1)){ dos = "1"; } else { if (ColMaquina.charAt(1) == ColUsuario.charAt(0)){ if (uno != "1"){ uno = "0"; } } else { if (ColMaquina.charAt(1) == ColUsuario.charAt(2)){ if (tres != "1"){ tres = "0"; } } else { if (ColMaquina.charAt(1) == ColUsuario.charAt(3)){ if (cuatro != "1"){ cuatro = "0"; } } } } } //Tercera letra de la maquina con las letras del usuario: if (ColMaquina.charAt(2) == ColUsuario.charAt(2)){ tres = "1"; } else { if (ColMaquina.charAt(2) == ColUsuario.charAt(0)){ if (uno != "1"){ uno = "0"; } } else { if (ColMaquina.charAt(2) == ColUsuario.charAt(1)){ if (dos != "1"){ dos = "0"; } } else { if (ColMaquina.charAt(2) == ColUsuario.charAt(3)){ if (cuatro != "1"){ cuatro = "0"; } } } } } //Cuarta letra de la maquina con las letras del usuario: if (ColMaquina.charAt(3) == ColUsuario.charAt(3)){ cuatro = "1"; } else{ if (ColMaquina.charAt(3) == ColUsuario.charAt(0)){ if (uno != "1"){ uno = "0"; } } else { if (ColMaquina.charAt(3) == ColUsuario.charAt(1)){ if (dos != "1"){ dos = "0"; } } else { if (ColMaquina.charAt(3) == ColUsuario.charAt(2)){ if (tres != "1"){ tres = "0"; } } } } } //Dentro de la variable resultado, se agrupan primero los 1s y luego los 0s. //Primero los unos if (uno == 1){ resultado = resultado + uno } if (dos == 1){ resultado = resultado + dos } if (tres == 1){ resultado = resultado + tres } if (cuatro == 1){ resultado = resultado + cuatro } //Ahora los ceros if (uno == 0){ resultado = resultado + uno } if (dos == 0){ resultado = resultado + dos } if (tres == 0){ resultado = resultado + tres } if (cuatro == 0){ resultado = resultado + cuatro } //Se cuentan los 1s y 0s para saber cuantos colores son exactos o cuantos estan presentes. for (var i=0;i<4;i++){ if (resultado.charAt(i) == "1"){ NumExactos++ } else if (resultado.charAt(i) == "0"){ NumPresentes++ } } //Se muestra el resultado de la comparacion if (ColMaquina == ColUsuario && intentos==0){ alert("Que potra tiene, ha acertado la combinacion a la primera, enhorabuena!!!"); } else if (ColMaquina == ColUsuario){ alert("Enhorabuena, ha ganado!!!\n\nLa maquina eligio: " + ColMaquina + "\nY usted: " + ColUsuario + "\n\nPara ganar necesito " + intentos + " intentos."); } else { alert("Pruebe de nuevo, su combinacion de colores no es exacta a la de la maquina:\n\nRecuerde, en esta ronda escribio la combinacion: \"" + ColUsuario + "\" con " + NumExactos + " colores que coinciden con los de la maquina y " + NumPresentes + " presentes."); } //alert(ColMaquina + "\n" + ColUsuario + "\n\n" + resultado); //Algunas variables se ponen a cero, otras como "intentos" aumentan su valor, o ColUsuario2 adopta el valor de ColUsuario para el while intentos++; ColUsuario2=ColUsuario; ColUsuario=""; resultado=""; uno=""; dos=""; tres=""; cuatro=""; NumExactos=0; NumPresentes=0; } while (ColMaquina != ColUsuario2) |
Chinchimoni en JavaScript
Los chinos o chinchimoni es un juego de azar que consiste en intentar adivinar el número total de monedas que varios jugadores (al menos 2) guardan en su mano cerrada. Se utilizan 3 monedas por jugador y se pueden sacar 0, 1, 2 ó 3 monedas. El juego se usa típicamente como fórmula de echar a suertes para decidir quién paga la consumición en un bar o cosas por el estilo.
Las reglas de salida y evolución de la partida se consensúan entre todos los jugadores, de modo que las partidas pueden ser ‘a la caída’ (el que gana se retira hasta que sólo queda un perdedor), pueden ser a un marcador de 3 (el que gana 3 se retira hasta que sólo queda un perdedor), etc.
En cada ronda cada jugador guarda a escondidas entre ninguna y 3 monedas en su mano, que a continuación muestra cerrada al resto de jugadores, con el brazo estirado delante de sí. Entonces cada jugador por turno dice una cifra, intentando adivinar cuantas monedas suman todas las manos. Normalmente no se puede repetir una cifra ya dicha por otro. A continuación se abren las manos y se determina quién ha acertado, y se pasa a la siguiente ronda.
Existen variantes en la forma de juego, pero lo habitual es rotar los turnos en sentido contrario a las agujas del reloj, en la primera ronda no se permiten ‘blancas’ (es decir ninguna moneda), no se puede mentir (p. ej sacar 3 monedas y decir ‘dos’), etc.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
//Hacer el juego de los chinos //http://es.wikipedia.org/wiki/Chinos //Iniciacion de la mayoria de las variables: var dado=Math.floor(Math.random()*2)+1; var MonOrdenador; var MonJugador; var TotOrdenador; var TotJugador; var PartSeg=3; if(confirm("Necesita ayuda para jugar?")){ alert("Los chinos o chinchimoni es un juego de azar que consiste en intentar adivinar el numero total de monedas que varios jugadores (al menos 2) guardan en su mano cerrada. Se utilizan 3 monedas por jugador y se pueden sacar 0, 1, 2 o 3 monedas.\n\nEn cada ronda cada jugador guarda a escondidas entre ninguna y 3 monedas en su mano, que a continuacion muestra cerrada al resto de jugadores, con el brazo estirado delante de si. Entonces cada jugador por turno dice una cifra, intentando adivinar cuantas monedas suman todas las manos. A continuacion se abren las manos y se determina quien ha acertado, y se pasa a la siguiente ronda.\n\nExisten variantes en la forma de juego, pero lo habitual es rotar los turnos en sentido contrario a las agujas del reloj, en la primera ronda no se permiten 'blancas' (es decir ninguna moneda), no se puede mentir (p. ej sacar 3 monedas y decir 'dos'), etc.\n\n"); } //DO WHILE: Ejecuta el codigo y al terminar pregunta si quieres jugar de nuevo: do { //Estas variables booleanas, se encargan de registrar el orden de las rondas: var EsRondaUno=true; var EsRondaOtra=false; //Estas variables cuentan las victorias de los jugadores: var VicOrdenador=0; var VicJugador=0; //FOR, da comienzo a una partida de tres rondas: for (var i=0;i<PartSeg;i++){ //Primero, cada jugador elige las monedas que va a ocultar en su mano, si es la primera ronda no se permite usar el 0, en el resto de rondas si: if (i==0){ MonOrdenador=Math.floor(Math.random()*2)+1; alert(MonOrdenador); do { MonJugador=parseInt(prompt("Cuantas monedas vas a sacar: 1, 2 o 3?\n\nRecuerde, en la primera ronda no puede usar 0.")); } while (MonJugador!=1 && MonJugador!=2 && MonJugador!=3); } else{ MonOrdenador=Math.floor(Math.random()*4); do { MonJugador=parseInt(prompt("Cuantas monedas vas a sacar: 0, 1, 2 o 3?")); } while (MonJugador!=0 && MonJugador!=1 && MonJugador!=2 && MonJugador!=3); } //Segundo: //En la primera ronda: de forme aleatoria, uno de los jugadores dice en voz alta, cual sera el total de monedas, sumando las propias y las que cree que sacara el rival: //En el resto de rondas: empezara el que no lo hizo en la ronda anterior. //Si es la primera ronda, el dado decide quien comienza: if (EsRondaUno==true){ if (dado==1){ alert("Comienza la maquina"); TotOrdenador=MonOrdenador+Math.floor(Math.random()*4); alert("La maquina cree que entre los dos habra " + TotOrdenador + " monedas."); do { TotJugador=parseInt(prompt("El rival dice que hay " + TotOrdenador + " monedas.\n\nCuantas monedas crees que habra contando las tuyas (" + MonJugador + ") y las del rival?")); } while (TotJugador<MonJugador || TotJugador>6 || TotJugador-MonJugador==5 || TotJugador-MonJugador==4); EsRondaOtra=true; } else if (dado==2){ alert("Comienzas tu!"); do { TotJugador=parseInt(prompt("Cuantas monedas crees tu que habra contando las tuyas (" + MonJugador + ") y las del rival?")); } while (TotJugador<MonJugador || TotJugador>6 || TotJugador-MonJugador==5 || TotJugador-MonJugador==4); if (TotJugador==0){ TotOrdenador=MonOrdenador+0; } else { TotOrdenador=MonOrdenador+Math.floor(Math.random()*3)+1; } alert("La maquina cree que entre los dos habra " + TotOrdenador + " monedas."); } EsRondaUno=false; } else { //Si la maquina jugo la anterior ronda, ahora le toca al jugador: if (EsRondaOtra==true){ alert("Comienzas tu!"); do { TotJugador=parseInt(prompt("Cuantas monedas crees tu que habra contando las tuyas (" + MonJugador + ") y las del rival?")); } while (TotJugador<MonJugador || TotJugador>6 || TotJugador-MonJugador==5 || TotJugador-MonJugador==4); if (TotJugador==0){ TotOrdenador=MonOrdenador+0; } else { TotOrdenador=MonOrdenador+Math.floor(Math.random()*3)+1; } alert("La maquina cree que entre los dos habra " + TotOrdenador + " monedas."); EsRondaOtra=false; } else { //Si el jugador jugo al anterior ronda, ahora le toca a la maquina: alert("Comienza la maquina"); TotOrdenador=MonOrdenador+Math.floor(Math.random()*4); alert("La maquina cree que entre los dos habra " + TotOrdenador + " monedas."); do { TotJugador=parseInt(prompt("El rival dice que hay " + TotOrdenador + " monedas.\n\nCuantas monedas crees que habra contando las tuyas (" + MonJugador + ") y las del rival?")); } while (TotJugador<MonJugador || TotJugador>6 || TotJugador-MonJugador==5 || TotJugador-MonJugador==4); EsRondaOtra=true; } } //Muestra quien ha ganado y añade la victoria al contador: if (MonOrdenador+MonJugador==TotOrdenador){ VicOrdenador++; alert("Perdiste..."); } else if (MonOrdenador+MonJugador==TotJugador){ VicJugador++; alert("Ganaste!"); } else { alert("No acerto ninguno"); } //Muestra un resumen de la ronda: alert("REPETICION DE LA JUGADA, ronda: " + (i+1) + "\n\nTu sacaste: " + MonJugador + "\nLa maquina saco: " + MonOrdenador + "\nTu dijiste que habia: " + TotJugador +"\nY la maquina dijo: " + TotOrdenador + "\n\nLas monedas totales fueron: " + (MonJugador+MonOrdenador) + "\n\n"); } //Muestra los contadores antes de terminar la partida: alert("Victorias de la maquina: " + VicOrdenador + "\nVictorias tuyas: " + VicJugador); } while (confirm("Otra partida?")); |
9) Un fabricante tiene dos máquinas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
/* 9) Un fabricante tiene dos máquinas, una Glyxer y una Ploofer, para producir pantallas de televisores en color. En un intento de maximizar su producción anual de pantallas dicho fabricante contrata los servicios de un experto en la materia, para determinar el número de días que cada una de las máquinas debe funcionar al año. En su informe, el experto indica que la producción anual será máxima cuando 279x + 440y = 169780 donde los valores enteros de x e y (de 1 a 365dias/año) representan el número de días, al año, que las máquinas Glyxer y Ploofer han de funcionar, respectivamente. ¿Cuántos días debe hacer funcionar nuestro fabricante a cada una de sus máquinas, con el fin de maximizar su producción? */ var glyxer=279; var ploofer=440; var tv=169780; var i; var j; var numero; for (i=0;i<=365;i++){ for (j=0;j<=365;j++){ numero=(glyxer*i) + (ploofer*j); if (numero==tv){ alert("Para conseguir la produccion adecuada se deberia de hacer funcionar las maquinas de la siguiente forma: \nGlyxer: " + i + " dias\nPloofer: " + j + " dias\n\nDe forma que entre las dos se consigan los " + numero + " televisores /año."); } } } |
8) Los cubos narcisistas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
/* 8) Los cubos narcisistas. Son cubos narcisistas aquellos números enteros positivos que son exactamente iguales a la suma de sus dígitos elevados al cubo. Es decir, 370 y 371 son ambos cubos narcisista, ya que 370 = 3^3 + 7^3 + 0^3, y 371 = 3^3 + 7^3 + 1^3. Sin embargo, 483 <> 4^3 + 8^3 +3^3. Solo existen otros tres cubos narcisistas menores de 999. ¿Cuáles son los cinco cubos narcisistas? */ //Metodo uno: var i; var j; var k; var i3; var j3; var k3; var numero; var narcisistas=[0,0,0,0,0,0] var ray=0; for (i=0;i<=9;i++){ i3 = i*i*i for (j=0;j<=9;j++){ j3 = j*j*j for (k=0;k<=9;k++){ k3 = k*k*k numero = (i*100) + (j*10) + k if (numero == i3 + j3 + k3){ narcisistas[ray]=numero ray++ } } } } alert("Los seis cubos narcisistas que hay hasta el numero 999 son: " + narcisistas[0] + ", " + narcisistas[1] + ", " + narcisistas[2] + ", " + narcisistas[3] + ", " + narcisistas[4] + ", " + narcisistas[5] + "."); |