如何在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;
答案 0 :(得分:2)
对于字典中的每个单词,对其连续字母进行排序,保留重复字符。使用Ada.Containers.Generic_Array_Sort
的实例对字母进行排序。
创建哈希映射;输入已排序的字符串作为地图的键;将原始单词添加到交替等效的单词集合中,并将该集合用作地图的值。使用Ada.Containers.Ordered_Sets
的实例来保存单词集。使用Ada.Containers.Hashed_Maps
的实例作为地图。
对于给定的字符串,对其字母进行排序,查找映射集并打印其中包含的单词。
看到一个完整的例子here。