Wczytywanie zmiennych po spacji. Problem(SPOJ)

Hej,

Niedawno zaczalem swoja przygode z Ruby (on Rails) i dla oswojenia sie ze skladnia itd chcialem porobic zadania na spoju a konkretnie zabralem sie za to: enter link description here

To moje rozwiazanie:

t = gets.to_i
x = 0
y = 0
wynik = []
loop do
break if x>=t
    d=-1
    c=1
    a = gets.to_i
    b = gets.to_i
    
    d=a if ((b==0) || (b==1))
    d=b if ((a==0) || (b==1)) 
    d=0 if ((a==0) && (b==0)) 

    while d==-1

    c +=1
    d=c if ((c%a==0) && (c%b==0))

    end
    
    wynik[x]=d
    x+=1
end

loop do
    break if y>=t
    puts wynik[y]
    y+=1
end

Domyslam sie, ze da sie to zrobic lepiej i ze pewnie zrobilem to troche na okolo ale program wyglada na poprawny a mimo to dostaje na spoju informacje o bledzie. Wydaje mi sie, ze moze chodzic o to iz spoj chce aby zmienne byly wczytane po spacji a nie po enterze jednak nie znalazlem nigdzie podpowiedzi jak to zamienic dlatego pisze.

Czy istnieje jakis sposob na podawanie zmiennych po spacji??

Czy moze mam jakis blad w kodzie??

Twój program nie przechodzi testu z treści. W takich przypadkach nie ma sensu wysyłać rozwiązania do sprawdzarki, tylko trzeba męczyć testy lokalnie, aż program zacznie wypisywać dokładnie to co w przykładzie. W tym przypadku na pewno problemem są źle wczytywane linie. Otóż w każdej linii (prócz pierwszej) masz dwie liczby oddzielone spacją. Ty natomiast wczytujesz je poprzez dwukrotne wywołanie gets.to_i. Co zwróci to wywołanie dla linii zawierającej “12 15”? Zwróci 12, a pozostała część linii zostanie zignorowana. Ja w swoim rozwiązaniu zrobiłem tak:

a, b = gets.split.map(&:to_i)

I taka poprawka sprawia, że Twój program zwraca poprawny wynik dla przykładowego testu, ale czy jest faktycznie poprawny przekonasz się po wysłaniu do sprawdzarki.

1 Like

Kluczem do rozwiązania zadania jest trzyliterowy akronim “lcm”

Okazuje się, że funkcja lcm jest już gotowa do użycia http://ruby-doc.org/core-2.0.0/Integer.html#method-i-lcm

1 Like

Tylko po co psuć całą zabawę koledze?

Tak wlasnie myslalem ze istnieje jakis szybszy sposob jak ten lcm xD Ale rozwiazalem po swojemu i tez jest ok. A co do wpisywania zmiennych po spacji to te metody, ktore napisal radarek napewno sie przydadza w innych zadaniach :wink:

Dzieki wielkie za pomoc podbudowaliscie moja motywacje :slight_smile: