Na przykład słowa "stos", chcę uzyskać tablicę jak:Jaki jest najlepszy sposób na podzielenie łańcucha, aby uzyskać wszystkie podciągi przez Ruby?
['s', 'st', 'sta', ... 'stack', 't', 'ta', ... , 'c', 'ck', 'k']
Robiłam to przez takiego kodu:
def split_word(str)
result = []
chas = str.split("")
len = chas.size
(0..len-1).each do |i|
(i..len-1).each do |j|
result.push(chas[i..j].join)
end
end
result.uniq
end
Czy istnieje lepszy i czysty sposób to zrobić? Dzięki.
Z kopiami lub bez duplikatów? –
bez duplikatów, dzięki! –
porada ogólna: lepiej używać mapy (funkcjonalnie) zamiast podążać za wzorcem "init empty + iterate + push + return" (imperative) – tokland