Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Toy Problem of the Week

Name: Anonymous 2009-12-12 18:22

I was raking around on the net and found this problem and coded up a solution. Once we get at least 10 solutions I'll post mine and a link to where I found the problem.
Any language, any libraries (but declare them) allowed. Aim for clarity and conciseness. Assume the input is well formed. Mine is 5 lines of scheme code (6 if we include requiring a library). No calling an "answer" function that "you wrote already and put in an external lib" ;)

Consider the problem of turning a list consisting
of a mix between symbols and non-symbols into a
list of lists of the symbol and its following
non-symbols. That is:

Input:    ({<symbol> <non-symbol>*} ... )
Output:   ((<symbol> (<non-symbol>*)) ...)
Example:     (a 1 2 3 b 4 5 c d 8 9 e)
           -> ((a (1 2 3)) (b (4 5)) (c ()) (d (8 9)) (e ()))

Name: Anonymous 2009-12-12 22:08

>>25

But a string can be any number of lists, depending on how pointers are used! It's all just bytes anyways!!

Anyways, FINE!!


#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
    int l = strlen(argv[1]);
    int p = 0;
    int i;
    for(i = 0; i < l; i++)
    {
        if(argv[1][i] >= 'a' && argv[1][i] <= 'z')
        {
            if(p)
            {
                printf(")) (%c (",argv[1][i]);
            }
            else
            {
                printf("(%c (",argv[1][i]);
                p = 1;
            }
        }
        else
        if(argv[1][i] == ')')
        {
            printf(")))");
        }
        else
        {
            printf("%c",argv[1][i]);
        }
    }
    printf("\n");
    return 0;
}


Which results in:


C:\Users\*\Desktop>gcc list.c -o list.exe

C:\Users\*\Desktop>list "(a 1 2 3 b 4 5 c d 8 9 e)"
((a ( 1 2 3 )) (b ( 4 5 )) (c ( )) (d ( 8 9 )) (e ()))

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List