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??
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.
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
Dzieki wielkie za pomoc podbudowaliscie moja motywacje