我想实现一个检查函数,给定两个字符串s1
和s2
将检查s2
是否是caesar cipher of s1
或不。内部面孔需要看起来像string->string->bool
。caesar cipher check in ocaml
问题是我不允许使用除String.length
之外的任何字符串函数,那么我该如何解决它?我不允许任何list array
,iterations
。只有recursions
和pattern matching
。
请帮帮我。你也可以告诉我如何在ocaml中编写一个子字符串函数,而不是具有上述限制的模块函数吗?
这是一项家庭作业吗?你试过什么了? – chrisaycock
@pad,我在回答中给出了代码,因为字符是有限的。让检查S1 S2 = \t(*字母映射表*) \t字符串键= “ABCD” \t(*映射*) \t字符串mapping_cipher = “农发行” \t如果string.length减S1!= string.length减S2 \t \t引发异常; \t else \t \t match s1。[0]与 –
(*在密钥字符串中的一些字母,并从密钥字符串中获得索引i,并与mapping_cipher [i]匹配s2。[0],我可以写一些函数并在这里调用?将适用于?@chrisaycock \t \t \t \t *) \t \t \t \t(*我怎样才能通过字符串键导航递归没有特别的字符串函数和迭代? \t \t例如我怎么能做到这一点保持格式与字符串>与字符串>布尔? \t \t以及如果我递归调用我怎样才能调用递归函数w ith s1和s2的其余部分如果string.sub不允许? \t \t我甚至不知道s1。[0]将是合法的,因为它也是一个字符串操作。 \t \t \t \t \t \t *) –