纯粹的数学、物理、逻辑(braingames.ru):与贸易无关的大脑游戏 - 页 213

 

一个给程序员的问题(问题的重量是4)。

在一个很长的文本中,一个巨脑需要把所有的字母 "A "替换成 "B",所有的字母 "B "替换成 "A"。文本编辑器允许在整个文本中用一组任意的字符来替换另一组字符。 例如,替换 "AA"->"BSAA "将导致字符串 "AAAAAL "变成 "BSAABSAAL"。他是如何完成这个任务的?

常见问题(来自网站)。

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

(Mathemat的解释:在第一个字段(要替换的内容)和第二个字段(要替换的内容)中,你只能使用字符A和B,其他的都不行,甚至空格也不行:文本和文本编辑器的字母表我们不知道。我仍然不清楚为什么在问题本身的文本中缺少这一关键的澄清,但可惜的是,它确实如此)。

该条件没有明确说明这一点,但我认为除了A和B之外,其他所有的角色都必须保持不变。这是否正确?

是的。

"很长的文本 "是什么意思?

1.你不可能手动进行所有的替换。
2.任何给定的字符序列都可以在其中出现。
3.巨脑不能使用长度与文本长度相当的序列进行替换。

在文本编辑器的 "武器库 "中,是否缺少一个字符?

没有。

是否可以在整个文本中进行多次修改?

是的。

有些序列可以跳过吗?例如,替换 "AA"->"BSAA "将使字符串 "AAAAAL "变为 "BSAAAL"(即第二序列被跳过)。

没有。

替换时能否使用正则表达式(或其对应物)?

没有。

该问题的解决方案因其出乎意料而令我震惊(尽管其他解决方案也很有可能)。几年前我开始解决这个问题,之后我从智力游戏中消失了一年半。几天前我又看了看,大约24小时前把解决方案发给了版主。我还没有收到答复,但我百分之百确定它是正确的。该算法在一个测试字符集上进行了测试,没有发现错误。

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

一个给程序员的问题(问题的重量是4)。

在一个很长的文本中,一个巨脑需要将所有的字母 "A "替换成 "B",所有的字母 "B "替换成 "A"。文本编辑器允许在整个文本中用一组任意的字符来替换另一组字符。 例如,替换 "AA"->"BSAA "将导致字符串 "AAAAAL "变成 "BSAABSAAL"。他怎么能完成这个任务呢?

常见问题(来自网站)。

这个问题的解决方案只是以其出乎意料的方式震惊了我(尽管我对其他解决方案相当开放)。几年前我开始解决这个问题,之后我从智力游戏中消失了一年半的时间。几天前我又看了看,大约24小时前把解决方案发给了版主。我还没有收到答复,但我百分之百确定它是正确的。该算法在一个测试字符集上进行了测试,没有发现错误。

不能A->A,B->B,AA->B,B->A?
 
Avals:
不能A->A,B->B,AA->B,B->A?


你可以,但你不可以。

例如,这里的文字 "AAAAAAAAAAABBBBBBB",结果是。"Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

 
Mathemat:

一个给程序员的问题(问题的重量是4)。

在一个很长的文本中,一个巨脑需要将所有的字母 "A "替换成 "B",所有的字母 "B "替换成 "A"。文本编辑器允许在整个文本中用一组任意的字符来替换另一组字符。 例如,替换 "AA"->"BSAA "将导致字符串 "AAAAAL "变成 "BSAABSAAL"。它是如何解决问题的?

常见问题(来自网站)。

这个问题的解决方案只是以其出乎意料的方式震惊了我(尽管我对其他解决方案相当开放)。几年前我开始解决这个问题,之后我从智力游戏中消失了一年半。几天前我又看了看,大约24小时前把解决方案发给了版主。我还没有收到答复,但我百分之百确定它是正确的。该算法在一个测试字符集上进行了测试,没有发现错误。

它在4次替换中得到解决。

A -> AA

B -> BAB

AA -> B

BAB -> A

 
Contender:

用4个替换法解决了问题。

A -> AA

B -> BAB

AA -> B

BAB -> A

没有检查,但这个解决方案在评论中给了那些已经解决的人。以下是我的解决方案。

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

注意:前两个替换(更确切地说,它们的右手部分)在形式上是相同的。

有谁能在4步以内完成?

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

顺便说一下,这个 问题怎么办?

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

在你面前的桌子上有两个薄壁不透明的立方体容器(没有顶边),容量分别为4.096和8升。有了无限量的水,你怎么能迅速测量出正好5升的水?

任务就在这里。该问题的权重为5。

常见问题。

- 墙壁非常薄,其体积可以忽略不计。

- 4.096是整整九万六千分之一升,准确地说。5升正好是5,而不是说5.002升。

- 不透明意味着你不能,例如,将一个较小的立方体放入一个较大的立方体中,并将水倒入较大的立方体中,直至小立方体的边缘。因为不透明,所以无法做到足够准确。

- 快是真的快,相当快。将不采取十步决定。它太长了。

这是个棘手的问题,我分三步解决了。

1) 将小方块放在大方块中,并将大方块填到边缘。现在将其倾斜,使水面接触到小立方体的边缘。(如果你不小心洒了太多的水--多给一些,这是很重要的)。


现在我们正好倒出了一升水。(线段AB的长度=5厘米,从长方体的边长(分别为20厘米和16厘米)很容易计算出来)。

小心地取出小方块,将所有的水(7升)留在大方块中。

现在将大立方体倾斜,直到水接触到 "对角线 "边缘(与倒出水的边缘相反),然后将水倒入小立方体。

大的立方体正好可以容纳其一半的体积(4升);小的立方体可以容纳3升(=7升-4升)。

现在把大立方体装满,或者稍微少一点。 小心地把装有3升水的小立方体放进去。 它的体积超过3升,所以它不会完全沉下去,而只是刚好把大立方体的3升水换掉。 现在取出小立方体,大立方体正好有5升(8升-3升),这是需要的。

 
Mathemat:

没有检查,但在评论中给出了这样的解决方案,供那些已经决定的人参考。以下是我的解决方案。

注意:前两个替换在形式上是相同的。

有谁能在4步以内完成?

在三个全局替换中,只有在允许的字母表中存在一个额外的字符,但保证在文本中不存在,而根据问题的条件,这是不可能的。

在给定的条件下,四步棋是最小的。 它可以被证明(但很繁琐和冗长)。:)

 
MetaDriver:

这是一个棘手的问题,我分三步完成。

1) 将小方块放在大方块中,并将大方块填到边缘。现在将其倾斜,使水面接触到小立方体的边缘。(如果你不小心洒了太多的水--多给一些,这是很重要的)。


现在我们正好倒出了一升水。(线段AB的长度=5厘米,从长方体的边长(分别为20厘米和16厘米)很容易计算出来)。

小心地取出小方块,将所有的水(7升)留在大方块中。

现在将大立方体倾斜,直到水接触到 "对角线 "边缘(与倒出水的边缘相反),然后将水倒入小立方体。

大的立方体正好可以容纳其一半的体积(4升);小的立方体可以容纳3升(=7升-4升)。

现在把大立方体倒满或少倒一点。 小心地把装有3升水的小立方体放进去。 它的体积大于3升,所以它不会完全沉下去,而只是刚好把大立方体的3升水排掉。 现在取出小立方体,大立方体正好有5升(8升-3升),这是需要的。

因此,在第一步中,要倒入2升的水 )

0.05*0.2*0.2=0.002 м3

 
sanyooooook:

所以在第一步中,要倒出2升)

0.05*0.2*0.2=0.002 м3

你又在撒谎;)

三角形ABC的面积=(0.05*0.2) /2

总计:((0.05*0.2)/2)*0.2 = 0.001 m^3

 
MetaDriver:

一个棘手的问题,我分三步解决了它。

1) 在一个大的立方体中放入一个小的立方体,并将大的立方体填到边缘。现在将其倾斜,使水面接触到小立方体的边缘。(如果你不小心打翻了太多的水,请给它补水,这是很重要的)。

原创,但在不透明度方面似乎有矛盾。而在没有任何支撑的情况下,拿着大立方体倾斜并不那么容易,你需要两个人。

现在,我们将大立方体倾斜,直到水的边缘接触到 "对角线 "边缘(与水倒出的边缘相反),然后将水倒入小立方体。

而这里也有类似的废话,特别是把水倒进小的那只。如果没有特殊的设备,将水从大的倒入小的边缘是很困难的。

总之,有一个更短、更简单的解决方案 :)

医学博士: 对于三个全局替换,只有当有一个额外的字符存在于有效的字母表中,但保证在文本中不存在时,解决方案才是可能的,而根据问题的条款,情况并非如此。

在这些条件下,四个笔画是最小的。 它可以被证明(但很繁琐,很啰嗦)。:)

主持人称,在智力竞赛 中,还没有人提供一个短于4步的解决方案。(下面的问题不是我提出的,它只是我们网站引擎的一个自动化)。

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