Kanoniczna Array przykład różnica w Ruby jest:Ruby tablica odejmowanie bez usuwania elementów więcej niż raz
[ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ] #=> [ 3, 3, 5 ]
Jaki jest najlepszy sposób, aby uzyskać następujące zachowanie w zamian?
[ 1, 1, 2, 2, 3, 3, 4, 5 ].subtract_once([ 1, 2, 4 ]) #=> [ 1, 2, 3, 3, 5 ]
Oznacza to, że tylko pierwsza instancja każdego pasującego elementu w drugiej macierzy jest usuwana z pierwszej tablicy.
Mam zamiar zaakceptować to, ale byłoby miło, gdyby argument mógł zawierać zduplikowane wartości, które zostaną zastosowane po kolei (zostaną zgniecione przez konwersję do Set). Nie wiesz, jak zachować duplikaty, zachowując jednocześnie wydajność. (Chciałem również zaakceptować tablicę, a nie wartości jako oddzielne argumenty, ale to łatwa zmiana). –
Zaktualizowałem odpowiedź wersją, która stosuje duplikaty tyle razy, ile jest obecnych w drugiej tablicy. – glebm
@ genialny człowiek genialny rozwiązanie! To bardzo mi pomogło. Napisałeś to tylko po to, by odpowiedzieć na to pytanie? Wielkie dzięki. –