#209 el doctor al decir que al menos uno tiene cáncer está provocando una reacción en cadena de conocimiento común. Básicamente permite hacer el razonamiento de "si lo dijo ayer y hoy no se ha suicidado nadie, sabiendo todos que hay alguien con cáncer, es que hay más de uno con cáncer" y seguir con la inducción.
#1 Estaría bien que pusieras las soluciones de cada acertijo que planteas, pues esto es un caos de respuestas.
Respuesta a #146.
Problema 6: uno para todos, y todos para uno.
Dificultad: es jodido, pero depende de las herramientas que uses.
Busque el menor número que cumpla las siguientes condiciones:
- Divisible por: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12.
- Contiene todas las cifras: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Desde luego debe acabar en numero par (6 o 4) y 0. para ser divisible por 12.
Para ser divisible por 5, 8 y 10 debe acabar en numero impar, seguido de 60, o número par seguido de 80 o 40.
el numero 1234578960, es divisible por 12 y por 8 (y por tanto, por 2, por 3, por 4 por 6) además de por 5 y por 10. Faltan el 7 y el 11.
Haría falta ir reordenando los números hasta dar con el correcto.
#218 tiene que ser algo tipo 3960*i con i > 258448 a no ser que cuenten numeros como 0123456789 .
#224 Eres bueno. ¿Cómo lo has sacado? xD
Yo me he tenido que picar un python para hacer mis pruebas xD
#222 Yo hice aproximaciones sucesivas con múltiplos más gordos, para hacer menos iteraciones. Luego fuí afinando hasta el 2310 como paso i, cuando sabía dónde buscar.
Es un brindis al sol porque no contemplas algunos múltiplos, pero luego con lo que saques puedes ir haciendo pruebas y ver si te cuadra con todos.
#146 me parece que está mal anunciado según la solución, ¿el médico avisa cada día de que hay un enfermo?
#219 Al final me he hecho una tabla para demostrar que no tenías razón. Mírala hasta el final
#228 no, el primer día avisa: uno de vosotros tiene cáncer. Después el médico huye a las islas caiman ante las posibles represalias
Si hay 2 pacientes con cáncer y cualquiera de ellos eres tú.
Ves a otro con cáncer, el día 1 se suicida porque es el único. No se suicida, eres tú el que falta. Mal día.
Si hay 3 pacientes con cáncer y cualquiera de ellos eres tú.
Ves que hay dos con cáncer. Si no tuvieras cáncer, se daría la situación anterior y al 2º día se suicidarían. Como no, al 3 día te enteras de que tienes cáncer. Mal día.
Si hay 4 pacientes con cáncer y cualquiera de ellos eres tú.
Sabes que otros 3 pacientes tienen cáncer. Sabes que si son los únicos (es decir que tú no tienes) se suicidarán el día 3 (por el punto anterior). El día 4 siguen allí. Deduces que tienes cáncer. Mal día.
Si hay n pacientes con cáncer y cualquiera de ellos eres tú.
el día n se suicidarán.
Ahora sí
number=1234567890
while 1:
if number%12==number%11==number%10==number%9==number%8==number%7==0 and set(list(str(number)))==set([str(a) for a in range(10)]): break
else: number+=10
print number
#229 Sigue un par de días más con el ejemplo de 4, verás como al final se dan cuenta a un incremento de día por persona.
#230 y #233 Coño, si he puesto en negrita que tienes razón. Que la situación si avanza porque no había tenido lo que A pensaba que B pensaba acerca de C y D. Al primer día A pensaría que B pensaría que C piensa que D y D que C. Al segundo día A pensaría que B pensaría que C piensa que él mismo tiene cancer, y D también. Al tercer día A pensaría que B pensaría que el tiene cáncer. Al cuarto día A pensaría que el mismo tiene cáncer
A mí también me dio
, pero vaya si me ha llevado más líneas de código xD. Esto me pasa por no manejar casi de matemáticas y hacerlo todo a pelo.
Muy interesantes estos problemas Hipnos, me apuntaré a alguno que otro más.
#235 Siempre se puede optimizar pero para el medio segundo que tarda en encontrar el número no merece la pena.