[{"data":1,"prerenderedAt":1519},["ShallowReactive",2],{"doc:\u002Fex05":3},{"id":4,"title":5,"body":6,"description":1512,"extension":1513,"meta":1514,"navigation":120,"path":1515,"seo":1516,"stem":1517,"__hash__":1518},"docs\u002Fex05.md","Ejercicio 05: ft_print_comb",{"type":7,"value":8,"toc":1479},"minimark",[9,13,20,82,88,93,679,683,690,702,708,718,724,732,776,782,788,803,814,824,831,837,847,853,856,862,865,871,880,886,892,901,925,934,963,972,983,989,992,998,1007,1013,1016,1022,1041,1049,1052,1118,1133,1137,1140,1148,1158,1162,1221,1225,1328,1332,1438,1445,1460,1464,1475],[10,11,5],"h1",{"id":12},"ejercicio-05-ft_print_comb",[14,15,16],"blockquote",{},[17,18,19],"p",{},"Muestra todas las combinaciones únicas de tres dígitos distintos, con los\ndígitos de cada combinación en orden ascendente y las combinaciones también\nordenadas de forma ascendente.",[21,22,23,36],"table",{},[24,25,26],"thead",{},[27,28,29,33],"tr",{},[30,31,32],"th",{},"Dato",[30,34,35],{},"Valor",[37,38,39,51,61,71],"tbody",{},[27,40,41,45],{},[42,43,44],"td",{},"Carpeta",[42,46,47],{},[48,49,50],"code",{},"ex05\u002F",[27,52,53,56],{},[42,54,55],{},"Archivo",[42,57,58],{},[48,59,60],{},"ft_print_comb.c",[27,62,63,66],{},[42,64,65],{},"Prototipo",[42,67,68],{},[48,69,70],{},"void ft_print_comb(void);",[27,72,73,76],{},[42,74,75],{},"Funciones autorizadas",[42,77,78,79],{},"solo ",[48,80,81],{},"write",[17,83,84],{},[85,86,87],"em",{},"Hecho con amor para Laura, por Bogdan.",[89,90,92],"h2",{"id":91},"el-archivo","El archivo",[94,95,100],"pre",{"className":96,"code":97,"language":98,"meta":99,"style":99},"language-c shiki shiki-themes github-light github-dark","#include \u003Cunistd.h>\n\n\u002F*\n** Copia local de ft_putchar: el enunciado solo permite entregar este archivo.\n** Escribe un unico caracter en la salida estandar.\n*\u002F\nstatic void put_char(char c)\n{\n    write(1, &c, 1);\n}\n\n\u002F*\n** Imprime una combinacion. El separador va delante de todas menos la primera,\n** para que la salida no termine en \", \".\n*\u002F\nstatic void print_combination(char a, char b, char c, int first)\n{\n    if (!first)\n    {\n        put_char(',');\n        put_char(' ');\n    }\n    put_char(a);\n    put_char(b);\n    put_char(c);\n}\n\n\u002F*\n** Tres bucles anidados, uno por digito, con cada digito por delante del\n** anterior. Asi no se repite ninguna combinacion y salen en orden.\n** La 'a' no pasa de '7' porque detras hacen falta dos digitos mas.\n*\u002F\nvoid    ft_print_comb(void)\n{\n    char    a;\n    char    b;\n    char    c;\n    int     first;\n\n    first = 1;\n    a = '0';\n    while (a \u003C= '7')\n    {\n        b = a + 1;\n        while (b \u003C= '8')\n        {\n            c = b + 1;\n            while (c \u003C= '9')\n            {\n                print_combination(a, b, c, first);\n                first = 0;\n                c++;\n            }\n            b++;\n        }\n        a++;\n    }\n    put_char('\\n');\n}\n","c","",[48,101,102,115,122,129,135,141,147,174,180,206,212,217,222,228,234,239,279,284,299,305,318,330,336,345,353,361,366,371,376,382,388,394,399,414,419,428,436,444,453,458,473,486,503,508,526,542,548,565,581,587,596,609,620,626,636,642,652,657,674],{"__ignoreMap":99},[103,104,107,111],"span",{"class":105,"line":106},"line",1,[103,108,110],{"class":109},"szBVR","#include",[103,112,114],{"class":113},"sZZnC"," \u003Cunistd.h>\n",[103,116,118],{"class":105,"line":117},2,[103,119,121],{"emptyLinePlaceholder":120},true,"\n",[103,123,125],{"class":105,"line":124},3,[103,126,128],{"class":127},"sJ8bj","\u002F*\n",[103,130,132],{"class":105,"line":131},4,[103,133,134],{"class":127},"** Copia local de ft_putchar: el enunciado solo permite entregar este archivo.\n",[103,136,138],{"class":105,"line":137},5,[103,139,140],{"class":127},"** Escribe un unico caracter en la salida estandar.\n",[103,142,144],{"class":105,"line":143},6,[103,145,146],{"class":127},"*\u002F\n",[103,148,150,153,156,160,164,167,171],{"class":105,"line":149},7,[103,151,152],{"class":109},"static",[103,154,155],{"class":109}," void",[103,157,159],{"class":158},"sScJk"," put_char",[103,161,163],{"class":162},"sVt8B","(",[103,165,166],{"class":109},"char",[103,168,170],{"class":169},"s4XuR"," c",[103,172,173],{"class":162},")\n",[103,175,177],{"class":105,"line":176},8,[103,178,179],{"class":162},"{\n",[103,181,183,186,188,192,195,198,201,203],{"class":105,"line":182},9,[103,184,185],{"class":158},"    write",[103,187,163],{"class":162},[103,189,191],{"class":190},"sj4cs","1",[103,193,194],{"class":162},", ",[103,196,197],{"class":109},"&",[103,199,200],{"class":162},"c, ",[103,202,191],{"class":190},[103,204,205],{"class":162},");\n",[103,207,209],{"class":105,"line":208},10,[103,210,211],{"class":162},"}\n",[103,213,215],{"class":105,"line":214},11,[103,216,121],{"emptyLinePlaceholder":120},[103,218,220],{"class":105,"line":219},12,[103,221,128],{"class":127},[103,223,225],{"class":105,"line":224},13,[103,226,227],{"class":127},"** Imprime una combinacion. El separador va delante de todas menos la primera,\n",[103,229,231],{"class":105,"line":230},14,[103,232,233],{"class":127},"** para que la salida no termine en \", \".\n",[103,235,237],{"class":105,"line":236},15,[103,238,146],{"class":127},[103,240,242,244,246,249,251,253,256,258,260,263,265,267,269,271,274,277],{"class":105,"line":241},16,[103,243,152],{"class":109},[103,245,155],{"class":109},[103,247,248],{"class":158}," print_combination",[103,250,163],{"class":162},[103,252,166],{"class":109},[103,254,255],{"class":169}," a",[103,257,194],{"class":162},[103,259,166],{"class":109},[103,261,262],{"class":169}," b",[103,264,194],{"class":162},[103,266,166],{"class":109},[103,268,170],{"class":169},[103,270,194],{"class":162},[103,272,273],{"class":109},"int",[103,275,276],{"class":169}," first",[103,278,173],{"class":162},[103,280,282],{"class":105,"line":281},17,[103,283,179],{"class":162},[103,285,287,290,293,296],{"class":105,"line":286},18,[103,288,289],{"class":109},"    if",[103,291,292],{"class":162}," (",[103,294,295],{"class":109},"!",[103,297,298],{"class":162},"first)\n",[103,300,302],{"class":105,"line":301},19,[103,303,304],{"class":162},"    {\n",[103,306,308,311,313,316],{"class":105,"line":307},20,[103,309,310],{"class":158},"        put_char",[103,312,163],{"class":162},[103,314,315],{"class":113},"','",[103,317,205],{"class":162},[103,319,321,323,325,328],{"class":105,"line":320},21,[103,322,310],{"class":158},[103,324,163],{"class":162},[103,326,327],{"class":113},"' '",[103,329,205],{"class":162},[103,331,333],{"class":105,"line":332},22,[103,334,335],{"class":162},"    }\n",[103,337,339,342],{"class":105,"line":338},23,[103,340,341],{"class":158},"    put_char",[103,343,344],{"class":162},"(a);\n",[103,346,348,350],{"class":105,"line":347},24,[103,349,341],{"class":158},[103,351,352],{"class":162},"(b);\n",[103,354,356,358],{"class":105,"line":355},25,[103,357,341],{"class":158},[103,359,360],{"class":162},"(c);\n",[103,362,364],{"class":105,"line":363},26,[103,365,211],{"class":162},[103,367,369],{"class":105,"line":368},27,[103,370,121],{"emptyLinePlaceholder":120},[103,372,374],{"class":105,"line":373},28,[103,375,128],{"class":127},[103,377,379],{"class":105,"line":378},29,[103,380,381],{"class":127},"** Tres bucles anidados, uno por digito, con cada digito por delante del\n",[103,383,385],{"class":105,"line":384},30,[103,386,387],{"class":127},"** anterior. Asi no se repite ninguna combinacion y salen en orden.\n",[103,389,391],{"class":105,"line":390},31,[103,392,393],{"class":127},"** La 'a' no pasa de '7' porque detras hacen falta dos digitos mas.\n",[103,395,397],{"class":105,"line":396},32,[103,398,146],{"class":127},[103,400,402,405,408,410,412],{"class":105,"line":401},33,[103,403,404],{"class":109},"void",[103,406,407],{"class":158},"    ft_print_comb",[103,409,163],{"class":162},[103,411,404],{"class":109},[103,413,173],{"class":162},[103,415,417],{"class":105,"line":416},34,[103,418,179],{"class":162},[103,420,422,425],{"class":105,"line":421},35,[103,423,424],{"class":109},"    char",[103,426,427],{"class":162},"    a;\n",[103,429,431,433],{"class":105,"line":430},36,[103,432,424],{"class":109},[103,434,435],{"class":162},"    b;\n",[103,437,439,441],{"class":105,"line":438},37,[103,440,424],{"class":109},[103,442,443],{"class":162},"    c;\n",[103,445,447,450],{"class":105,"line":446},38,[103,448,449],{"class":109},"    int",[103,451,452],{"class":162},"     first;\n",[103,454,456],{"class":105,"line":455},39,[103,457,121],{"emptyLinePlaceholder":120},[103,459,461,464,467,470],{"class":105,"line":460},40,[103,462,463],{"class":162},"    first ",[103,465,466],{"class":109},"=",[103,468,469],{"class":190}," 1",[103,471,472],{"class":162},";\n",[103,474,476,479,481,484],{"class":105,"line":475},41,[103,477,478],{"class":162},"    a ",[103,480,466],{"class":109},[103,482,483],{"class":113}," '0'",[103,485,472],{"class":162},[103,487,489,492,495,498,501],{"class":105,"line":488},42,[103,490,491],{"class":109},"    while",[103,493,494],{"class":162}," (a ",[103,496,497],{"class":109},"\u003C=",[103,499,500],{"class":113}," '7'",[103,502,173],{"class":162},[103,504,506],{"class":105,"line":505},43,[103,507,304],{"class":162},[103,509,511,514,516,519,522,524],{"class":105,"line":510},44,[103,512,513],{"class":162},"        b ",[103,515,466],{"class":109},[103,517,518],{"class":162}," a ",[103,520,521],{"class":109},"+",[103,523,469],{"class":190},[103,525,472],{"class":162},[103,527,529,532,535,537,540],{"class":105,"line":528},45,[103,530,531],{"class":109},"        while",[103,533,534],{"class":162}," (b ",[103,536,497],{"class":109},[103,538,539],{"class":113}," '8'",[103,541,173],{"class":162},[103,543,545],{"class":105,"line":544},46,[103,546,547],{"class":162},"        {\n",[103,549,551,554,556,559,561,563],{"class":105,"line":550},47,[103,552,553],{"class":162},"            c ",[103,555,466],{"class":109},[103,557,558],{"class":162}," b ",[103,560,521],{"class":109},[103,562,469],{"class":190},[103,564,472],{"class":162},[103,566,568,571,574,576,579],{"class":105,"line":567},48,[103,569,570],{"class":109},"            while",[103,572,573],{"class":162}," (c ",[103,575,497],{"class":109},[103,577,578],{"class":113}," '9'",[103,580,173],{"class":162},[103,582,584],{"class":105,"line":583},49,[103,585,586],{"class":162},"            {\n",[103,588,590,593],{"class":105,"line":589},50,[103,591,592],{"class":158},"                print_combination",[103,594,595],{"class":162},"(a, b, c, first);\n",[103,597,599,602,604,607],{"class":105,"line":598},51,[103,600,601],{"class":162},"                first ",[103,603,466],{"class":109},[103,605,606],{"class":190}," 0",[103,608,472],{"class":162},[103,610,612,615,618],{"class":105,"line":611},52,[103,613,614],{"class":162},"                c",[103,616,617],{"class":109},"++",[103,619,472],{"class":162},[103,621,623],{"class":105,"line":622},53,[103,624,625],{"class":162},"            }\n",[103,627,629,632,634],{"class":105,"line":628},54,[103,630,631],{"class":162},"            b",[103,633,617],{"class":109},[103,635,472],{"class":162},[103,637,639],{"class":105,"line":638},55,[103,640,641],{"class":162},"        }\n",[103,643,645,648,650],{"class":105,"line":644},56,[103,646,647],{"class":162},"        a",[103,649,617],{"class":109},[103,651,472],{"class":162},[103,653,655],{"class":105,"line":654},57,[103,656,335],{"class":162},[103,658,660,662,664,667,670,672],{"class":105,"line":659},58,[103,661,341],{"class":158},[103,663,163],{"class":162},[103,665,666],{"class":113},"'",[103,668,669],{"class":190},"\\n",[103,671,666],{"class":113},[103,673,205],{"class":162},[103,675,677],{"class":105,"line":676},59,[103,678,211],{"class":162},[89,680,682],{"id":681},"línea-por-línea","Línea por línea",[684,685,687],"h3",{"id":686},"include-unistdh",[48,688,689],{},"#include \u003Cunistd.h>",[17,691,692,693,695,696,701],{},"Declara ",[48,694,81],{},", la única función de librería permitida. La explicación está en\n",[697,698,700],"a",{"href":699},"\u002Fex00","el ejercicio 00",".",[684,703,705],{"id":704},"static-void-put_charchar-c",[48,706,707],{},"static void put_char(char c)",[17,709,710,711,714,715,717],{},"Copia privada de ",[48,712,713],{},"ft_putchar",". ",[48,716,152],{}," la encierra en este archivo, para que no\nchoque con la de otros ejercicios si compilas varias juntas.",[684,719,721],{"id":720},"static-void-print_combinationchar-a-char-b-char-c-int-first",[48,722,723],{},"static void print_combination(char a, char b, char c, int first)",[17,725,726,727,731],{},"Esta función imprime ",[728,729,730],"strong",{},"una"," combinación y decide si lleva separador delante.\nRecibe cuatro datos:",[21,733,734,744],{},[24,735,736],{},[27,737,738,741],{},[30,739,740],{},"Parámetro",[30,742,743],{},"Qué es",[37,745,746,760],{},[27,747,748,757],{},[42,749,750,194,752,194,755],{},[48,751,697],{},[48,753,754],{},"b",[48,756,98],{},[42,758,759],{},"los tres dígitos, ya en orden",[27,761,762,767],{},[42,763,764],{},[48,765,766],{},"first",[42,768,769,771,772,775],{},[48,770,191],{}," si es la primera combinación, ",[48,773,774],{},"0"," si no",[17,777,778,779,781],{},"Es ",[48,780,152],{}," porque es un ayudante interno: nadie de fuera del archivo la usa.",[684,783,785],{"id":784},"if-first",[48,786,787],{},"if (!first)",[17,789,790,792,793,796,797,799,800,701],{},[48,791,295],{}," es el operador de negación: ",[48,794,795],{},"!first"," vale verdadero cuando ",[48,798,766],{}," es 0. La\nidea se lee al revés de lo habitual: ",[728,801,802],{},"si no es la primera, escribe el\nseparador",[17,804,805,806,809,810,813],{},"Así la salida empieza directamente en ",[48,807,808],{},"012"," y no termina en ",[48,811,812],{},"\", \"",". Poner el\nseparador detrás de cada combinación es el error clásico de este ejercicio.",[684,815,817,820,821],{"id":816},"put_char-y-put_char",[48,818,819],{},"put_char(',');"," y ",[48,822,823],{},"put_char(' ');",[17,825,826,827,830],{},"El separador son ",[728,828,829],{},"dos"," caracteres: una coma y un espacio. No existe un\ncarácter «coma y espacio»; hay que escribir los dos.",[684,832,834],{"id":833},"put_chara-put_charb-put_charc",[48,835,836],{},"put_char(a); put_char(b); put_char(c);",[17,838,839,840,194,842,820,844,846],{},"Los tres dígitos seguidos. ",[48,841,697],{},[48,843,754],{},[48,845,98],{}," ya son caracteres, no números, así que\nno hay que convertirlos.",[684,848,850],{"id":849},"void-ft_print_combvoid",[48,851,852],{},"void ft_print_comb(void)",[17,854,855],{},"La función pública del ejercicio. No devuelve nada y no recibe parámetros.",[684,857,859],{"id":858},"char-a-char-b-char-c",[48,860,861],{},"char a; char b; char c;",[17,863,864],{},"Los tres dígitos de la combinación actual. Se declaran arriba, como pide el\nestilo de la piscina, y se inicializan dentro de los bucles.",[684,866,868],{"id":867},"int-first",[48,869,870],{},"int first;",[17,872,873,874,876,877,879],{},"La bandera que recuerda si ya se imprimió algo. Es ",[48,875,273],{}," y no ",[48,878,166],{}," porque su\nvalor es 1 o 0, y así se lee como un booleano.",[684,881,883],{"id":882},"first-1",[48,884,885],{},"first = 1;",[17,887,888,889,891],{},"Antes de la primera combinación, no se ha impreso nada: ",[48,890,766],{}," vale 1.",[684,893,895,820,898],{"id":894},"a-0-y-while-a-7",[48,896,897],{},"a = '0';",[48,899,900],{},"while (a \u003C= '7')",[17,902,903,904,518,907,910,911,914,915,918,919,921,922,924],{},"El primer dígito recorre de ",[48,905,906],{},"'0'",[48,908,909],{},"'7'",". No llega a ",[48,912,913],{},"'8'"," ni a ",[48,916,917],{},"'9'"," porque\ndetrás hacen falta dos dígitos mayores: si ",[48,920,697],{}," fuera ",[48,923,913],{},", no habría forma de\ncompletar la terna.",[684,926,928,820,931],{"id":927},"b-a-1-y-while-b-8",[48,929,930],{},"b = a + 1;",[48,932,933],{},"while (b \u003C= '8')",[17,935,936,938,939,944,945,947,948,194,951,953,954,957,958,960,961,701],{},[48,937,754],{}," arranca ",[728,940,941,942],{},"uno por encima de ",[48,943,697],{},". Eso es lo que garantiza que no se repita\nningún dígito: si ",[48,946,697],{}," vale ",[48,949,950],{},"'3'",[48,952,754],{}," empieza en ",[48,955,956],{},"'4'",". Su tope es ",[48,959,913],{}," porque\ndetrás queda ",[48,962,98],{},[684,964,966,820,969],{"id":965},"c-b-1-y-while-c-9",[48,967,968],{},"c = b + 1;",[48,970,971],{},"while (c \u003C= '9')",[17,973,974,976,977,979,980,982],{},[48,975,98],{}," arranca uno por encima de ",[48,978,754],{}," y llega hasta ",[48,981,917],{},", el último dígito\ndisponible.",[684,984,986],{"id":985},"print_combinationa-b-c-first",[48,987,988],{},"print_combination(a, b, c, first);",[17,990,991],{},"Imprime la terna con su separador si toca. Los tres dígitos se pasan por valor:\nla función recibe copias y no puede cambiarlos.",[684,993,995],{"id":994},"first-0",[48,996,997],{},"first = 0;",[17,999,1000,1001,1006],{},"Después de la primera combinación, ya no es la primera. Esta línea está ",[728,1002,1003,1004],{},"dentro\ndel bucle de ",[48,1005,98],{},", así que se ejecuta en cada terna.",[684,1008,1010],{"id":1009},"c-b-a",[48,1011,1012],{},"c++; b++; a++;",[17,1014,1015],{},"Cada bucle avanza su variable. Sin estos incrementos el programa no termina\nnunca: es el error más caro de este ejercicio porque hay tres bucles y basta con\nolvidar uno.",[684,1017,1019],{"id":1018},"put_charn",[48,1020,1021],{},"put_char('\\n');",[17,1023,1024,1025,1028,1029,1032,1033,1036,1037,1040],{},"El salto de línea final va ",[728,1026,1027],{},"después"," del último ",[48,1030,1031],{},"while",", no dentro. El\nenunciado muestra la salida con ",[48,1034,1035],{},"cat -e"," y el ",[48,1038,1039],{},"$"," final indica que hay un salto.",[89,1042,1044,1045,1048],{"id":1043},"por-qué-no-hay-ni-un-if-de-comparación","Por qué no hay ni un ",[48,1046,1047],{},"if"," de comparación",[17,1050,1051],{},"Todo el orden sale de la estructura de los bucles:",[21,1053,1054,1064],{},[24,1055,1056],{},[27,1057,1058,1061],{},[30,1059,1060],{},"Regla del enunciado",[30,1062,1063],{},"Cómo se cumple",[37,1065,1066,1084,1095,1110],{},[27,1067,1068,1071],{},[42,1069,1070],{},"dígitos distintos",[42,1072,1073,953,1075,820,1078,1080,1081],{},[48,1074,754],{},[48,1076,1077],{},"a + 1",[48,1079,98],{}," en ",[48,1082,1083],{},"b + 1",[27,1085,1086,1089],{},[42,1087,1088],{},"dígitos ascendentes",[42,1090,1091,1092],{},"los bucles solo generan ",[48,1093,1094],{},"a \u003C b \u003C c",[27,1096,1097,1100],{},[42,1098,1099],{},"combinaciones ascendentes",[42,1101,1102,1103,1105,1106,1105,1108],{},"recorrido lexicográfico de ",[48,1104,697],{},", luego ",[48,1107,754],{},[48,1109,98],{},[27,1111,1112,1115],{},[42,1113,1114],{},"sin repetir combinaciones",[42,1116,1117],{},"cada terna se genera exactamente una vez",[17,1119,1120,1123,1124,1127,1128,820,1130,1132],{},[48,1121,1122],{},"987"," no aparece porque los bucles nunca generan un orden descendente. ",[48,1125,1126],{},"999"," no\naparece porque ",[48,1129,754],{},[48,1131,98],{}," siempre son mayores que el anterior. No hace falta\ncomprobarlo: la estructura ya lo impide.",[89,1134,1136],{"id":1135},"salida-esperada","Salida esperada",[17,1138,1139],{},"El principio y el final. Los puntos suspensivos son la abreviatura del\nenunciado, no salida real:",[94,1141,1146],{"className":1142,"code":1144,"language":1145,"meta":99},[1143],"language-text","012, 013, 014, 015, 016, 017, 018, 019, 023, ..., 789\n","text",[48,1147,1144],{"__ignoreMap":99},[17,1149,1150,1151,1154,1155,701],{},"Salen ",[728,1152,1153],{},"120"," combinaciones: las formas de elegir 3 dígitos entre 10, que es\n",[48,1156,1157],{},"10 × 9 × 8 \u002F (3 × 2 × 1)",[89,1159,1161],{"id":1160},"casos-límite","Casos límite",[21,1163,1164,1174],{},[24,1165,1166],{},[27,1167,1168,1171],{},[30,1169,1170],{},"Detalle",[30,1172,1173],{},"Decisión",[37,1175,1176,1184,1194,1202],{},[27,1177,1178,1181],{},[42,1179,1180],{},"Separador final",[42,1182,1183],{},"no se imprime: va delante, no detrás",[27,1185,1186,1189],{},[42,1187,1188],{},"Salto de línea final",[42,1190,1191,1192],{},"sí, porque el enunciado lo muestra con ",[48,1193,1035],{},[27,1195,1196,1199],{},[42,1197,1198],{},"Repeticiones",[42,1200,1201],{},"imposibles por el orden de los bucles",[27,1203,1204,1209],{},[42,1205,1206,1207],{},"Tope de ",[48,1208,697],{},[42,1210,1211,1213,1214,1216,1217,820,1219],{},[48,1212,909],{},", no ",[48,1215,917],{},": hay que dejar sitio a ",[48,1218,754],{},[48,1220,98],{},[89,1222,1224],{"id":1223},"errores-típicos","Errores típicos",[21,1226,1227,1240],{},[24,1228,1229],{},[27,1230,1231,1234,1237],{},[30,1232,1233],{},"Mensaje o síntoma",[30,1235,1236],{},"Causa",[30,1238,1239],{},"Solución",[37,1241,1242,1257,1280,1297,1315],{},[27,1243,1244,1249,1252],{},[42,1245,1246,1247],{},"termina en ",[48,1248,194],{},[42,1250,1251],{},"separador después de cada terna",[42,1253,1254,1255],{},"ponlo delante con ",[48,1256,766],{},[27,1258,1259,1269,1275],{},[42,1260,1261,1262,194,1265,1268],{},"salen ",[48,1263,1264],{},"011",[48,1266,1267],{},"022","…",[42,1270,1271,953,1273],{},[48,1272,754],{},[48,1274,906],{},[42,1276,1277],{},[48,1278,1279],{},"b = a + 1",[27,1281,1282,1285,1292],{},[42,1283,1284],{},"salen ternas desordenadas",[42,1286,1287,1289,1290],{},[48,1288,98],{}," no depende de ",[48,1291,754],{},[42,1293,1294],{},[48,1295,1296],{},"c = b + 1",[27,1298,1299,1306,1312],{},[42,1300,1301,1302,1305],{},"se corta en ",[48,1303,1304],{},"789"," sin salto",[42,1307,1308,1309],{},"falta ",[48,1310,1311],{},"put_char('\\n')",[42,1313,1314],{},"añádelo al final",[27,1316,1317,1320,1325],{},[42,1318,1319],{},"no termina",[42,1321,1322,1323],{},"falta algún ",[48,1324,617],{},[42,1326,1327],{},"revisa los tres bucles",[89,1329,1331],{"id":1330},"comprobarlo","Comprobarlo",[94,1333,1337],{"className":1334,"code":1335,"language":1336,"meta":99,"style":99},"language-sh shiki shiki-themes github-light github-dark","cat > \u002Ftmp\u002Fmain.c \u003C\u003C'EOF'\nvoid    ft_print_comb(void);\n\nint main(void)\n{\n    ft_print_comb();\n    return (0);\n}\nEOF\ncc -Wall -Wextra -Werror ex05\u002Fft_print_comb.c \u002Ftmp\u002Fmain.c -o \u002Ftmp\u002Fex05\n\u002Ftmp\u002Fex05 > \u002Ftmp\u002Fsalida.txt\nwc -c \u002Ftmp\u002Fsalida.txt\n","sh",[48,1338,1339,1356,1361,1365,1370,1374,1379,1384,1388,1393,1418,1428],{"__ignoreMap":99},[103,1340,1341,1344,1347,1350,1353],{"class":105,"line":106},[103,1342,1343],{"class":158},"cat",[103,1345,1346],{"class":109}," >",[103,1348,1349],{"class":113}," \u002Ftmp\u002Fmain.c",[103,1351,1352],{"class":109}," \u003C\u003C",[103,1354,1355],{"class":113},"'EOF'\n",[103,1357,1358],{"class":105,"line":117},[103,1359,1360],{"class":113},"void    ft_print_comb(void);\n",[103,1362,1363],{"class":105,"line":124},[103,1364,121],{"emptyLinePlaceholder":120},[103,1366,1367],{"class":105,"line":131},[103,1368,1369],{"class":113},"int main(void)\n",[103,1371,1372],{"class":105,"line":137},[103,1373,179],{"class":113},[103,1375,1376],{"class":105,"line":143},[103,1377,1378],{"class":113},"    ft_print_comb();\n",[103,1380,1381],{"class":105,"line":149},[103,1382,1383],{"class":113},"    return (0);\n",[103,1385,1386],{"class":105,"line":176},[103,1387,211],{"class":113},[103,1389,1390],{"class":105,"line":182},[103,1391,1392],{"class":113},"EOF\n",[103,1394,1395,1398,1401,1404,1407,1410,1412,1415],{"class":105,"line":208},[103,1396,1397],{"class":158},"cc",[103,1399,1400],{"class":190}," -Wall",[103,1402,1403],{"class":190}," -Wextra",[103,1405,1406],{"class":190}," -Werror",[103,1408,1409],{"class":113}," ex05\u002Fft_print_comb.c",[103,1411,1349],{"class":113},[103,1413,1414],{"class":190}," -o",[103,1416,1417],{"class":113}," \u002Ftmp\u002Fex05\n",[103,1419,1420,1423,1425],{"class":105,"line":214},[103,1421,1422],{"class":158},"\u002Ftmp\u002Fex05",[103,1424,1346],{"class":109},[103,1426,1427],{"class":113}," \u002Ftmp\u002Fsalida.txt\n",[103,1429,1430,1433,1436],{"class":105,"line":219},[103,1431,1432],{"class":158},"wc",[103,1434,1435],{"class":190}," -c",[103,1437,1427],{"class":113},[17,1439,1440,1441,1444],{},"Compara contra la salida esperada con ",[48,1442,1443],{},"cmp",", que no imprime nada cuando los dos\narchivos son idénticos:",[94,1446,1448],{"className":1334,"code":1447,"language":1336,"meta":99,"style":99},"cmp \u002Ftmp\u002Fsalida.txt \u002Ftmp\u002Fesperado.txt\n",[48,1449,1450],{"__ignoreMap":99},[103,1451,1452,1454,1457],{"class":105,"line":106},[103,1453,1443],{"class":158},[103,1455,1456],{"class":113}," \u002Ftmp\u002Fsalida.txt",[103,1458,1459],{"class":113}," \u002Ftmp\u002Fesperado.txt\n",[89,1461,1463],{"id":1462},"descargar","Descargar",[1465,1466,1467],"ul",{},[1468,1469,1470],"li",{},[697,1471,1473],{"href":1472,"download":60},"..\u002Fcode\u002Fft_print_comb.c",[48,1474,60],{},[1476,1477,1478],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":99,"searchDepth":117,"depth":117,"links":1480},[1481,1482,1505,1507,1508,1509,1510,1511],{"id":91,"depth":117,"text":92},{"id":681,"depth":117,"text":682,"children":1483},[1484,1485,1486,1487,1488,1490,1491,1492,1493,1494,1495,1497,1499,1501,1502,1503,1504],{"id":686,"depth":124,"text":689},{"id":704,"depth":124,"text":707},{"id":720,"depth":124,"text":723},{"id":784,"depth":124,"text":787},{"id":816,"depth":124,"text":1489},"put_char(','); y put_char(' ');",{"id":833,"depth":124,"text":836},{"id":849,"depth":124,"text":852},{"id":858,"depth":124,"text":861},{"id":867,"depth":124,"text":870},{"id":882,"depth":124,"text":885},{"id":894,"depth":124,"text":1496},"a = '0'; y while (a \u003C= '7')",{"id":927,"depth":124,"text":1498},"b = a + 1; y while (b \u003C= '8')",{"id":965,"depth":124,"text":1500},"c = b + 1; y while (c \u003C= '9')",{"id":985,"depth":124,"text":988},{"id":994,"depth":124,"text":997},{"id":1009,"depth":124,"text":1012},{"id":1018,"depth":124,"text":1021},{"id":1043,"depth":117,"text":1506},"Por qué no hay ni un if de comparación",{"id":1135,"depth":117,"text":1136},{"id":1160,"depth":117,"text":1161},{"id":1223,"depth":117,"text":1224},{"id":1330,"depth":117,"text":1331},{"id":1462,"depth":117,"text":1463},"120 combinaciones de tres dígitos sin repeticiones ni separador de más.","md",{},"\u002Fex05",{"title":5,"description":1512},"ex05","gN3gobYcNCSKYbS6YjRAVcTKVhlNeI3CAIDS33iGJoU",1793539815758]