in reply to Re^2: Sorting challenge
in thread Sorting challenge

I'm still unclear on what's supposed to happen if you get input outside of (0,1000000]. I assume you don't need to prompt; the harness is not expecting any output except for the result. But what's supposed to happen on bad input?

Maybe you should just post the exact problem specification.


Dave

Replies are listed 'Best First'.
Re^4: Sorting challenge
by PerlSufi (Friar) on Jul 23, 2013 at 14:14 UTC
    Sorry davido, I should have did it this way instead. Here are the specifications:
    Given the list of numbers, you are to sort them in non decreasing orde +r. Input t – the number of numbers in list, then t lines follow [t <= 10^6]. Each line contains one integer: N [0 <= N <= 10^6] Output Output given numbers in non decreasing order. Example Input: 5 5 3 6 7 1 Output: 1 3 5 6 7
    I should specify that the input is from a machine- not a human user. So prompting with messages will not give the correct answer either. The site I am working off of is codechef.com.

      This works, and I like that it uses as few explicit variables as I can manage while still chomping.

      use v5.10; say for sort { $a <=> $b } map { chomp( my $i = <> ); $i } 1 .. <>;

      Since it's just a throwaway, I suppose you could even rely on Perl's numification rules, eliminating chomp, and thus further eliminating the use of variables, making it as pure a "filter" as possible:

      print for sort { $a <=> $b } map { scalar <> } 1 .. <>;

      I also kind of liked this one, but it's more verbose:

      my $count = <>; my @numbers; while( $count-- ) { push @numbers, scalar <>; } print for sort { $a <=> $b } @numbers;

      Dave

        Why not just

        <>; print sort { $a <=> $b } <>;
        Wow, nice davido. However, all of those still gave 'time limit exceeded'. Actually, all of the responses here did. Though they were all far better than my attempt! Here is the link explaining this message from the site:
        http://www.codechef.com/wiki/faq#Why_do_I_get_a_Time_Limit_Exceeded