Comunidad de diseño web y desarrollo en internet online

calcular numero entre un rango definido

Citar            
MensajeEscrito el 21 Feb 2007 10:38 pm
Hola, necesito sacar un número entre un rango definido, entre 1 y 24, de tal manera que reste o sume, siempre me salga un número entre 1 y 24.
Por ejemplo, si tengo el numero 5 y le sumo 6 , me tiene que dar 11, pero si le resto 6, me tiene que dar 23.

estoy probando miles de formulas, y no me sale.

:crap:

gracias!!

Por outsider

74 de clabLevel



 

Madrid

firefox
Citar            
MensajeEscrito el 22 Feb 2007 12:52 am
como pretendes q 11 - 6 de como resultado 23, es matematicamente imposible

Por nahaliel

69 de clabLevel



Genero:Masculino  

in the middle of nowhere

msie
Citar            
MensajeEscrito el 22 Feb 2007 01:29 am
Tu lo que quieres hacer es trbajar en base 24. U_U

Esto te será útil. U_U

SuerT

Por Bleend

Claber

3385 de clabLevel

10 tutoriales
4 articulos

Genero:Masculino   Héroes

Barcelona

msie7
Citar            
MensajeEscrito el 22 Feb 2007 04:17 am

Código :

function alwaysIn24(Value:Number):Number
{
  while( Value<0 )
  {
     Value = 24 - Value;
  }
  while( Value>24 )
  {
     Value = Value-24;
  }
  return Value;
}

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

clabbrowser
Citar            
MensajeEscrito el 22 Feb 2007 09:14 am
uff lo de la base 24 me queda grande...no se ni por donde cogerlo. Si ya se que matemáticamente es imposible que al restar 5 a 6 de 24. Pero es que tengo 24 casillas y quiero sacar la posición de la ficha al restar o sumar el dado (porque puedes ir en una dirección o en otra en las casillas), he probado la función de Dano, pero no consigo que funcione.
Me tocará calcularlo a mano:

Código :

 if (posicion ficha = 1){
 switch (sacardado){
 case 1: posicion ficha 2 o 24
 case 2: posicion ficha 3 o 23
....
 case 6: posicion ficha 7 o 19
}
}
if (posicion ficha =2)
...

Por outsider

74 de clabLevel



 

Madrid

firefox
Citar            
MensajeEscrito el 22 Feb 2007 09:18 am
Para 2 numeros cualesquiera positivos y negativos en rango de 24 y congruentes en 24:

Código :

salida = ((a + b) + 24) % 24;


trace( (5-6)+24)%24 ); // 23
trace( (5+6)+24)%24 ); // 11
trace( (-5-6)+24)%24 ); // 13 evidentemente
trace( (21+6)+24)%24 ); //3 pues claro, es cíclico!!

Nahaliel: ...............no es matematicamente imposible, porque es logicamente posible. :wink:

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 22 Feb 2007 09:37 am
si, funciona!!!, pero cómo excluyo el "0", porque cuando sale 1 en el dado, me calcula 2 y 0.

gracias!!

Por outsider

74 de clabLevel



 

Madrid

firefox
Citar            
MensajeEscrito el 22 Feb 2007 09:42 am
por cierto dano, tu código tb me funciona, antes lo hice mal.....gracias a todos!!!!!

ya tengo dos maneras de hacer lo que buscaba!!!

;)
;)

Por outsider

74 de clabLevel



 

Madrid

firefox
Citar            
MensajeEscrito el 22 Feb 2007 09:57 am
El 24 no saldra nunca, el ciclo es de 0 a 23 . El 0 es el 24.
Si numeras la casillas de 0 a 23 estaría correcto,
No obtante si quiere que salgan de 1 a 24 repite modulo a n+1:

Código :

salida = (((a + b) + 24) % 24 +24) % 25;


trace( (((1 -1 ) + 24) % 24 +24) % 25 ) // 24
trace( (((21 +3 ) + 24) % 24 +24) % 25 ) // 24

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 22 Feb 2007 10:12 am
dios mio, eres genial!!!!

;)

Por outsider

74 de clabLevel



 

Madrid

firefox
Citar            
MensajeEscrito el 22 Feb 2007 12:00 pm
De todos modos el código anterior produce desplazadas, (digamos que es para ruletas girando y no para casillas numeradas fijas). No había entendido el problema completamente :oops:

Este es el correcto para casillas numeradas fijas de 1 a 24:

Código :

sal =  ((a + b) + 24) % 24;
sal = (sal == 0) ? 24 : sal;

Simplemente añadimos el condicional de: si es 0 entonces que sea 24

En tu caso como a es precisamente la casilla podremos también ponerlo en una sola linea así:

Código :

casilla = (((casilla+dado)+24) % 24) + 24 * ((casilla+dado)%24 == 0);

o así:

Código :

casilla = ((casilla+dado)%24 == 0) ? 24 :((casilla+dado) + 24) % 24;

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 22 Feb 2007 03:22 pm
Pueden leer aquí, para más información:
http://www.cristalab.com/tips/30975/usar-el-operador-modulo---para-acortar-codigo

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 23 Feb 2007 01:51 am
Teseo: cada vez q leo algun post tuyo tengo problemas en mi mandibula ya q mi boca queda abierta por horas.

*nahaliel intenta hacerse un harakiri con el mouse

Por nahaliel

69 de clabLevel



Genero:Masculino  

in the middle of nowhere

msie
Citar            
MensajeEscrito el 23 Feb 2007 12:47 pm
yo ya me he quedado con la mandibula caida para siempre.....;)

Por outsider

74 de clabLevel



 

Madrid

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.