Czy istnieje metoda w języku ruby, aby przekształcić fixnum jak 74239 w tablicę jak [7,4,2,3,9]?Włączanie długiej ustalonej liczby do tablicy Ruby
5
A
Odpowiedz
7
Nie trzeba wziąć okrągłą podróż przez sznurek gruntów dla tego typu rzeczy:
def digits(n)
Math.log10(n).floor.downto(0).map { |i| (n/10**i) % 10 }
end
ary = digits(74239)
# [7, 4, 2, 3, 9]
Zakłada się, że n
jest oczywiście dodatnie, poślizgnięcie n = n.abs
w th e mix może zająć się tym w razie potrzeby. Jeśli potrzebujesz na pokrycie wartości non-dodatnie, a następnie:
def digits(n)
return [0] if(n == 0)
if(n < 0)
neg = true
n = n.abs
end
a = Math.log10(n).floor.downto(0).map { |i| (n/10**i) % 10 }
a[0] *= -1 if(neg)
a
end
13
5
Sposób divmod mogą być używane do pobierania cyfry po jednym na raz
def digits n
n= n.abs
[].tap do |result|
while n > 0
n,digit = n.divmod 10
result.unshift digit
end
end
end
Szybkie odniesienia pokazał, że jest to szybsze niż przy użyciu Zaloguj się, aby znaleźć liczbę cyfr przed czasem, która sama była szybsza niż metody oparte na ciągach.
bmbm(5) do |x|
x.report('string') {10000.times {digits_s(rand(1000000000))}}
x.report('divmod') {10000.times {digits_divmod(rand(1000000000))}}
x.report('log') {10000.times {digits(rand(1000000000))}}
end
#=>
user system total real
string 0.120000 0.000000 0.120000 ( 0.126119)
divmod 0.030000 0.000000 0.030000 ( 0.023148)
log 0.040000 0.000000 0.040000 ( 0.045285)
4
można przekonwertować na ciąg i użyć metody chars:
74239.to_s.chars.map(&:to_i)
wyjściowa:
[7, 4, 2, 3, 9]
jest trochę bardziej elegancki niż rozszczepienia.
1
Można również użyć Array.new
zamiast map
:
n = 74239
s = Math.log10(n).to_i + 1 # Gets the size of n
Array.new(s) { d = n % 10; n = n/10; d }.reverse
1
W Ruby 2.4, całkowitymi będzie miał digits method.
Powiązane problemy
- 1. liczba nawiasów dla ustalonej liczby par "()"
- 2. Python hash() nie obsługuje długiej liczby całkowitej?
- 3. Jak ustawić wysokość elementu dla ustalonej liczby wierszy tekstu?
- 4. analizowania Ruby tablicy do JSON
- 5. Ruby Hash do tablicy wartości
- 6. Przechowywanie i pobieranie niepodpisanej długiej wartości długiej do/z NSString
- 7. konwersja tablicy ciąg do liczby całkowitej tablicę
- 8. Ruby: Jak połączyć elementy tablicy z prefiksem?
- 9. Jak uzyskać wartość liczby całkowitej ze znakiem liczby długiej w python?
- 10. Od tablicy Ruby do tablicy JS w Railsach - "cytat"?
- 11. Włączanie GetLastError() do wyjątku
- 12. Zliczanie liczby elementów w tablicy
- 13. Android Scroller fling do ustalonej pozycji
- 14. Tablica sortowania ruby tablicy
- 15. Czy istnieje limit rozmiaru tablicy w ruby?
- 16. Ruby dopasowujące ciągi regex z tablicy?
- 17. LINQ: Lista list do długiej listy
- 18. Jak zaokrąglić liczby do dynamicznej precyzji w Ruby On Rails?
- 19. Ruby - odwzorowanie tablicy na hashmap
- 20. Atrybut tablicy dla modelu Ruby
- 21. iterację tablicy mieszań w Ruby
- 22. Włączanie argumenty konstruktora do zmiennych instancji
- 23. Włączanie ActiveRecord :: Relacja do modelu
- 24. Utwórz liczby w tablicy, które sumują się do ustawionej kwoty.
- 25. Zamówienie mysql według ustalonej listy
- 26. Podnoszenie liczby wpisów w tablicy json
- 27. Usuwanie elementów z tablicy Ruby
- 28. Zakres dat w tablicy, ruby
- 29. Implementacja Mergesorta. Zliczanie liczby inwersji w tablicy
- 30. Określanie liczby wymiarów w tablicy PHP
Wydaje się dość zawiłe. –
@RyanBigg: Tylko jeśli zapomniałeś matematyki w szkole średniej. –