Czy ktoś z forum mógłby udzielić mi porady co do postaci IO w kodzie Rubiego, jaki jest pozytywnie przyjmowany przez system weryfikujący na polskim SPOJu?
Innymi słowy, jak ma wyglądać pobieranie wejścia i wypisywanie/zwracanie wyjścia, (zwykły print/puts i gets a nawet $stdin.gets się nie sprawdza)? Jestem przekonany, że mój algorytm dla zadania Tablica działa poprawie, jednakże system nie przyjmuje mojego rozwiązania.
Na SPOJu mają Ruby 1.9.
Oto kod:
[code]#!/usr/bin/ruby
ilosc = gets.to_i
tab = []
(0…ilosc).each do |x|
tab[x] = gets.split.reverse.uniq
end
(0…ilosc).each do |x|
puts “#{tab[x].join(” “)}\n”
end[/code]
Ktoś ma jakiś pomysł?
To jeszcze podpowiem Ci, że nie musisz bawić się w zapamiętywanie wyników poszczególnych testów. Możesz na bieżąco wypisywać je i też zostanie zaakceptowane (stdin i stdout to dwa niezależne strumienie). I dla porównania moje rozwiązanie:
tests = gets.to_i
tests.times do
_, *arr = gets.split(" ")
puts arr.reverse
end
@Mawrecki
Co do ilości sprawdzanych liczb chyba masz rację. Widocznie autor zadania nie założył przy testach takiej okoliczności i nie jest to sprawdzane.
BTW Dołożyłbym jeszcze join(" ") żeby na wyjściu było dokładnie tak jak w podanym przykładzie.
[code=Ruby]#!/usr/bin/ruby
ilosc = gets.to_i
ilosc.times do
temp, *arr = gets.split
puts arr[0…temp.to_i].reverse.join(" ")
end[/code]
Czy wy czytacie tę samą treść zadania co i ja? Ja tam widzę, że każdy test składa się z n liczb i n liczb ma się znaleźć na wyjściu (wszystkie). Gdyby nie testowano takich przypadków to cała zabawa nie miałaby sensu (a to jedno z prostszych zadań).