Witam. Jak rozbić tablicę (jednolitą) z danymi na 32 kawałki?? (Wielkość każdego z partów nie ma znaczenia, ważne byle było ich równo 32) ??
Np. mam takie coś [“JAKIES TAM DANE, W TYM BINARNE”] i chce rozbić to na 32 kawałki (wielkość każdego nie ma znaczenia, byle były 32). I jeszcze żeby jak nie ma tyle zawartości by podzielić na 32 części to by dopisało nil reszczie.
Kompletnie nie znam się na Rubim, ale pewnie macie coś w stylu tablic mieszających (hash table). Operacje na nich są sporo szybsze niż na “zwykłych” odpowiednikach.
Popełniłem tam literówkę, zamiast “word” miało być “string”. To ci rozbija string na poszczególne znaki. Teraz możesz podliczyć znaki i dodać do tablicy tyle pustych pól ile trzeba:
string = "wafel wafel"
string = string.chars.to_a
howmuch = 32 - string.count
for i in 1..howmuch do
string.push(nil)
end
Żeby nie było - z twojego objaśnienia w pierwszym poście zrozumiałem, że masz tablicę, w tablicy masz string i chcesz go rozbić na 32 elementy.
Nie wyobrażam sobie, żeby dało się to zrobić prościej i iteracja po całej tablicy wydaje się być logiczna. Prawdę mówiąc to wcale nie jest aż tak wolne, żeby trzeba było to przyspieszać jakimiś kosmicznymi sposobami.
To co podałeś będzie działać tylko gdy ciąg znaków ma 32 elementy albo mniej.
Pierwsza rzecz jaka przychodzi mi do głowy:
def foo a
if a.size < 32
return a.chars.to_a + Array.new(32 - a.size, nil)
else
return a.split(//, 32)
end
end
a = foo 'abcdef'
print a, ' ', a.size, "\n"
a = foo 'qazxswedcvfrtgbnhyujmkiolpqazxswedcvfr'
print a, ' ', a.size, "\n"