def moze_byt(sucet, cislo, este_clenov) max_limit = sucet + este_clenov*cislo + este_clenov*(este_clenov+1)/2 min_limit = sucet + este_clenov*cislo - este_clenov*(este_clenov+1)/2 return ($S <= max_limit and $S >= min_limit) end print "Zadaj N: "; $N = readline.to_i print "Zadaj S: "; $S = readline.to_i sucet = 0 cislo = 0 #kroky = $N-1 # skuska parity (TODO zdokumentovat) a skuska rozsahu if (($N/2) % 2 != $S % 2) or not moze_byt(sucet, cislo, $N) puts "Riesenie neexistuje." exit end # prvy clen postupnosti print cislo ($N-1).downto(1) do |este_clenov| if moze_byt(sucet+(cislo+1), cislo+1, este_clenov-1) cislo += 1 elsif moze_byt(sucet+(cislo-1), cislo-1, este_clenov-1) cislo -= 1 else raise "Je dokazane ze toto sa nemoze vypisat." end print ", ", cislo sucet += cislo end print "\n"