No estoy seguro, si no he cometido alguna falacia aquí, pero si alguien ve una, entonces siéntase libre de señalarla y trataré de arreglarla.
Digamos que estoy pensando en un número entre 1 y 100. Puedes hacerme 10 preguntas distintas de sí/no para adivinar el número, pero exactamente una de mis respuestas será una mentira y no te diré cuál.
La respuesta a este acertijo parece ser muy sencilla: está obligado a mentir en la primera pregunta.
¿Por qué? Porque, para adivinar el número, podemos hacer 10 preguntas.
No tenemos que hacerlo. Podemos hacerlo. Así, no tenemos que hacerlo.
Por eso podemos hacer menos preguntas y la persona que responde no sabe cuántas preguntas vamos a hacer en realidad, así que como la persona que responde nos asegura que exactamente una de las respuestas será mentira, y somos libres de hacer exactamente una pregunta, tiene que ser la primera. De lo contrario, sus palabras no se sostendrían y podría acabar incumpliendo lo que ha dicho:
exactamente una de mis respuestas será una mentira
Además, hay que tener en cuenta que no estamos haciendo preguntas para determinar el número, sino para adivinar un número, por lo que no necesitamos al menos siete preguntas que se requieren para determinar siempre uno de $N$ números, donde $2^7 \ge N \ge 2^6+1$ (podemos escribir el número en sistema binario, es decir, utilizando 7 bits, siendo cada uno de ellos o bien 0 o bien 1, podemos escribir todos los enteros del 0 al 127; así, si el contestador dijera siempre la verdad, podríamos hacer una pregunta por bit y conocer la respuesta en 7 preguntas).
Bueno, parece demasiado fácil así, así que vamos a profundizar en el problema, con el supuesto adicional de que en realidad estamos obligados a hacer 10 preguntas.
Tenemos que hacer 10 preguntas, para adivinar el número, pero no hay nada que nos restrinja de qué tratan las preguntas, aparte de que sean preguntas de Sí/No.
Así, no tenemos que preguntar sobre los números que estamos tratando de adivinar. Podemos ignorarlo completamente y la persona que responda a nuestras preguntas tiene que estar preparada para ello. Por ejemplo, podemos preguntar, si esa persona es mayor que nosotros, si le gustan las rosas (a menos que no sea una pregunta de sí/no para esa persona) o cualquier otra cosa que queramos, incluyendo preguntas sobre las preguntas anteriores y si las respuestas en ellas eran verdad o mentira.
Así pues, supongamos que hacemos 7 preguntas para determinar la forma binaria del número que adivinamos, y que el contestador mintió al responder a una de estas preguntas, por ejemplo la número 3. Ahora, supongamos que le preguntamos, si mintió en una de estas preguntas y coincide con la pregunta, mientras que answerinag en la que realmente mintió:
"¿Mentiste al responder a la tercera pregunta?"
Como afirmó que "exactamente una de mis respuestas será una mentira y no le diré cuál", no puede responder a esta pregunta. Ya ha mentido y no puede responder "sí", por lo que se ve obligado a no responder a esta pregunta... que está bien.
No pasa nada, porque en el acertijo se dice que mentirá, al contestar una de ellas, es decir: no pasa nada por no contestar una pregunta o decir la verdad, siempre y cuando haya exactamente una pregunta en la que haya mentido al contestar.
Sin embargo, si el acertijo estuviera redactado de forma que respondiera a 9 preguntas con la verdad y mintiera exactamente en una, entonces tendríamos un gran problema:
¿Qué pasaría si le hacemos una primera pregunta, a la que responde con la verdad, pero luego seguimos preguntando en $N$ -a la pregunta de si su respuesta sobre $(N-1)$ -¿La pregunta era una mentira? En algún momento, tendría que mentir y no puede mentir en absoluto en la segunda, tercera, ..., novena pregunta, porque podríamos preguntarle en la siguiente pregunta si mintió en la anterior, lo que le impediría responder en esta pregunta.
Por lo tanto, tiene que mentir en la primera o en la última pregunta, pero no puede mentir en la primera, ¿qué pasa si le preguntamos sobre la mentira en la primera pregunta en una de las últimas preguntas? Entonces, está obligado a mentir en la última pregunta, pero entonces se determina que va a mentir ahora, lo que podemos incluir en nuestra pregunta y aunque no haya mentido todavía, podemos provocar una contradicción (paradoja del mentiroso) o hacer que una respuesta confirme que está mintiendo en la última pregunta, lo que va en contra de lo que dijo al principio, por lo que o bien no puede mentir o bien no puede responder a la pregunta, por lo que no ha mentido en ninguna de las preguntas.
Así que, en esta forma, el acertijo se contradiría a sí mismo y no tendría solución.
Pero, volvamos a la versión del acertijo que estamos analizando y sobre la que intentamos responder.
Las preguntas tienen que ser distintas, pero esto se puede conseguir mediante la conjunción lógica de alguna tautología (como "2>1" o así) con una pregunta sobre una de las respuestas anteriores, donde siempre preguntamos sobre la misma pregunta principal, mientras que la distinción está garantizada gracias a que usamos una tautología diferente cada vez que preguntamos.
Por lo tanto, si dijera la verdad en las primeras preguntas, existe la posibilidad de que no pueda responder al resto de las preguntas, ya que, como se indica en el acertijo, no puede decirnos que ha mentido en una pregunta determinada y nosotros podemos, aunque sea por casualidad, seguir preguntándole sobre la mentira en la misma pregunta en la que mentiría, al tiempo que preservamos que las preguntas sean distintas al conjuntar nuestra pregunta principal con tautologías únicas cada vez.
Por ejemplo, si respondió con la verdad a las primeras 5 preguntas, entonces (casualmente) preguntamos "¿Es su respuesta en la sexta pregunta una mentira?", que es una pregunta de sí/no, ya que su respuesta es una mentira o no es una mentira, pero por lo que hacemos aquí, no puede mentir. Él puede responder "no", lo que será cierto, también puede no responder, pero si él fuera a responder "sí", si no sería una mentira: https://en.wikipedia.org/wiki/Liar_paradox
Así que, él si se ve obligado a evitar que algo así pueda suceder (¡exactamente una respuesta tiene que ser una mentira!), por lo que mentirá antes.
Por eso tiene que mentir en la primera pregunta, porque si no miente entonces, podemos evitar que mienta.
Pero... ¿y si hacemos lo mismo con la primera pregunta y le impedimos mentir también ahí? ¡Entonces no puede mentir en absoluto!
Contradicción. El enigma no se puede resolver.
Eventualmente, podemos hacer una suposición extra, no estoy seguro de cómo formularla, pero lo que quiero decir es: prohibimos preguntar, si la respuesta para una pregunta actual es una mentira o no. Entonces, a menos que me haya perdido algo, lo más probable es que pueda mentir siempre que quiera, lo cual es problemático y probablemente requeriría que encontráramos alguna forma inventiva de hacer preguntas, para poder determinar realmente el número, pero no estoy seguro de cómo proceder con esto ahora. Voy a tratar de encontrar alguna manera fácil y editar la respuesta más tarde, pero demasiado cansado para hacer esto ahora.
No sé, si el hecho de contradecir el acertijo anterior, si lo hice correctamente, te servirá de algo, pero espero que sea la respuesta correcta para esta pregunta, es decir: es un acertijo irresoluble.
0 votos
¿Es necesario que estas preguntas sean de tipo sí/no?
0 votos
@SamCoutteau No
1 votos
Si las preguntas no tienen que ser sí/no, basta con preguntar "cuál es el número + n" 10 veces. La pregunta sólo es interesante si la restringes a sí/no.
0 votos
@DanielV ¿Qué es n? Oh te refieres a 1) "¿Qué es el número + 1?" 2 ) "¿Qué es el número +2?" etc. Tienes razón
0 votos
@DanielV Sin embargo, son esencialmente la misma pregunta, ¿no? Uno sigue usando la ley del medio excluido, ¿y si está prohibido usarla?
1 votos
Voy a suponer que estás interpretando mal la pregunta que te han hecho. Lo de "no puedes usar LEM" probablemente quiere decir: "¿Es el número mayor que 50?" "No" Entonces no puedes deducir que es menor que 50 (LEM) porque no sabes si esa respuesta era mentira. Probablemente no significa que no puedas usar LEM en general (qué cosa más absurda), sólo que no puedes asumir un sí/no binario porque esa podría haber sido la pregunta que era la mentira.
4 votos
Esto va a necesitar una codificación inusualmente eficiente. Una vez fijada la estrategia del preguntador (es decir, la regla para saber qué pregunta hacer en cada momento, dadas las respuestas anteriores), hay 10 patrones diferentes de respuestas que podemos obtener para cada uno de los 100 números, lo que significa que tenemos que reconocer 1000 patrones de respuesta en total. Esto se aproxima mucho a la $2^{10}=1024$ diferentes patrones de respuesta que es posible dar. Así, por ejemplo, la estrategia debe ser tal que en la mayoría de los casos adivinar mal si resulta que las diez respuestas eran honestas.
0 votos
Aquí hay un simulador: repl.it/repls/ProperDraftyQuoll
1 votos
Además, soy capaz de llegar hasta 64 sin una función hash.
0 votos
Sí. Un código Hamming acortado da fácilmente una solución para el rango $[1,64]$ . El comentario de @Henning lo hace interesante.
1 votos
He aquí una estrategia no adaptativa para el 72 (encontrada mediante búsqueda codiciosa) pastebin.com/kebm2CPp
0 votos
Para el caso estático/no adaptativo, la única restricción es que no hay dos palabras de código que tengan una distancia exacta $2$ . De forma equivalente, las palabras clave pares forman un código con una distancia mínima $4$ y también las palabras clave de impar. Por lo tanto, el número máximo de palabras de código es $2A(9,3)=80$ .