Mas*_*ler 2 delphi algorithm functional-programming
我正在考虑编写功能Zip例程的Delphi实现,该例程采用两个列表并输出一对元素列表.所以,喂它[1,2,3]和['a','b','c']会给[(1,'a'),(2,'b'),(3,'c') )] 作为结果.如果两个输入的长度完全相同,那就好了,就像我在网上看到的这个函数的每个演示一样.但如果第一个是[1,2,3,4]呢?输出应该是什么?如何在其他语言的其他实现中处理此案例?
Jul*_*iet 10
没有"正确"或"错误"的方法来执行此操作,实现细节由您决定.您可以采取以下几种方法:
1)F#方法:抛出异常.
2)Haskell和Python方法:将输出截断为输入的最小长度.
zip [1; 2; 3] ['a'; 'b'; 'c'; 'd'; 'e']
= [ (1, 'a'); (2, 'b'); (3, 'c')]
Run Code Online (Sandbox Code Playgroud)
截断有时候很有用,就像你压缩有限和无限序列时的情况一样.
3)Ruby方法:零或零输出不可用值:
zip [1; 2; 3] ['a'; 'b'; 'c'; 'd'; 'e']
= [ (1, 'a'); (2, 'b'); (3, 'c'); (nil, 'd'); (nil, 'e')]
Run Code Online (Sandbox Code Playgroud)
4)根据需要缩短元组2和1元组:
zip [1; 2; 3] ['a'; 'b'; 'c'; 'd'; 'e']
= [ (1, 'a'); (2, 'b'); (3, 'c'); ('d'); ('e')]
Run Code Online (Sandbox Code Playgroud)
我不知道这样做的任何语言.