Ada编程中的单词的字谜

时间:2015-06-28 14:07:50

标签: ada

如何在ada编程中获得单词的字谜。例如:

我有一个字符串' one'。怎么会混淆成新的' neo'或者' eon'等?

示例代码:

with Ada.Text_IO; use Ada.Text_IO;

procedure Main is
   WordText  : String (1 .. 80);
   Last : Natural;

begin
   Put_Line("Enter Text: ");
   Get_Line (WordText, Last);

   -- example: I entered 'one' 
   -- it must be shuffle text per character   
   -- then it will print shuffled text: 'neo' or 'eno' or 'oen' etc.
   Put_Line ("Text Shuffle: " &WordText (1 .. Last));

end Main;

1 个答案:

答案 0 :(得分:2)

实施一个描述为herehere的混乱算法。例如,

  1. 对于字典中的每个单词,对其连续字母进行排序,保留重复字符。使用Ada.Containers.Generic_Array_Sort的实例对字母进行排序。

  2. 创建哈希映射;输入已排序的字符串作为地图的键;将原始单词添加到交替等效的单词集合中,并将该集合用作地图的值。使用Ada.Containers.Ordered_Sets的实例来保存单词集。使用Ada.Containers.Hashed_Maps的实例作为地图。

  3. 对于给定的字符串,对其字母进行排序,查找映射集并打印其中包含的单词。

  4. 看到一个完整的例子here