Perl每周挑战284:相对排序
原文英文,约900词,阅读约需4分钟。
📝
内容提要
本文讨论了Perl每周挑战的第二个任务:相对排序。给定两个整数列表@list1和@list2,要求根据@list2的顺序对@list1进行排序,@list2中缺失的元素按升序放在@list1末尾。提供了Raku和Perl的解决方案示例及其输出结果。
❓
Q&A
什么是相对排序任务?
相对排序任务要求根据@list2的顺序对@list1进行排序,缺失的元素按升序放在@list1末尾。
如何实现Perl中的相对排序?
在Perl中,通过使用常规哈希来跟踪@list1中的元素频率,并根据@list2的顺序构建结果列表。
Raku和Perl的相对排序有什么不同?
Raku使用BagHash来跟踪元素频率,而Perl使用常规哈希,二者在逻辑上相似但实现方式不同。
给出一个相对排序的示例及其输出。
输入@list1 = (2, 3, 9, 3, 1, 4, 6, 7, 2, 8, 5),@list2 = (2, 1, 4, 3, 5, 6),输出为(2, 2, 1, 4, 3, 3, 5, 6, 7, 8, 9)。
相对排序中缺失元素如何处理?
缺失的元素会按升序放在@list1的末尾。
如何在Raku中实现相对排序?
在Raku中,通过创建@list1的频率直方图,并根据@list2的顺序构建结果列表,最后将未使用的元素按升序添加。
🏷️