Matemáticas puras, física, lógica (braingames.ru): juegos cerebrales no relacionados con el comercio - página 213

 

Un problema para los programadores (el peso del problema es 4):

Un megacerebro en un texto muy largo necesita sustituir todas las letras "A" por "B" y todas las letras "B" por "A". El editor de texto permite sustituir un conjunto arbitrario de caracteres por otro en todo el texto. Por ejemplo, la sustitución de "AA"->"BSAA" hará que la cadena "AAAAAL" se convierta en "BSAABSAAL". ¿Cómo completa la tarea?

Preguntas frecuentes (del sitio web):

Вы не знаете алфавита текстового редактора. Единственное, что вы знаете, это то, что он содержит символы "А" и "Б".

(Explicación de Mathemat: en el primer campo (QUÉ sustituir) y en el segundo (QUÉ reemplazar) sólo se pueden utilizar los caracteres A y B y nada más, ni siquiera los espacios: el alfabeto del texto y del editor de texto nos es desconocido. Todavía no tengo claro por qué esta aclaración clave no aparece en el texto del propio problema, pero por desgracia, así es).

La condición no lo dice explícitamente, pero entiendo que todos los demás caracteres, excepto A y B, deben permanecer inalterados. ¿Es esto correcto?

Sí.

¿Qué significa "texto muy largo"?

1. No puedes hacer todas las sustituciones manualmente.
2. Cualquier secuencia de caracteres puede aparecer en ella.
3. el megacerebro no puede utilizar secuencias con una longitud comparable a la del texto para la sustitución.

¿Falta algún carácter en el texto del "arsenal" del editor de texto?

No.

¿Es posible realizar múltiples cambios a lo largo del texto?

Sí.

¿Se pueden omitir algunas secuencias? Por ejemplo, la sustitución de "AA"->"BSAA" cambiará la cadena "AAAAAL" por "BSAAAL" (es decir, se ha saltado la segunda secuencia).

No.

¿Se pueden utilizar expresiones regulares (o sus equivalentes) al sustituir?

No.

La solución del problema me sorprendió por lo inesperado (aunque otras soluciones son muy posibles). Empecé a resolverlo hace un par de años, tras lo cual desaparecí de Mind Games durante un año y medio. Hace un par de días lo volví a mirar, y hace unas 24 horas envié la solución a un moderador. Todavía no he recibido respuesta, pero estoy 100% seguro de que es correcta. El algoritmo se ha probado en un conjunto de caracteres de prueba, sin encontrar errores.

Задачи, загадки, логические игры [Игры разума] икф
  • www.braingames.ru
Мегамозгу в очень длинном тексте требуется заменить все буквы «А» на буквы «Б», а все буквы «Б» - на буквы «А». Текстовый редактор позволяет заменить во всём тексте один произвольный набор символов на другой. Например, в результате замены «АА»->«БСАА» строка «АААААЛ» перейдёт в строку «БСААБСАААЛ». Как ему выполнить задачу?
 
Mathemat:

Un problema para los programadores (el peso del problema es 4):

Un megacerebro en un texto muy largo necesita sustituir todas las letras "A" por "B" y todas las letras "B" por "A". El editor de texto permite sustituir un conjunto arbitrario de caracteres por otro en todo el texto. Por ejemplo, la sustitución de "AA"->"BSAA" hará que la cadena "AAAAAL" se convierta en "BSAABSAAL". ¿Cómo puede realizar la tarea?

Preguntas frecuentes (del sitio web):

La solución al problema me sorprendió por lo inesperado (aunque estoy bastante abierto a otras soluciones). Empecé a resolverlo hace un par de años, tras lo cual desaparecí de los Juegos Mentales durante un año y medio. Hace un par de días lo volví a mirar, y hace unas 24 horas envié la solución a un moderador. Todavía no he recibido respuesta, pero estoy 100% seguro de que es correcta. El algoritmo se ha probado en un conjunto de caracteres de prueba, sin encontrar errores.

¿No puede A->A, B->B, AA->B, B->A?
 
Avals:
¿No puede A->A, B->B, AA->B, B->A?


Puedes, pero no puedes.

Por ejemplo, aquí está el texto "AAAAAAAAAAAABBBBBBB", que resulta: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

 
Mathemat:

Un problema para los programadores (el peso del problema es 4):

Un megacerebro en un texto muy largo necesita sustituir todas las letras "A" por "B" y todas las letras "B" por "A". El editor de texto permite sustituir un conjunto arbitrario de caracteres por otro en todo el texto. Por ejemplo, la sustitución de "AA"->"BSAA" hará que la cadena "AAAAAL" se convierta en "BSAABSAAL". ¿Cómo resuelve el problema?

Preguntas frecuentes (del sitio web):

La solución al problema me sorprendió por lo inesperado (aunque estoy bastante abierto a otras soluciones). Empecé a resolverlo hace un par de años, tras lo cual desaparecí de Mind Games durante un año y medio. Hace un par de días lo volví a mirar, y hace unas 24 horas envié la solución a un moderador. Todavía no he recibido respuesta, pero estoy 100% seguro de que es correcta. El algoritmo se ha probado en un conjunto de caracteres de prueba, sin encontrar errores.

Se resuelve en 4 sustituciones:

A -> AA

B -> BAB

AA -> B

BAB -> A

 
Contender:

Resuelto en 4 sustituciones:

A -> AA

B -> BAB

AA -> B

BAB -> A

No lo he comprobado, pero esta solución se da en los comentarios para los que lo han resuelto. Esta es mi solución:

A -> AB
B -> AB
AB -> B
AB -> A

Nota: las dos primeras sustituciones (más concretamente, sus partes derechas) son formalmente idénticas.

¿Puede alguien hacerlo en menos de 4 movimientos?

-----------------------------------------------------------------------------

Y por cierto, ¿qué pasa con este problema?

Задачи, загадки, логические игры [Игры разума] икф
  • www.braingames.ru
Перед вами на столе два тонкостенных непрозрачных сосуда кубической формы (без верхней грани) емкостью 4.096 и 8 литров. Как, имея неограниченный запас воды, быстро отмерить ровно 5 литров?
 
Mathemat:

Frente a ti, en la mesa, hay dos recipientes opacos de paredes finas (sin borde superior) con capacidades de 4,096 y 8 litros. Con un suministro ilimitado de agua, ¿cómo se pueden medir rápidamente 5 litros exactos?

La tarea está aquí. El peso del problema es 5.

PREGUNTAS Y RESPUESTAS:

- las paredes son muy delgadas, su volumen es insignificante.

- 4,096 son cuatro litros enteros y noventa y seis milésimas, exactamente. Exactamente 5 litros es exactamente 5, no, por ejemplo, 5,002 litros.

- La opacidad significa que no se puede, por ejemplo, meter un cubo más pequeño en uno más grande y verter agua en el más grande hasta los bordes del más pequeño. Debido a la opacidad, no se puede hacer con la suficiente precisión.

- rápido es realmente rápido, bastante rápido. No se tomará la decisión de diez pasos. Es demasiado largo.

Es complicado. Lo resolví en tres pasos.

1) Poner un cubo pequeño en un cubo grande, y llenar el cubo grande hasta los bordes. Ahora inclínalo para que la superficie del agua toque el borde del cubo pequeño. (si accidentalmente se ha derramado demasiada agua - dar un poco más, es mucho).


Ahora hemos vertido exactamente un litro de agua. (La longitud del segmento AB=5 cm, es fácil de calcular a partir del tamaño de los lados de los cubos (20cm y 16cm respectivamente).

Saque con cuidado el cubo pequeño, dejando toda el agua (7 litros) en el cubo grande.

Ahora inclina el cubo grande hasta que el agua toque el borde "diagonal" (opuesto al borde por el que se vierte el agua), y vierte el agua en el cubo pequeño.

El cubo grande tendrá exactamente la mitad de su volumen (4 litros); el pequeño tendrá 3 litros (= 7 litros - 4 litros).

Ahora llena el cubo grande hasta el borde o un poco menos. Coloca con cuidado el cubo pequeño con tres litros de agua. Su volumen es superior a los 3 litros, por lo que no se hundirá del todo, sino lo justo para desplazar los 3 litros de agua del cubo grande. Ahora saca el cubo pequeño. El cubo grande tiene exactamente cinco litros (8L - 3L), lo que se necesitaba.

 
Mathemat:

No lo he comprobado, pero esa solución se da en los comentarios para los que se han decidido. Esta es mi solución:

Nota: Las dos primeras sustituciones son formalmente idénticas.

¿Puede alguien hacerlo en menos de 4 movimientos?

En tres sustituciones globales la solución es posible sólo si hay un carácter adicional presente en el alfabeto permisible, pero garantizado ausente en el texto, que por la condición del problema no lo es.

En las condiciones dadas cuatro movimientos son mínimos. Se puede demostrar (pero tediosa y verbosamente). :)

 
MetaDriver:

Es complicado, lo hice en tres pasos.

1) Coloque el cubo pequeño en el cubo grande y llene el cubo grande hasta el borde. Ahora inclínalo para que la superficie del agua toque el borde del cubo pequeño. (si accidentalmente se ha derramado demasiada agua - dar un poco más, es mucho).


Ahora hemos vertido exactamente un litro de agua. (La longitud del segmento AB=5 cm, es fácil de calcular a partir del tamaño de los lados de los cubos (20cm y 16cm respectivamente).

Saque con cuidado el cubo pequeño, dejando toda el agua (7 litros) en el cubo grande.

Ahora inclina el cubo grande hasta que el agua toque el borde "diagonal" (opuesto al borde por el que se vierte el agua), y vierte el agua en el cubo pequeño.

El cubo grande tendrá exactamente la mitad de su volumen (4 litros); el pequeño tendrá 3 litros (= 7L-4L).

Ahora vierte el cubo grande hasta el borde o un poco menos. Introduce con cuidado el cubo pequeño con tres litros de agua. Su volumen es mayor que el de los 3 litros, por lo que no se hundirá del todo, sino lo justo para desplazar los 3 litros de agua del cubo grande. Ahora saca el cubo pequeño. El cubo grande tiene exactamente cinco litros (8L - 3L), lo que se necesitaba.

por lo que en el primer paso se vierten 2 litros )

0.05*0.2*0.2=0.002 м3

 
sanyooooook:

por lo que en el primer paso se vierten 2 litros)

0.05*0.2*0.2=0.002 м3

estás mintiendo de nuevo ;)

el área del triángulo ABC = (0,05*0,2) / 2

total: ((0,05*0,2) / 2) * 0,2 = 0,001 m^3

 
MetaDriver:

Un problema complicado, lo resolví en tres pasos.

1) Poner un cubo pequeño en uno grande, y llenar el cubo grande hasta los bordes. Ahora inclínalo para que la superficie del agua toque el borde del cubo pequeño. (si accidentalmente has derramado demasiada agua, rellénala, es mucha).

Original, pero parece que hay una contradicción en la opacidad. Y sostener el gran cubo inclinado sin ningún apoyo no es tan fácil, se necesitan dos personas.

Ahora, inclinamos el cubo grande hasta que el borde del agua toque el borde "diagonal" (opuesto al borde por el que sale el agua), y vertemos el agua en el cubo pequeño.

Y aquí hay una chorrada similar, sobre todo al echar agua al pequeño. Verter agua del grande al pequeño a través del borde del grande es difícil sin dispositivos especiales.

En definitiva, hay una solución más corta y sencilla :)

MD: Para tres sustituciones globales la solución es posible sólo si hay un carácter adicional que está presente en el alfabeto válido, pero garantizado ausente en el texto, lo que por los términos del problema no es el caso.

En estas condiciones cuatro golpes son mínimos. Se puede demostrar (pero de forma tediosa y vertiginosa). :)

Los moderadores afirman que nadie en los Juegos Mentales ha proporcionado aún una solución de menos de 4 movimientos. (No he propuesto el problema a continuación, es sólo una automatización de nuestro motor de sitio).

Задачи, загадки, логические игры [Игры разума] икф
  • www.braingames.ru
У Мегамозга нашли страшную болезнь. Доктор выписал ему всего 4 таблетки двух видов (по две каждого вида), совершенно не отличимых друг от друга, и предупредил, что, если выпить более одной таблетки одного вида — смерть, не выпить таблеток — смерть, выпить за раз меньше нормы — смерть. Таблетки надо принять за два приема: утром — 2 таблетки (по...