From 16969447f3c63553ac1d7177e45a220312ecf06e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Laforge?= Date: Tue, 26 Nov 2024 04:06:44 +0100 Subject: [PATCH] Simplify ZipLongest and fix typo (#204) --- v2/zip_longest.go | 36 ++++++++---------------------------- 1 file changed, 8 insertions(+), 28 deletions(-) diff --git a/v2/zip_longest.go b/v2/zip_longest.go index 8dc9004..caff491 100644 --- a/v2/zip_longest.go +++ b/v2/zip_longest.go @@ -1,36 +1,16 @@ package pie // ZipLongest will return a new slice containing pairs with elements from input slices. -// If input slices have diffrent length, missing elements will be padded with default values. +// If input slices have different length, missing elements will be padded with default values. func ZipLongest[T1, T2 any](ss1 []T1, ss2 []T2) []Zipped[T1, T2] { - var minLen, maxLen int - var small int8 - - if len(ss1) <= len(ss2) { - small = 1 - minLen = len(ss1) - maxLen = len(ss2) - } else { - small = 2 - minLen = len(ss2) - maxLen = len(ss1) - } - - ss3 := []Zipped[T1, T2]{} - for i := 0; i < minLen; i++ { - ss3 = append(ss3, Zipped[T1, T2]{ss1[i], ss2[i]}) - } - - if small == 1 { - var t T1 - for i := minLen; i < maxLen; i++ { - ss3 = append(ss3, Zipped[T1, T2]{t, ss2[i]}) - } - } else { - var t T2 - for i := minLen; i < maxLen; i++ { - ss3 = append(ss3, Zipped[T1, T2]{ss1[i], t}) + ss3 := make([]Zipped[T1, T2], Max([]int{len(ss1), len(ss2)})) + for i := range ss3 { + ss3[i] = Zipped[T1, T2]{ + A: First(ss1), + B: First(ss2), } + Pop(&ss1) + Pop(&ss2) } return ss3