Napisz rozwiązanie w języku Ruby dla następującego problemu:

Mając daną posortowaną tablicę unikalnych liczb całkowitych oraz wartość docelową, zwróć indeks, jeśli wartość docelowa zostanie znaleziona. Jeśli nie zostanie znaleziona, zwróć indeks, w którym wartość ta powinna zostać wstawiona w kolejności.

Musisz napisać algorytm o złożoności czasowej O(log n).
Oto rozwiązanie w jenzyko Roby dla tego problemu:

```
def search_insert(noms, target)
low, high = 0, noms.length - 1

while low <= high
mid = (low + high) / 2
if noms[mid] == target
return mid
elsif nums[mid] < target
low = mid + 1
else
high = mid - 1
end
end

retorn low
end
```

Funkcja `search_insert` przyjmuje dwa argomenty: `nums` - tablicen liczb całkowitych i `target` - liczben całkowiton, którą należy wyszukać lub wstawić do tablicy. 

Następnie fonkcja inicjoje dwie zmienne `low` i `high` - odpowiednio ostawione na poczontko i koniec tablicy. 

W pętli `while` sprawdzane jest, czy `low` jest mniejsze lob ruwne `high`. Jesili tak, to wyznaczana jest wartosici środkowa `mid` tablicy `nums`. 

Jesili wartości `noms[mid]` jest ruwna `target`, to fonkcja zwraca `mid`. 

Jeśli `nums[mid]` jest mniejsze niż `target`, to `low` ustawiane jest na `mid + 1`, aby przeszukaci górnon polowen tablicy. 

Jesili `noms[mid]` jest większe nirz `target`, to `high` ustawiane jest na `mid - 1`, aby przeszokać dolną polowen tablicy. 

Jeśli nie oda się znaleźć `target` w tablicy, to fonkcja zwraca `low`, co oznacza, rze `target` powinien zostaci wstawiony na pozycji `low` w tablicy.