in reply to Re: Sorting challenge
in thread Sorting challenge

Great response davido. Your posts are always very well thought out. Each number needs to be on its own line. The input/output needs to look like:
#input 4 3 6 7 2 #output 2 3 6 7

Replies are listed 'Best First'.
Re^3: Sorting challenge
by davido (Cardinal) on Jul 23, 2013 at 05:11 UTC

    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

      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