Jaki jest najskuteczniejszy sposób zwrócenia tablicy pozycji znaku początku linii w ciągu znaków?Pozycje Newline
text =<<_
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.
_
Oczekiwany:
find_newlines(text) # => [0, 80, 155, 233, 313, 393]
zamieścić własne odpowiedzi. Chciałbym zaakceptować najszybszy sposób jako zaakceptowaną odpowiedź.
Benchmark wynik tutaj zostanie zaktualizowany, gdy nowe odpowiedzi dodaje
require "fruity"
compare do
padde1 {find_newlines_padde1(text)}
digitalross1 {find_newlines_digitalross1(text)}
sawa1 {find_newlines1(text)}
sawa2 {find_newlines2(text)}
end
# Running each test 512 times. Test will take about 1 second.
# digitalross1 is faster than sawa2 by 5x ± 0.1
# sawa2 is faster than sawa1 by 21.999999999999996% ± 1.0%
# sawa1 is faster than padde1 by 4.0000000000000036% ± 1.0%
Twoje oczekiwane wyniki wydają się nieprawidłowe. Pierwszą wartością będzie * zawsze * 0, więc nic nie mierzy. Co gorsza, ostatnia wartość ** 393 ** nie jest w rzeczywistości ostatnią nową linią. Jest to znak nowej linii po * sunt in *, a nie nowej linii po * est laborum *. – DigitalRoss
Ale +1 mimo to. Uwielbiam format konkursu. – DigitalRoss
To samo, czuje się trochę jak golf z kodem, ale dla szybkości :) –