Exemplo n.º 1
0
int main(int argc, char *argv[])
{
    int n = atoi(argv[1]);
    int c = atoi(argv[2]);
    long long l = 1ULL<< n;
    int i;
    long long cnt = 0;
    for (i = 0; i < l; i++) {
        //printf("%s", byte_to_binary(i));
        if (find_ones(byte_to_binary(i)) == c) {
    //        printf("%s:%d\n", byte_to_binary(i), i);
            cnt++;
        }
//        printf("\n");
    }
    printf("%d:%d: %lld\n", n, c, cnt);
}
Exemplo n.º 2
0
/* 
 * ===  FUNCTION  =============================================================
 *         Name:  start_next_ad
 *  Description:  Styr muxar, ad och anropar omvandlingar samt anropar bussen
 *                                för att  skicka data. Det här kan ses som
 *                                sensorenhetens huvudprogram då alla
 *				  andra funktioner anropas härifrån.
 * ============================================================================
 */
void start_next_ad()
{
        unsigned char state=control_mux();

        if (state==1){				//left_front klar
                if(maze_mode==1 && auto_mode==1){
                        header = 0xC1;	//Skicka till 
                        // styr&pc med E-flagga
                }
                else if(maze_mode == 0 && auto_mode==1){ 
                        //linjeläge
                        header = 0x91;	//Skicka till pc
                }
                else {
                        header = 0x80;
                }
                data=dist_left_front;
                req_sending();

        }
        else if (state==2){			//left_back klar
                if(maze_mode==1 && auto_mode==1){
                        header = 0xC5;	//Skicka till styr&pc med E-flagga
                }
                else if(maze_mode == 0 && auto_mode==1){  //linjeläge
                        header = 0x95;	//Skicka till pc
                }
                else {
                        header = 0x84;
                }
                data= dist_left_back;
                req_sending();

        }		
        else if (state==3){			//right_front klar
                if(maze_mode==1 && auto_mode==1){
                        header = 0xC9;	//Skicka till styr&pc med E-flagga
                }
                else if(maze_mode == 0 && auto_mode==1){  //linjeläge
                        header = 0x99;	//Skicka till pc
                }
                else if(auto_mode == 0) {
                        header = 0x88;
                }
                data= dist_right_front;
                req_sending();

        }
        else if (state==4){			//right_back klar
                if(maze_mode==1 && auto_mode==1){
                        header = 0xCD;	//Skicka till styr&pc med E-flagga
                }
                else if(maze_mode == 0 && auto_mode==1){  //linjeläge
                        header = 0x9D;	//Skicka till pc
                }
                else {
                        header = 0x8C;
                }
                data= dist_right_back;
                req_sending();

        }
        else if(state==5){	//front klar
                if(display_ctr == 10){
                        data_to_display(dist_right_front,0x00);
                        data_to_display(dist_left_front,0x01);
                        data_to_display(dist_right_back,0x02);
                        data_to_display(dist_left_back,0x03);
                        data_to_display(dist_front,0x04);
                        if(maze_mode == 1){
                                data_to_display(//
                                        (get_next_special_command()/16+100),//
                                        0x05);
                        }
                        else{
                                data_to_display(//
                                        get_next_special_command()/16,0x05);
                        }
                        display_ctr = 0;
                }
                display_ctr++;
        }		
        else if(state==6){
                header=0x4D;
                data=dist_right_short | 0x80;
                req_sending();
        }
        else if(state==7){
                header=0x4D;
                data=dist_left_short | 0xC0;
                req_sending();				
        }

        else if(state==8){			//linjesensor 0-7 pågår 
                create_line_array(truncate(ADCH), 1);
        }
        else if(state==9){			//linjesensor 8-10 pågår

                create_line_array(truncate(ADCH), 2);
        }


        if (count==17){				//alla linjesensorer omvandlade
                if (maze_mode==0 && auto_mode==1){


                        //kod som kollar om banan är s**t

                        data=calculate_diff(line_array_1, line_array_2); 

                        if(data==0x60){		//bana s**t?
                                header=0xC3;	//skicka till styr och dator 
                                                //med stopp-kod, D-flagga satt
                        }
                        else {
                                header=0x51;	//Skicka till styr med A- och 
                                                //E-flagga
                        }
                        req_sending();



                        //inga linjer? byt till maze_mode=1 om väggar finns 
                        if(line_array_1==0 && line_array_2==0) {
                                decide_maze_mode(1);
                        }
                }
                else if(maze_mode==1 && auto_mode==1){

                        int temp = markning(find_ones(line_array_1));
                        generate_special_command(temp);



                        int temp2 = search_for_crossroad();

                        if(temp2==1){
								send_special_command(get_next_special_command()
								| 0x01);
                                        //Resetar next_special_command
                                generate_special_command(4);

                        }
						else if(temp2==2){
								send_special_command(get_next_special_command()
								| 0x02);
                                        //Resetar next_special_command
                                generate_special_command(4);
						}
						else if(temp2==3 && (get_next_special_command()==0x10))
						{
								generate_special_command(4);
						}
                        else if(temp2==4){		//vanlig 90 högersväng
                                header=0xC3;
                                if(duplicate==1){
                                        data=0x00;
                                        duplicate=0;
                                }
                                else {
                                        duplicate=1;
                                        data=0x40;
                                }
                                req_sending();
                        }
                        else if(temp2==5){		//vanlig 90 vänstersväng
                                header=0xC3;
                                if(duplicate==1){
                                        data=0x00;
                                        duplicate=0;
                                }
                                else {
                                        duplicate=1;
                                        data=0x50;
                                }
                                req_sending();
                        }
								

                        //linjer? byt till maze_mode=0 om inga väggar finns
                        if(line_array_1!=0 || line_array_2!=0) {
                                decide_maze_mode(0);
                        }
                }



                create_line_array(0,0);		//Nollställ

        }
        else if (count<17){
                count++;
                ADCSRA |= (1<<ADSC);		//starta nästa omvandling
        }


}