diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Copamire.py b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Copamire.py new file mode 100644 index 0000000000..0652542738 --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Copamire.py @@ -0,0 +1,29 @@ +# https://www.python.org + +#Comentario en una linea + +""" +Esto tambien es +un comentario +en varias lineas +""" + +''' +Esto tambien es +un comentario +varias lineas +''' + +my_variable = "Mi variable" +my_variable = "Nuevo valor de mi variable" + +MY_CONSTANT = "Mi constante" #por convención + +my_int = 1 +my_float = 1.5 +my_bool = True +my_bool = False +my_string = 'Mi cadena de texto' + + +print("¡Hola, Python!") diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Josue-py.py b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Josue-py.py new file mode 100644 index 0000000000..f2aa46c7bd --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Josue-py.py @@ -0,0 +1,25 @@ +# https://www.python.org/ + +# Con el numeral se escribe un comentario de una linea. + +""" + +Con tres comillas al principio, +y al final de el texto se pueden crear, +comentarios con varias lineas + +""" + +"""Hasta donde se, en python no existen constantes,todas las variables + se pueden modificar,segun tengo entendido""" + + +animal = "Perro" # Esto es una variable. +PI = 3.14 # Esto es una constante,su valor no puede variar mientras, la variable si + +number_int = 20 +number_float = 20.5 +boolean_data = number_int == number_float +string_data = "Break the ice!" + +print("¡Hola, Python!") \ No newline at end of file diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/javitron100.py b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/javitron100.py new file mode 100644 index 0000000000..90f68b7067 --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/javitron100.py @@ -0,0 +1,19 @@ +# https://www.python.org/ + +#Comentario en una línea + +""" +Comentario +en varias +lineas +""" + +mi_variable = 10 + +mi_entero = int() +mi_float = float() +mi_texto = str() +mi_booleano = bool() + +print("!Hola, Python!") + diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/steven9708m.py b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/steven9708m.py new file mode 100644 index 0000000000..ff84d337b5 --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/steven9708m.py @@ -0,0 +1,31 @@ +# https://www.python.org + +# Esto es un Comenatrio de una linea + +""" +Este es un comentario de varias líneas. +Puedes escribir tanto como necesites +dentro de estas comillas triples. +""" + +''' +Con estas otras comillas tambien puedo +colocar comentarios. +''' + +my_variable = "Variable de Prueba" + +MY_CONSTANT = "Mi constante que puede variar" + +my_int = 1 +my_float = 1.5 +my_bool = True +my_bool = False +my_string = "Mi cadena de texto" +my_other_string = 'Mi otra cadena de texto' +my_variable_bytes = b"Tipo de dato primitipo de Bytes" + + +#Impresion por consola + +print ("¡Hola, Phyton! . . . Steven a cumplido su tarea :)") \ No newline at end of file diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/typescript/NavarroEmiliano.ts b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/typescript/NavarroEmiliano.ts new file mode 100644 index 0000000000..cf58ad387c --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/typescript/NavarroEmiliano.ts @@ -0,0 +1,23 @@ +// https://www.typescriptlang.org/ + +// Single line comment +/* +Multi-line +comment +*/ + +// Way to declare variables and constants +let variable: string = 'I am a variable'; +const constante: string = 'I am a constant'; + +// Primitive data types +let typeNumber: number = 10; +let typeString: string = 'Hello'; +let typeBoolean: boolean = true; +let typeNull: null = null; +let typeUndefined: undefined = undefined; +let typeSymbol: symbol = Symbol('symbol'); +let typeBigInt: bigint = 10n; + +// Printing in the console +console.log('Hello, TypeScript!'); diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/java/Password1989.java b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/java/Password1989.java new file mode 100644 index 0000000000..10dacc55a1 --- /dev/null +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/java/Password1989.java @@ -0,0 +1,225 @@ +package org.roadmap.java.ejercicio.uno; + +public class Password1989 { + + public static void dificultadExtra() + { + /* + * Crea un programa que imprima por consola todos los números comprendidos + * entre 10 y 55 (incluidos), pares, y que no son ni el 16 ni múltiplos de 3 + * + */ + + int min = 10; + int max = 55; + + for (int i = 10; i <= max; i++) + { + if( (i%2==0) && (i!=16) && (i%3!= 0)) + { + System.out.println(String.format("El numero %s cumple las condiciones",i)); + } + } + } + public static void main(String[] args) { + /* + * EJERCICIO: + * - Crea ejemplos utilizando todos los tipos de operadores de tu lenguaje: + * Aritméticos, lógicos, de comparación, asignación, identidad, pertenencia, bits... + * (Ten en cuenta que cada lenguaje puede poseer unos diferentes) + * - Utilizando las operaciones con operadores que tú quieras, crea ejemplos + * que representen todos los tipos de estructuras de control que existan + * en tu lenguaje: + * Condicionales, iterativas, excepciones... + * - Debes hacer print por consola del resultado de todos los ejemplos. + * + * DIFICULTAD EXTRA (opcional): + * Crea un programa que imprima por consola todos los números comprendidos + * entre 10 y 55 (incluidos), pares, y que no son ni el 16 ni múltiplos de 3. + * + * Seguro que al revisar detenidamente las posibilidades has descubierto algo nuevo. + */ + + /* + * Operadores: + * Aritmeticos: Suma, Resta, Division, Producto + */ + + System.out.println(String.format("Suma 10+3= %s", 10+3)); + System.out.println(String.format("Resta 10-3= %s", 10-3)); + System.out.println(String.format("Division 10/3= %s", 10/3)); + System.out.println(String.format("Producto 10 x 3= %s", 10*3)); + System.out.println(String.format("Resto 10/3= %s", 10%3)); + //System.out.println(String.format("Exponente 10/3= %s", 10^3)); + + /* + * Operadores: + * Lógicos: disruptivos && || sin disrupción & | ^ + * + * && AND Logico + * || OR Logico + * Los operadores sin disrupción ejecutan todas las expresiones aun cuando el resultado sea claramente false o true. + * + */ + + /* + * Operadores: + * Comparativos: < > <= >= == != + * < menor a < b + * > mayor a > b + * <= menor igual a <= b + * >= mayor igual a >= b + * == igual a == b + * != distinto a != b + */ + + /* + * Operadores: + * Asignación: = --= += *= %= /= >= <=>>= <<= >>>= <<<= + * = Asignación a = b + * += Suma y asignación a += b (a=a + b) + * -= Resta y asignación a -= b (a=a - b) + * *= Multiplicación y asignación a *= b (a=a * b) + * /= División y asignación a / b (a=a / b) + * %= Módulo y asignación a % b (a=a % b) + */ + + int a = 5; + int b = 8; + + int ejemploAsignacion = 0; + + ejemploAsignacion += a; + + System.out.println(String.format("Resultado ejemplo: %s",ejemploAsignacion)); + + + ejemploAsignacion -= b; + + System.out.println(String.format("Resultado ejemplo: %s",ejemploAsignacion)); + + ejemploAsignacion *= a; + + System.out.println(String.format("Resultado ejemplo: %s",ejemploAsignacion)); + + ejemploAsignacion /= b; + + System.out.println(String.format("Resultado ejemplo: %s",ejemploAsignacion)); + + ejemploAsignacion %= a; + + System.out.println(String.format("Resultado ejemplo: %s",ejemploAsignacion)); + + /* + * Operadores: + * Incremento: a++ (postincremento) y ++a (preincremento) + * Decremento: a-- (postdecremento) y --a (predecremento) + * + */ + + int j = 0; + + System.out.println(String.format("EjemploIncremento: %s",j)); + + System.out.println(String.format("J vale: %s, EjemploPOSTIncremento: %s",j,j++)); + System.out.println(String.format("J vale: %s, EjemploPREIncremento: %s",j,++j)); + System.out.println(String.format("J vale: %s, EjemploPOSTDecremento: %s",j,j--)); + System.out.println(String.format("J vale: %s, EjemploPREDecremento: %s",j,--j)); + + /* + * Operadores: + * Ternario: x == y ? x: y; + * + * Si se cumple la primera parte, x valdrá x si no, valdrá y + */ + + int x = 10; + int y = 20; + + System.out.println(x == y ? x: y); + + /* + * Operadores: + * Bit: ^ ! & ~ << >> <<< >>> + * + */ + + /* + * Estructuras de control: Condicionales, iterativas, excepciones + * IF: + * La sentencia if permite llevar a cabo la ejecución condicional de sentencias. + * Se ejecutan las sentencias si al evaluar la expresión se obtiene un valor booleano true. + * + */ + + boolean condicion = true; + if (condicion) + { + System.out.println("True"); + } + else + System.out.println("False"); + + /* + * SWITCH: + * La sentencia switch en la que se indican los posibles valores que puede tomar la variable y las sentencias que se tienen que ejecutar + * sí es que la variable coincide con alguno de dichos valores. + * Cada case ejecutará las sentencias correspondientes, con base en el valor de la variable, que deberá de evaluarse con valores de tipo byte, char, short o int. + * Si el valor de la variable no coincide con ningún valor, entonces se ejecutan las sentencias por default, sí es que las hay. + * La sentencia break al final de cada case transfiere el control al final de la sentencia switch; de esta manera, cada vez que se ejecuta un case todos los enunciados case restantes son ignorados y termina la operación del switch. + * + * + */ + + String cadena = "salir"; + + switch (cadena) + { + case "salir": + System.out.println(cadena); + break; + default: + System.out.println("default"); + break; + } + + /* + * FOR: + * + */ + + for (int iterador=0; iterador < 5; iterador++) + { + System.out.println(iterador); + } + + /* + * WHILE: + * + */ + + boolean condicionWhile = true; + while (condicionWhile) { + System.out.println(condicionWhile); + condicionWhile = false; + } + + /* + * DO WHILE: + * + */ + + do { + System.out.println(condicionWhile); + condicionWhile = false; + } while (condicionWhile); + + /* + * BREAK; CONTINUE; RETURN; + * + */ + + //dificultadExtra(); + } + +} diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/javascript/Erysnell.js b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/javascript/Erysnell.js new file mode 100644 index 0000000000..04a44a6371 --- /dev/null +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/javascript/Erysnell.js @@ -0,0 +1,99 @@ +// Aritméticos +console.log(5 + 3); +console.log(7 - 2); +console.log(4 * 6); +console.log(9 % 4); + +// Lógicos +let x = true; +let y = false; + +console.log(x && y); +console.log(x || y); +console.log(!x); + +// Comparación +console.log(5 > 3); +console.log(3 < 5); +console.log(5 >= 3); +console.log(3 <= 5); +console.log(5 == 3); +console.log(5 != 3); +console.log(5 === 3); +console.log(5 !== 3); + +// Asignación +let z = 0; +z += 5; +z -= 3; +z *= 2; +z /= 2; + +// Identidad +console.log(z === z); + +// Pertenencia +const array = [1, 2, 3, 4, 5]; +console.log(array.includes(3)); + +// Bits +console.log(5 & 3); +console.log(5 | 3); +console.log(~5); + +// Condicionales +if (true) { + console.log("Esta es una condición verdadera"); +} else { + console.log("Esta es una condición falsa"); +} + +switch (2) { + case 1: + console.log("Es 1"); + break; + case 2: + console.log("Es 2"); + break; + default: + console.log("No es 1 ni 2"); +} + +// Iterativas +for (let i = 0; i < 5; i++) { + console.log(i); +} + +while (true) { + console.log("Este bucle mientras sea cierto"); + break; // Para evitar un bucle infinito +} + +do { + console.log("Este bucle se ejecuta al menos una vez"); +} while (false); + +// Excepciones +try { + throw new Error("Excepción lanzada intencionalmente"); +} catch (error) { + console.error(error.message); +} + +function isEven(num) { + return num % 2 === 0; +} + +function isNotMultipleOfThree(num) { + return num % 3 !== 0; +} + +function isNotSixteen(num) { + return num !== 16; +} + +for (let i = 10; i <= 55; i++) { + if (isEven(i) && isNotMultipleOfThree(i) && isNotSixteen(i)) { + console.log(i); + } +} diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/Josue-py.py b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/Josue-py.py new file mode 100644 index 0000000000..c09d8f4699 --- /dev/null +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/Josue-py.py @@ -0,0 +1,123 @@ +""" +Operadores +""" + +def operadores_aritmeticos(a,b): + print(f"Este es el operador de suma '+'\nmira el resultado de a y b de los dos numeros que proporcionaste: {a + b}") + print(f"Este es el operador de resta '-'\nmira el resultado de a y b de los dos numeros que proporcionaste: {a - b}") + print(f"Este es el operador de multiplicacion '*'\nmira el resultado de a y b de los dos numeros que proporcionaste: {a * b}") + print(f"Este es el operador de division '/'\nmira el resultado de a y b de los dos numeros que proporcionaste: {a / b}") + print(f"Este es el operador de potencia '**'\nmira el resultado de a y b de los dos numeros que proporcionaste: {a ** b}") + print(f"Este es el operador llamado modulo '%'\nmira el resultado de a y b de los dos numeros que proporcionaste: {a % b}") + print(f"Este es el operador de division entera '//' \nmira el resultado de a y b de los dos numeros que proporcionaste: {a // b}") +operadores_aritmeticos(20,80) # coloca dos numeros que quieras + +# Operadores logicos: son and,or y not + +def operadores_logicos(x,y): + print(x==y and x > y) + print(x >= y or x != y) + print(not(x < y and x == y)) + +operadores_logicos(40,50) + +#Operadores de comparacion: + +def operadores_de_comparacion(a,b): + print(f"IGUAL: a == b, seran iguales? {a==b}") + print(f"DIFERENTE: a != b, seran distintos? {a != b} ") + print(f"Mayor: a > b,es 'a' mayor que b? {a > b}") + print(f"Menor: a < b es 'a' menor que b? {a < b}") + print(f"Menor o igual: a <= b es 'a' menor o igual que 'b'? {a <= b}") + print(f"Mayor o igual: a >= b es 'a' mayor o igual que 'b'? {a <= b}") + +operadores_de_comparacion(90,50) + +# Operadores de asignacion + +a = 5 +a += 3 +print(f"Suma y asignación (a += 3): {a}") +a -= 2 +print(f"Resta y asignación (a -= 2): {a}") +a *= 4 +print(f"Multiplicación y asignación (a *= 4): {a}") +a /= 2 +print(f"División y asignación (a /= 2): {a}") +a **= 2 +print(f"Potencia y asignación (a **= 2): {a}") +a //= 3 +print(f"División entera y asignación (a //= 3): {a}") +a %= 2 +print(f"Módulo y asignación (a %= 2): {a}") + +# Operadores de identidad: son is y is not,algo parecidos a los de comparacion + +def operadores_de_identidad(a,b): + print(f"'is' me devuelve true si estos son iguales,sera cierto que {a} is {b}? {a is b}") + print(f"'is not' me devuelve true si estos son diferentes,sera cierto que {a} is not {b}? {a is not b}") +operadores_de_identidad('HOLA','HUESO') + +# Operadores de pertenencia: in y not in + +def operadores_de_pertenencia(a,b): + print(f" '{a} in {b}' in devolvera True si '{a}' no esta en la frase {b}, veamos si es cierto {a in b}") + print(f" '{a} not in {b}' not in devolvera True si '{a}' no esta en la frase {b}, veamos si es cierto {a not in b}") + +operadores_de_pertenencia("a","barcelona") + +def operadores_de_bit(a,b): # Parecidos a los operadores logicos + print(f"AND: {a} & {b} = {a & b} ") + print(f"OR: {a} | {b} = {a | b} ") # + print(f"XOR: {a} ^ {b} = {a ^ b} ") + print(f"NOT: ~{a} = {~a}") + print(f"Desplazamiento a la derecha: {a} >> {b} = {a >> b} ") + print(f"Desplazamiento a la izquierda: {a} << {b} = {a << b} ") + +operadores_de_bit(10,3) + +""" +Estructuras de control +""" + +# Estructura de control condicional +def condicionales(): + prompt1 = input("escriba un numero: ") + prompt2 = input("Escriba otro numero: ") + if prompt1 < prompt2: + print(f" Si {prompt1} es menor que {prompt2}") + elif prompt1 > prompt2: + print(f" en este caso {prompt1} es mayor que {prompt1}") + else: + print("los numeros son iguales") +condicionales() + +# Iterativas +for i in range (6): + print("Hola Brais,esto es un bucle for") + +n = 20 +while n != 3: + print(n) + n -= 1 + +# excepciones +try: + print(0/0) +except: + print("Hay un error") +finally: + print("Como vas a dividr 0/0?") +""" +EXTRA +""" + +for j in range(9,56): + if j == 16: + continue + elif j % 3 == 0: + print(j) + else: + continue + +print("WALAAAAAAA!") \ No newline at end of file diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/steven9708m.py b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/steven9708m.py new file mode 100644 index 0000000000..76e8749484 --- /dev/null +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/steven9708m.py @@ -0,0 +1,146 @@ +""" +Crea ejemplos utilizando todos los tipos de operadores de tu lenguaje: +Aritméticos, lógicos, de comparación, asignación, identidad, pertenencia, bits... +(Ten en cuenta que cada lenguaje puede poseer unos diferentes) + """ + # 1. Operadores aritméticos + +from pickletools import pystring + +num1 = 8 +num2 = 6 + +print(f"Suma: 8 + 6 = {num1 + num2}") #SUMA +print (f"Resta: 8 - 6 = {num1 - num2}") #RESTA +print (f"Multiplicacion: 8 * 6 = {num1 * num2}") # Multiplicacion +print (f"Division: 8 / 6 = {num1 / num2}") # DIVISION DECIMALES +print (f"Division: 8 // 6 = {num1 // num2}") # DIVISION ENTERA +print (f"Resto de Division: 8 % 6 = {num1 % num2}") # MODULO (Resto de una division) +print (f"Potencia: 8 ** 6 = {num1 ** num2}") # Potencia + +# 2. Operadores de comparación + +print (f"Igual A: 8 == 6 = {num1==num2}") # Igual A +print (f"Distinto de: 8 != 6 = {num1 != num2}") # Distinto De +print (f"Mayor que: 8 > 6 = {num1 > num2}") # Mayor que +print (f"Menor que: 8 < 6 = {num1 < num2}") # Menor que +print (f"Mayor o Igual que: 8 >= 6 = {num1 >= num2}") # Mayor o Igual que +print (f"Menor o Igual que: 8 <= 6 = {num1 <= num2}") # Menor o Igual que + +# 3. Operadores lógicos + +print (f"And: 8 * 6 == 48 AND 48 < 52 es {num1*num2==48 and 48<52}") #TRUE +print (f"OR: 8 * 6 == 48 OR 48 > 52 es {num1*num2==48 or 48<52}") #TRUE +print (f"NOT: not 8 * 6 == 46 es {not num1*num2==46}") #TRUE + +# 3. Operadores de asignación + +S = 8 +print(f"La letra S es = {S}") +S += 4 +print(f"Suma y Asignacion = {S}") +S -= 2 +print(f"Resta y Asignacion = {S}") +S *= 3 +print(f"Multiplicacion y Asignacion = {S}") +S /= 10 +print(f"Division y Asignacion = {S}") +S %= 5 +print(f"Modulo y Asignacion = {S}") +S **= 4 +print(f"Potencia y Asignacion = {S}") +S //= 4 +print(f"Division Entera y Asignacion = {S}") + +# 4. Operadores de identidad +SM=20.0 +print(f"S is SM es: {S is SM}") +print(f"S is not SM es: {S is not SM}") + +# 5. Operadores de Pertenecia + +print(f"'A' in 'Steven' es: {'A' in 'Steven'}") +print(f"'A' not in 'Steven' es: {'A' not in 'Steven'}") + +# 6. Operadores bit a bit + +x = 15 # 1111 +y = 10 # 1010 + +print(f"AND: 15 & 10 = {15 & 10}") # 1010 +print(f"OR: 15 | 10 = {15 | 10}") # 1111 +print(f"XOR: 15 ^ 10 = {15 ^ 10}") # 0101 +print(f"NOT: ~15 = {~15}") +print(f"Desplazamiento a la Derecha: 10 >> 2 = {10 >> 2}") +print(f"Desplazamiento a la Izquierda: 10 << 2 = {10 << 2}") + + +''' +ESTRUCTURAS DE CONTROL +''' + +#CONDICIONALES + +my_string = "Miranda" + +if my_string == "Miranda": + print ("My_String es 'Miranda'") +elif my_string == "Romero": + print ("My_String es 'Romero'") +else: + print ("My_String No es 'Miranda' ni 'Romero'") + +# Iterativas + +for i in range (11): + print (i) + +i = 0 + +while i <= 10: + print(i) + i += 1 + +# MANEJO DE EXCEPCIONES + +try: + print (10/0) + +except: + print ("Se ha producido un error") + +finally: + print ("Ha finalizadp el manejo de excepciones") + +''' + +DIFICULTAD EXTRA (opcional): + * Crea un programa que imprima por consola todos los números comprendidos + * entre 10 y 55 (incluidos), pares, y que no son ni el 16 ni múltiplos de 3. + +''' + +for number in range (10,56): + if number % 2 == 0 and number != 16 and number % 3 != 0: + print (number) + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/typescript/NavarroEmiliano.ts b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/typescript/NavarroEmiliano.ts new file mode 100644 index 0000000000..d357fded43 --- /dev/null +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/typescript/NavarroEmiliano.ts @@ -0,0 +1,334 @@ +/* =============Arithmetic operators ============= */ +let num1: number = 10; +let num2: number = 5; + +//Addition operator +let sum: number = num1 + num2; // 15 + +//Subtraction operator +let difference: number = num1 - num2; // 5 + +//Multiplication operator +let product: number = num1 * num2; // 50 + +//Division operator +let quotient: number = num1 / num2; // 2 + +//Modulus operator +let remainder: number = num1 % num2; // 0 + +//Exponentiation operator +let power: number = num1 ** num2; // 100000 + +//Increment operator +let postIncrement: number = num1++; // Returns the value of num1 (10), then increments num1 by 1 (11) +let preIncrement: number = ++num1; // Increments num1 by 1 (12), then returns the value of num1 (12) + +//Decrement operator +let postDecrement: number = num1--; // Returns the value of num1 (12), then decrements num1 by 1 (11) +let preDecrement: number = --num1; // Decrements num1 by 1 (10), then returns the value of num1 (10) + +//Unary plus operator +let unaryPlus: number = +num1; // Try to convert num1 to a number if possible, otherwise returns NaN + +//Unary minus operator +let unaryMinus: number = -num1; // Try to convert num1 to a number if possible, then negates it finally returns the value or NaN + +/* =============Logical operators ============= */ +let isTrue: boolean = true; +let isFalse: boolean = false; + +// Logical AND operator (&&) +// The logical AND operator (&&) evaluates operands from left to right. +// 1. If both operands are true, it returns true. +// 2. If any operand is false, it returns false. +// 3. If the first operand is falsy, it returns that value without evaluating the second operand (short-circuit). +// 4. If the first operand is truthy, it returns the value of the second operand. + +// Behavior with boolean values: +let andResult1: boolean = true && true; // true +let andResult2: boolean = true && false; // false +let andResult3: boolean = false && true; // false +let andResult4: boolean = false && false; // false + +// Short-circuit evaluation and non-boolean values: +let andShortCircuit1: any = 0 && 'hello'; // 0 (falsy, short-circuits) +let andShortCircuit2: any = 1 && 'hello'; // "hello" +let andShortCircuit3: any = 'hello' && 0; // 0 +let andShortCircuit4: any = null && undefined; // null (falsy, short-circuits) + +// Truthy and falsy values: +// Falsy: false, 0, -0, 0n, "", null, undefined, NaN +// Truthy: Everything else, including "0", "false", [], {}, function(){} + +// Type coercion: +let andCoercion1: any = '5' && 2; // 2 (string "5" is truthy) +let andCoercion2: any = [] && 'hello'; // "hello" (empty array is truthy) + +// In this specific case: +let andResult: boolean = isTrue && isFalse; // false (because isFalse is false) + +// Note: When used with boolean operands, && always returns a boolean. +// When used with non-boolean operands, it may return a non-boolean value. + +//Logical OR operator +let orResult: boolean = isTrue || isFalse; // true + +// Logical OR operator (||) +// The logical OR operator (||) evaluates operands from left to right. +// 1. If either operand is true, it returns true. +// 2. If both operands are false, it returns false. +// 3. If the first operand is truthy, it returns that value without evaluating the second operand (short-circuit). +// 4. If the first operand is falsy, it returns the value of the second operand. + +// Behavior with boolean values: +let orResult1: boolean = true || true; // true +let orResult2: boolean = true || false; // true +let orResult3: boolean = false || true; // true +let orResult4: boolean = false || false; // false + +// Short-circuit evaluation and non-boolean values: +let orShortCircuit1: any = 1 || 'hello'; // 1 (truthy, short-circuits) +let orShortCircuit2: any = 0 || 'hello'; // "hello" +let orShortCircuit3: any = 'hello' || 0; // "hello" (truthy, short-circuits) +let orShortCircuit4: any = null || undefined; // undefined + +// Truthy and falsy values: +// Falsy: false, 0, -0, 0n, "", null, undefined, NaN +// Truthy: Everything else, including "0", "false", [], {}, function(){} + +// Type coercion: +let orCoercion1: any = '' || 2; // 2 (empty string is falsy) +let orCoercion2: any = [] || 'hello'; // [] (empty array is truthy, short-circuits) + +// In this specific case: +let orResultFinal: boolean = isTrue || isFalse; // true (because isTrue is true) + +// Note: When used with boolean operands, || always returns a boolean. +// When used with non-boolean operands, it may return a non-boolean value. + +//Logical NOT operator +let notResult: boolean = !isTrue; // false + +//Logical NOT operator (!) +// The logical NOT operator (!) converts its operand to a boolean value and returns the opposite value. +// 1. If the operand is truthy, it returns false. +// 2. If the operand is falsy, it returns true. + +/* ============= Comparison operators ============= */ + +// num1 = 10; num2 = 5; +let comparison1: boolean = num1 == num2; // false -- returns true if the values are the same +let comparison2: boolean = num1 != num2; // true -- returns true if the values are not the same +let comparison3: boolean = num1 === num2; // false -- returns true if the values are the same and of the same type +let comparison4: boolean = num1 !== num2; // true -- returns true if the values are not the same or of different type +let comparison5: boolean = num1 > num2; // true -- returns true if num1 is greater than num2 +let comparison6: boolean = num1 < num2; // false -- returns true if num1 is less than num2 +let comparison7: boolean = num1 >= num2; // true -- returns true if num1 is greater than or equal to num2 +let comparison8: boolean = num1 <= num2; // false -- returns true if num1 is less than or equal to num2 + +/* ============= Assignment operators ============= */ + +// Assignment operators + +let x: number = 10; +x += 5; // x = x + 5; // Adds 5 to x and assigns the result to x +x -= 3; // x = x - 3; // Subtracts 3 from x and assigns the result to x +x *= 2; // x = x * 2; // Multiplies x by 2 and assigns the result to x +x /= 4; // x = x / 4; // Divides x by 4 and assigns the result to x +x %= 3; // x = x % 3; // Calculates the remainder when x is divided by 3 and assigns it to x +x **= 2; // x = x ** 2; // Raises x to the power of 2 and assigns the result to x + +let y: number = 5; +y <<= 1; // y = y << 1; // Left shifts y by 1 bit and assigns the result to y +y >>= 1; // y = y >> 1; // Right shifts y by 1 bit and assigns the result to y +y >>>= 1; // y = y >>> 1; // Unsigned right shifts y by 1 bit and assigns the result to y + +let z: number = 7; +z &= 3; // z = z & 3; // Performs bitwise AND on z and 3, assigns the result to z +z |= 4; // z = z | 4; // Performs bitwise OR on z and 4, assigns the result to z +z ^= 2; // z = z ^ 2; // Performs bitwise XOR on z and 2, assigns the result to z + +let str: string = 'Hello'; +str += ' World'; // str = str + " World"; // Concatenates " World" to str and assigns the result to str + +/* ============= Belonging operators ============= */ + +// in operator (for objects and arrays) +let person = { name: 'John', age: 30 }; +let car = ['Toyota', 'Honda', 'Ford']; + +console.log('name' in person); // true +console.log('color' in person); // false +console.log(0 in car); // true (0 is a valid index) +console.log(3 in car); // false (index 3 doesn't exist) + +// instanceof operator (for objects) +class Animal {} +class Dog extends Animal {} + +let myDog = new Dog(); + +console.log(myDog instanceof Dog); // true +console.log(myDog instanceof Animal); // true +console.log(myDog instanceof Object); // true + +// Array.includes() method (for arrays) +let fruits = ['apple', 'banana', 'orange']; + +console.log(fruits.includes('banana')); // true +console.log(fruits.includes('grape')); // false + +// Object.hasOwnProperty() method (for objects) +let book = { title: 'TypeScript Guide', pages: 200 }; + +console.log(book.hasOwnProperty('title')); // true +console.log(book.hasOwnProperty('author')); // false + +// String.includes() method (for strings) +let sentence = 'The quick brown fox jumps over the lazy dog'; + +console.log(sentence.includes('fox')); // true +console.log(sentence.includes('cat')); // false + +/* ============= Bitwise operators ============= */ + +// Bitwise AND (&) +// Performs a bitwise AND operation on each pair of bits +let a: number = 5; // 0101 in binary +let b: number = 3; // 0011 in binary +console.log(a & b); // 0001 in binary, outputs 1 + +// Bitwise OR (|) +// Performs a bitwise OR operation on each pair of bits +console.log(a | b); // 0111 in binary, outputs 7 + +// Bitwise XOR (^) +// Performs a bitwise XOR operation on each pair of bits +console.log(a ^ b); // 0110 in binary, outputs 6 + +// Bitwise NOT (~) +// Inverts all the bits in a single number +console.log(~a); // 1010 in binary, outputs -6 (due to two's complement) + +// Left shift (<<) +// Shifts the bits of the first operand left by the number of places specified in the second operand +console.log(a << 1); // 1010 in binary, outputs 10 + +// Sign-propagating right shift (>>) +// Shifts the bits of the first operand right by the number of places specified in the second operand +console.log(a >> 1); // 0010 in binary, outputs 2 + +// Zero-fill right shift (>>>) +// Shifts the bits of the first operand right by the number of places specified in the second operand, and shifts in zeros from the left +let c: number = -5; // 11111111111111111111111111111011 in binary (32-bit) +console.log(c >>> 1); // 01111111111111111111111111111101 in binary, outputs 2147483645 + +/* ============= Control structures ============= */ +//if statement +if (2 > 1) { + console.log('2 is greater than 1'); +} + +//if else statement +if (10 > 5) { + console.log('10 is greater than 5'); +} else { + console.log('x is equal to 5'); +} + +//if else if statement + +if (10 > 5) { + console.log('10 is greater than 5'); +} else if (10 < 5) { + console.log('10 is less than 5'); +} else { + console.log('10 is equal to 5'); +} + +//switch statement +let day: number = 3; + +switch (day) { + case 1: + console.log('Monday'); + break; + case 2: + console.log('Tuesday'); + break; +} + +//iterative statement +for (let i: number = 0; i < 10; i++) { + console.log(i); +} + +//while statement +let i: number = 0; +while (i < 10) { + console.log(i); + i++; +} + +//do while statement +let j: number = 0; +do { + console.log(j); + j++; +} while (j < 10); + +//for of statement +let colors: string[] = ['red', 'green', 'blue']; + +for (let color of colors) { + console.log(color); +} + +//for in statement +let student: { name: string; age: number } = { name: 'John', age: 30 }; + +for (let key in student) { + console.log(key); +} + +// exception handling +try { + throw new Error('This is a test error'); +} catch (error) { + console.log(error); +} + +// finally statement +try { + throw new Error('This is a test error'); +} catch (error) { + console.log(error); +} finally { + console.log('This is the finally block'); +} + +// throw statement +//throw new Error('This is a test error'); + +/* ============= Optional Programming ============= */ + +let myNumber: number = 10; + +while (myNumber <= 55 ) { + const isMultipleOfThree: boolean = myNumber % 3 === 0; + const isPair: boolean = myNumber % 2 === 0; + const notSixteen: boolean = myNumber !== 16; + + if(!isMultipleOfThree && notSixteen && isPair){ + console.log(myNumber); + } + myNumber++; +} + +// Output array: [10, 14, 20, 22, 26, 28, 32, 34, 38, 40, 44, 46, 50, 52] + + + + + diff --git a/Roadmap/02 - FUNCIONES Y ALCANCE/java/Password1989.java b/Roadmap/02 - FUNCIONES Y ALCANCE/java/Password1989.java new file mode 100644 index 0000000000..8565690be0 --- /dev/null +++ b/Roadmap/02 - FUNCIONES Y ALCANCE/java/Password1989.java @@ -0,0 +1,102 @@ +package org.roadmap.java.ejercicio.dos; + +public class Password1989 { + public static void sinRetorno() + { + System.out.println("Sin retorno"); + } + + public static int devuelveEntero() + { + return 0; + } + + public static void sinRetornoConParametro(String cadena1) + { + System.out.println("cadena1"); + } + + public static void funcion1() + { + /* ERROR + public static int funcion2() { + System.out.println("F2"); + } + */ + } + + public static int dificultadExtra(String cadena1, String cadena2) + { + /* + * DIFICULTAD EXTRA (opcional): + * Crea una función que reciba dos parámetros de tipo cadena de texto y retorne un número. + * - La función imprime todos los números del 1 al 100. Teniendo en cuenta que: + * - Si el número es múltiplo de 3, muestra la cadena de texto del primer parámetro. + * - Si el número es múltiplo de 5, muestra la cadena de texto del segundo parámetro. + * - Si el número es múltiplo de 3 y de 5, muestra las dos cadenas de texto concatenadas. + * - La función retorna el número de veces que se ha impreso el número en lugar de los textos. + * + */ + int resultado = 0; + + try { + for (int i = 1; i <= 100; i++) + { + if ((i%3==0) && (i%5==0)) + { + System.out.println("i:" + i + "-Cadenas:" + cadena1+cadena2); + resultado++; + } + else if(i%3==0) + { + System.out.println("i:" + i + "-Cadenas:" + cadena1); + resultado++; + } + else if(i%5==0) + { + System.out.println("i:" + i + "-Cadenas:" + cadena2); + resultado++; + } + + } + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + return resultado; + } + public static void main(String[] args) { + /* + * EJERCICIO: + * - Crea ejemplos de funciones básicas que representen las diferentes + * posibilidades del lenguaje: + * Sin parámetros ni retorno, con uno o varios parámetros, con retorno... + * - Comprueba si puedes crear funciones dentro de funciones. + * - Utiliza algún ejemplo de funciones ya creadas en el lenguaje. + * - Pon a prueba el concepto de variable LOCAL y GLOBAL. + * - Debes hacer print por consola del resultado de todos los ejemplos. + * (y tener en cuenta que cada lenguaje puede poseer más o menos posibilidades) + * + * DIFICULTAD EXTRA (opcional): + * Crea una función que reciba dos parámetros de tipo cadena de texto y retorne un número. + * - La función imprime todos los números del 1 al 100. Teniendo en cuenta que: + * - Si el número es múltiplo de 3, muestra la cadena de texto del primer parámetro. + * - Si el número es múltiplo de 5, muestra la cadena de texto del segundo parámetro. + * - Si el número es múltiplo de 3 y de 5, muestra las dos cadenas de texto concatenadas. + * - La función retorna el número de veces que se ha impreso el número en lugar de los textos. + * + * Presta especial atención a la sintaxis que debes utilizar en cada uno de los casos. + * Cada lenguaje sigue una convenciones que debes de respetar para que el código se entienda. + * + * + * El título de la Pull Request también debe seguir este formato: "#[número] - [lenguaje_utilizado]". + * En el ejemplo anterior sería "#00 - Python". + * + * En mi caso seria: "#02 - Java" + */ + int nVeces; + System.out.println(String.format("Se han escrito las cadenas %s veces", nVeces = dificultadExtra("cadena1", "cadena2"))); + + } + +} diff --git a/Roadmap/02 - FUNCIONES Y ALCANCE/python/ggtorca.py b/Roadmap/02 - FUNCIONES Y ALCANCE/python/ggtorca.py new file mode 100644 index 0000000000..592d200992 --- /dev/null +++ b/Roadmap/02 - FUNCIONES Y ALCANCE/python/ggtorca.py @@ -0,0 +1,146 @@ +''' +/* + * EJERCICIO: + * - Crea ejemplos de funciones básicas que representen las diferentes + * posibilidades del lenguaje: + * Sin parámetros ni retorno, con uno o varios parámetros, con retorno... + * - Comprueba si puedes crear funciones dentro de funciones. + * - Utiliza algún ejemplo de funciones ya creadas en el lenguaje. + * - Pon a prueba el concepto de variable LOCAL y GLOBAL. + * - Debes hacer print por consola del resultado de todos los ejemplos. + * (y tener en cuenta que cada lenguaje puede poseer más o menos posibilidades) + * + * DIFICULTAD EXTRA (opcional): + * Crea una función que reciba dos parámetros de tipo cadena de texto y retorne un número. + * - La función imprime todos los números del 1 al 100. Teniendo en cuenta que: + * - Si el número es múltiplo de 3, muestra la cadena de texto del primer parámetro. + * - Si el número es múltiplo de 5, muestra la cadena de texto del segundo parámetro. + * - Si el número es múltiplo de 3 y de 5, muestra las dos cadenas de texto concatenadas. + * - La función retorna el número de veces que se ha impreso el número en lugar de los textos. + * + * Presta especial atención a la sintaxis que debes utilizar en cada uno de los casos. + * Cada lenguaje sigue una convenciones que debes de respetar para que el código se entienda. + */ + ''' +print("Ejercicio #02 - Funciones y Alcance") +print("-----------------------------------") +print("") + +#Funcion sin parámetros ni retorno + +def holaMundo(): + print("Hola mundo!") + +print("Funcion sin parámetros ni retorno") +print("") +holaMundo() #Llamada a la función, se imprime "Hola mundo!" +print("") + +#Funcion con un parametro + +def holaPersona(nombre): + print("Hola " +nombre +"!") + +print("Funcion con un parametro") +print("") +holaPersona("Pedro") #Llamada a la función, se imprime "Hola Pedro!" +print("") + +#Funcion con varios parametros y retorno + +def multiplicacion (val1, val2): + return val1 * val2 + +print("Funcion con varios parametros") +print("") + +val1 = int(input("Introduce el primer valor: ")) + +val2 = int(input("Introduce el segundo valor: ")) + + +print(f"\nEl resultado de la multiplicación es: {multiplicacion (val1, val2)}") #Llamada a la función, se imprime el resultado de multiplicacion. + +#¿Se pueden crear funciones dentro de funciones? + +def funcionPrincipal(x, y): + def funcionInterna(y): + return y + y + return funcionInterna(x) * y + +x = int(input("Establece el valor de x: ")) +y = int(input("Establece el valor de y: ")) + +resultadoOperacion = funcionPrincipal(x, y) + +print(f"\n El resutlado final es: {resultadoOperacion}") #Llamada a la función, se imprime el resultado de x*(y+y) + +#Funciones propias del lenguaje + +#len() +palabra = "aerodromo" +longitud =len(palabra) + +print(longitud) #Imprime la longitud de la palabra "aerodromo" + +#type() +print(type(24)) #Imprime que es un int +print(type("reactor")) #Imprime que es un string + +#range() +for i in range(4): + print (i) # Imprime una lista del 0 al 3 + +#sum() +numeros = [10, 20, 30] +total = sum(numeros) +print(total) #Imprime el total de la suma de los numeros establecidos previamente + +#Variables LOCALES y GLOBALES + +#Variable LOCAL + +def sumar (a, b): + total = a + b #total es una variable local ya que unicamente es accesible dentro de la funcion sumar + return total +print(sumar(1, 2)) + +#Variable GLOBAL +contador = 0 # La variable contador se declara fuera de una funcion +def incrementar(): + global contador # Se establece que se va a usar la variable global "contador" + contador += 1 + +def imprimirContador(): + print(contador) + +print(f"el contador esta a {contador}") +vecesIncrementar = int(input("Cuantas veces quieres incrementar el contador? ")) +for i in range(vecesIncrementar): + incrementar() +print(f"\n El contador ahora está a ", end="") + +imprimirContador() + +#Dificultad extra + +def dificultadExtra(cadena1, cadena2): + contarNumeros = 0 + + for numero in range(1, 101): + if numero % 3 == 0 & numero % 5 == 0: + print(cadena1 + cadena2) + elif numero % 3 == 0: + print(cadena1) + elif numero % 5 == 0: + print(cadena2) + else: + print(numero) + contarNumeros += 1 + + return contarNumeros +cadena1 = "hey" +cadena2 = "ho" +resultado = dificultadExtra(cadena1, cadena2) + +print(f"Se imprimio un numero {resultado} veces") \ No newline at end of file diff --git a/Roadmap/09 - HERENCIA/java/JesusAntonioEEscamilla.java b/Roadmap/09 - HERENCIA/java/JesusAntonioEEscamilla.java new file mode 100644 index 0000000000..f4d20c31a8 --- /dev/null +++ b/Roadmap/09 - HERENCIA/java/JesusAntonioEEscamilla.java @@ -0,0 +1,87 @@ + + +/** #09 - Java -> Jesus Antonio Escamilla */ + +public class JesusAntonioEEscamilla { + public static void main(String[] args) { + //---EJERCIÓ--- + Animal perro = new Perro(); + Animal gato = new Gato(); + Animal pajaro = new Pajaro(); + + System.out.println("Herencia"); + imprimirSonido(perro); + imprimirSonido(gato); + imprimirSonido(pajaro); + + System.out.println("\n"); + + System.out.println("Extra Métodos"); + // Extra: Mostrar acciones adicionales + ((Perro) perro).correr(); + ((Gato) gato).cazar(); + ((Pajaro) pajaro).volar(); + //---EXTRA--- + // Pendiente + } + + //---EJERCIÓ--- + // Superclase Animal + static class Animal { + public void hacerSonido(){ + System.out.println("El animal hace ruido"); + } + } + + // Subclases Perro + static class Perro extends Animal { + @Override + public void hacerSonido(){ + System.out.println("El perro ladra: ¡Guau Guau!"); + } + + // Método adicional para perro + public void correr(){ + System.out.println("Esta corriendo felizmente"); + } + } + + // Subclases Gato + static class Gato extends Animal { + @Override + public void hacerSonido(){ + System.out.println("El gato maúlla: ¡Miau Miau!"); + } + + // Método adicional para gato + public void cazar(){ + System.out.println("Esta cazando un ratón"); + } + } + + // Nueva Subclases Pájaro + static class Pajaro extends Animal { + @Override + public void hacerSonido(){ + System.out.println("El pájaro canta: ¡Pio Pio!"); + } + + // Método adicional para gato + public void volar(){ + System.out.println("Esta volando alto en el cielo"); + } + } + + // Función que recibe un objeto de tipo Animal y llama a su método hacerSonido + public static void imprimirSonido(Animal animal){ + animal.hacerSonido(); + } + + + + /**-----DIFICULTAD EXTRA-----*/ + + // Pendientes + + /**-----DIFICULTAD EXTRA-----*/ +} \ No newline at end of file diff --git a/Roadmap/09 - HERENCIA/python/JesusAntonioEEscamilla.py b/Roadmap/09 - HERENCIA/python/JesusAntonioEEscamilla.py new file mode 100644 index 0000000000..2c24ee2c73 --- /dev/null +++ b/Roadmap/09 - HERENCIA/python/JesusAntonioEEscamilla.py @@ -0,0 +1,44 @@ +# #09 - Python -> Jesus Antonio Escamilla + +""" +EJERCIÓ +""" +# Definimos la superclase Animal +class Animal: + def hacer_sonido(self): + raise NotImplemented("Este método debe ser implementado por las subclases") + +# Definimos la subclase Perro +class Perro(Animal): + def hacer_sonido(self): + return "El perro dice: ¡Guau Guau!" + +# Definimos la subclase Gato +class Gato(Animal): + def hacer_sonido(self): + return "El gato dice: ¡Miau Miau!" + +# Definimos la subclase Pájaro +class Pajaro(Animal): + def hacer_sonido(self): + return "El pájaro dice: ¡Pio Pio!" + +# Función para imprimir el sonido de cualquier animal +def imprimir_sonido(animal): + print(f"{animal.hacer_sonido()}") + +# Crear instancias +perro = Perro() +gato = Gato() +pajaro = Pajaro() + +imprimir_sonido(perro) +imprimir_sonido(gato) +imprimir_sonido(pajaro) + + + +""" +EXTRA +""" +# Pendientes \ No newline at end of file diff --git a/Roadmap/16 - EXPRESIONES REGULARES/go/raynerpv2022.go b/Roadmap/16 - EXPRESIONES REGULARES/go/raynerpv2022.go new file mode 100644 index 0000000000..4b4592b95b --- /dev/null +++ b/Roadmap/16 - EXPRESIONES REGULARES/go/raynerpv2022.go @@ -0,0 +1,124 @@ +// # * DIFICULTAD EXTRA (opcional): +// # * Crea 3 expresiones regulares (a tu criterio) capaces de: +// # * - Validar un email. +// # * - Validar un número de teléfono. +// # * - Validar una url. +// # */ + +package main + +import ( + "fmt" + "regexp" +) + +func check_mail(email string) string { + p := `^[\w.]+@[a-zA-Z.-]+\.[a-zA-Z]{2,}$` + + re := regexp.MustCompile(p) + if re.MatchString(email) { + return email + } else { + return email + " NO VALIDO" + } + +} +func emailsValidate() { + emails := []string{ + "user@example.com", + "firstname.lastname@example.co.uk", + "user+name@example.com", + "user_name@example.org", + "user.name123@example.info", + "user123@example.org", + "user.name+label@example.com", + "username@subdomain.example.com", + "user@example.travel", + "user@example.name", + "user@.com", + "@example.com", + "user@com", + "user@exam_ple.com", + "user@ex-ample.com", + "user@.example.com", + "user@example.c", + "user@-example.com", + "user@example..com", + "user@exa_mple.com", + } + + for _, e := range emails { + fmt.Println(check_mail(e)) + } +} + +func checkPhone(number string) string { + ps := `^(\+34\s)?[\d]{3}\s[\d]{3}\s[\d]{3}$` + result := regexp.MustCompile(ps) + if result.MatchString(number) { + return number + } else { + return number + " NO VALIDO" + } + +} + +func telephonNUmber() { + telefonos := []string{ + "+34 612 345 678", + "612 345 678", + "912 345 678", + "(912) 345 678", + "612345678", + "+34 (612) 345 678", + "612 34 56", + "612-345-678", + "123 456 789", + "9123456789", + "(612)345678", + "612 345678", + } + + for _, n := range telefonos { + fmt.Println(checkPhone(n)) + } + +} + +func checkUrl(url string) string { + + ps := `^https?://[\w.]+\.[a-zA-Z]{2,}$` + result := regexp.MustCompile(ps) + if result.MatchString(url) { + return url + } else { + return url + " NO VALIDA" + } + +} + +func Urls() { + + urls := []string{ + "http://www.example.com", + "https://subdomain.example.org", + "http://example.co.uk", + "http://example.com2", + "http://www.example.c", + "https://www.example.edu", + "http://example", + "ftp://example.com", + "https://example.com/path", + "http://123.456.789.0", + } + + for _, l := range urls { + fmt.Println(checkUrl(l)) + } + +} +func main() { + emailsValidate() + Urls() + telephonNUmber() +} diff --git a/Roadmap/16 - EXPRESIONES REGULARES/python/raynerpv2022.py b/Roadmap/16 - EXPRESIONES REGULARES/python/raynerpv2022.py new file mode 100644 index 0000000000..a65ddb0832 --- /dev/null +++ b/Roadmap/16 - EXPRESIONES REGULARES/python/raynerpv2022.py @@ -0,0 +1,134 @@ +# /* +# * EJERCICIO: +# * Utilizando tu lenguaje, explora el concepto de expresiones regulares, +# * creando una que sea capaz de encontrar y extraer todos los números +# * de un texto. +# * +import re + +pattern = r'\d+' +text = """Utilizando tu lenguaje, explora el concepto de expres67676iones regulares, +# * creando una que sea capaz de encontrar y extraer todos los 333números +# * de un texto.DIFICULTAD334 EXTRA (opcional): +# * Crea 3 expresiones regulares (a tu criterio) ca343434paces de: +# * - Validar un email. +# * - Validar565 un número de teléfono. +# * - Validar una url.""" +result = re.search(pattern,text) +print(result.group()) +result = re.findall(pattern,text) +print(result) + + + + +# * DIFICULTAD EXTRA (opcional): +# * Crea 3 expresiones regulares (a tu criterio) capaces de: +# * - Validar un email. +# * - Validar un número de teléfono. +# * - Validar una url. +# */ + +def check_email(email): + + p = r"^[\w.]+@[a-zA-Z0-9.-]+\.+[a-zA-Z]{2,}$" + + result = re.fullmatch(p,email) + if result: + return email + else: + return f"{email} : "+"".join("No valido") + + + +def emails(): + emails = [ + "user@example.com", + "firstname.lastname@example.co.uk", + "user+name@example.com", + "user_name@example.org", + "user.name123@example.info", + "user123@example.org", + "user.name+label@example.com", + "username@subdomain.example.com", + "user@example.travel", + "user@example.name", + "user@.com", + "@example.com", + "user@com", + "user@exam_ple.com", + "user@ex-ample..com", + "user@.example.com", + "user@example.c", + "user@-example.com", + "user@example..com", + "user@exa_mple.com" + ] + + for e in emails: + print(check_email(e)) + +def check_phone(number): + ps = r"^(\+34\s)?[\d]{3}\s[\d]{3}\s[\d]{3}$" + result = re.fullmatch(ps,number) + if result: + return result.group() + else: + return f"{number} : "+"".join("No valida") + + + +def telephon_NUmber(): + telefonos = [ + '+34 612 345 678', # Válido + '612 345 678', # Válido + '912 345 678', # Válido + '(912) 345 678', # Válido + '612345678', # Válido + '+34 (612) 345 678', # Válido + '612 34 56', # No válido (menos dígitos) + '612-345-678', # No válido (caracteres no permitidos) + '123 456 789', # No válido (no comienza con 6, 7, o 9) + '9123456789', # No válido (demasiados dígitos) + '(612)345678', # No válido (espacio mal ubicado) + '612 345678' # No válido (espacio mal ubicado) +] + + for n in telefonos: + print(check_phone(n)) + +def check_url(url): + + ps = r"^https?://[\w.]+\.[a-zA-Z]{2,}$" + result = re.match(ps,url) + if result: + return result.group() + else: + return f"{url} : "+"".join("No valida") + + +def urls(): + + urls = [ + "http://www.example.com", + "https://subdomain.example.org", + "http://example.co.uk", + "http://example.com2", + "http://www.example.c", + "https://www.example.edu", + "http://example", + "ftp://example.com", + "https://example.com/path", + "http://123.456.789.0" + ] + + for l in urls: + + print(check_url(l)) +urls() +print() +emails() +print() +telephon_NUmber() + + diff --git a/Roadmap/19 - ENUMERACIONES/python/Gordo-Master.py b/Roadmap/19 - ENUMERACIONES/python/Gordo-Master.py new file mode 100644 index 0000000000..f818ac3eb7 --- /dev/null +++ b/Roadmap/19 - ENUMERACIONES/python/Gordo-Master.py @@ -0,0 +1,93 @@ +# 19 - Enumeraciones +from enum import Enum + +class WeekDay(Enum): + LUNES = 1 + MARTES = 2 + MIERCOLES = 3 + JUEVES = 4 + VIERNES = 5 + SABADO = 6 + DOMINGO = 7 + +def show_day(num): + print(WeekDay(num).name) + +show_day(2) + +""" +Ejercicio Extra +""" +class State(Enum): + PENDIENTE = 1 + ENVIADO = 2 + ENTREGADO = 3 + CANCELADO = 4 + +class Request(): + + def __init__(self,id: int, state: State = State(1)) -> None: + self.id = id + self.state = state + + def send(self): + if self.state == State.PENDIENTE: + self.state = State.ENVIADO + print(f"Se ha {State(self.state).name} el pedido {self.id}") + + elif self.state == State.ENVIADO: + print(f"El pedido ({self.id}) ya se encuentra: {State(self.state).name}") + + else: + print(f"No se pudo ejecutar el envio de {self.id}, porque esta: {State(self.state).name}") + + def cancel(self): + if self.state != State.ENTREGADO and self.state != State.CANCELADO: + self.state = State.CANCELADO + print(f"Se ha {State(self.state).name} el pedido {self.id}") + + elif self.state == State.CANCELADO: + print(f"El pedido ({self.id}) ya se encuentra: {State(self.state).name}") + + else: + print(f"No se pudo cancelar pedido ({self.id}), porque esta: {State(self.state).name}") + + def delivered(self): + if self.state == State.ENVIADO: + self.state = State.ENTREGADO + print(f"Se ha {State(self.state).name} el pedido {self.id}") + + elif self.state == State.ENTREGADO: + print(f"El pedido ({self.id}) ya se encuentra: {State(self.state).name}") + + else: + print(f"No se pudo entregar el pedido ({self.id}), porque esta: {State(self.state).name}") + + def show_state(self): + print(f"El estado del pedido {self.id} es: {State(self.state).name}") + +requet_1 = Request("r_1") +requet_2 = Request("r_2") + +print(requet_1.id) +print(requet_1.state) + +# Pendiente +requet_1.send() +# Enviado +requet_1.cancel() +# Cancelado +requet_1.send() +requet_1.delivered() +requet_1.show_state() + +# Pendiente +requet_2.delivered() +requet_2.send() +# Enviado +requet_2.send() +requet_2.delivered() +# Entregado +requet_2.send() +requet_2.cancel() +requet_2.delivered() diff --git a/Roadmap/21 - CALLBACKS/java/simonguzman.java b/Roadmap/21 - CALLBACKS/java/simonguzman.java new file mode 100644 index 0000000000..c913c50b58 --- /dev/null +++ b/Roadmap/21 - CALLBACKS/java/simonguzman.java @@ -0,0 +1,82 @@ +import java.util.Random; +import java.util.concurrent.TimeUnit; + +public class simonguzman { + public static void main(String[] args) { + //callbackExample(); + restaurantExercise(); + } + + /********************** Ejercicio adicional **********************/ + + public static void restaurantExercise(){ + RestaurantOrder order = new RestaurantOrder(); + + // Procesar pedido con callbacks + order.processOrder("Pizza", + (dish) -> System.out.println("Confirmación: Se ha confirmado el pedido de " + dish), + (dish) -> System.out.println("Listo: El plato " + dish + " está listo para ser servido"), + (dish) -> System.out.println("Entregado: El plato " + dish + " ha sido entregado") + ); + } + public static interface ConfirmCallback{ + void OnConfirm(String dish); + } + + public static interface ReadyCallback{ + void OnReady(String dish); + } + + public static interface DeliveryCallback{ + void OnDelivery(String dish); + } + + public static class RestaurantOrder{ + private Random random = new Random(); + public void processOrder(String dish, ConfirmCallback confirmcallback, ReadyCallback readyCallback, DeliveryCallback deliveryCallback){ + confirmcallback.OnConfirm(dish); + proccessRestaurant(dish, confirmcallback, readyCallback, deliveryCallback); + } + + public void proccessRestaurant(String dish, ConfirmCallback confirmcallback, ReadyCallback readyCallback, DeliveryCallback deliveryCallback){ + + try { + int preparationTime = random.nextInt(10) + 1; + TimeUnit.SECONDS.sleep(preparationTime); + + readyCallback.OnReady(dish); + + int deliveryTime = random.nextInt(10) + 1; + TimeUnit.SECONDS.sleep(deliveryTime); + + deliveryCallback.OnDelivery(dish); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + + /********************** Ejercicio principal - Ejemplo de Callback **********************/ + public static void callbackExample(){ + System.out.println("Iniciando el programa..."); + Processor processor = new Processor(); + processor.process(message -> System.out.println("Callback recibido: " + message)); + System.out.println("Programa finalizado."); + } + + public static interface Callback{ + void execute(String message); + } + + public static class Processor{ + public void process(Callback callback){ + System.out.println("Procesando..."); + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + callback.execute("Proceso completo"); + } + } +} diff --git a/Roadmap/22 - FUNCIONES DE ORDEN SUPERIOR/java/simonguzman.java b/Roadmap/22 - FUNCIONES DE ORDEN SUPERIOR/java/simonguzman.java new file mode 100644 index 0000000000..ad92d57778 --- /dev/null +++ b/Roadmap/22 - FUNCIONES DE ORDEN SUPERIOR/java/simonguzman.java @@ -0,0 +1,120 @@ +import java.time.LocalDate; +import java.util.Arrays; +import java.util.List; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.function.Supplier; +import java.util.stream.Collectors; + +public class simonguzman { + public static void main(String[] args) { + //ejercicioPrincipal(); + ejercicioAdicional(); + } + + /******************** Ejercicio adicional ********************/ + public static void ejercicioAdicional(){ + List estudiantes = Arrays.asList( + new Estudiante("Juan", LocalDate.of(2000, 5, 15), Arrays.asList(8.0, 9.0, 10.0)), + new Estudiante("Ana", LocalDate.of(1998, 11, 3), Arrays.asList(9.5, 9.0, 9.7)), + new Estudiante("Carlos", LocalDate.of(2002, 6, 21), Arrays.asList(6.0, 7.5, 8.0)) + ); + operaciones(estudiantes); + } + + public static void operaciones(List estudiantes){ + promedioCalificaciones(estudiantes); + + List mejores = mejoresEstudiantes(estudiantes); + System.out.println("Mejores estudiantes: "+mejores); + + List ordenados = ordenarPorNacimiento(estudiantes); + System.out.println("Estudiantes ordenados por nacimiento:"); + ordenados.forEach(est -> System.out.println(est.getNombre())); + + double mayorCalificacion = obtenerMayorCalificacion(estudiantes); + System.out.println("Mayor calificación: " + mayorCalificacion); + } + + public static void promedioCalificaciones(List estudiantes){ + estudiantes.forEach(estudiante -> { + double promedio = estudiante.getPromedio(); + System.out.println("Estudiante: "+estudiante.getNombre()+ " ,promedio: "+promedio); + }); + } + + public static List mejoresEstudiantes(List estudiantes){ + return estudiantes.stream().filter(est -> est.getPromedio() >= 9).map(Estudiante::getNombre).toList(); + } + + public static List ordenarPorNacimiento(List estudiantes){ + return estudiantes.stream().sorted((e1, e2) -> e2.getFechaNacimiento().compareTo(e1.getFechaNacimiento())).toList(); + } + + public static double obtenerMayorCalificacion(List estudiantes){ + return estudiantes.stream().flatMap(est -> est.getCalificaciones().stream()).max(Double::compareTo).orElse(0.0); + } + public static class Estudiante { + private String nombre; + private LocalDate fechaNacimiento; + private List calificaciones; + + public Estudiante(){ + + } + + public Estudiante(String nombre, LocalDate fechaNacimiento, List calificaciones){ + this.nombre = nombre; + this.fechaNacimiento = fechaNacimiento; + this.calificaciones = calificaciones; + } + + public String getNombre() { + return nombre; + } + + public LocalDate getFechaNacimiento() { + return fechaNacimiento; + } + + public List getCalificaciones() { + return calificaciones; + } + + public double getPromedio(){ + return calificaciones.stream().mapToDouble(Double::doubleValue).average().orElse(0.0); + } + } + + /******************** Ejercicio conceptual ********************/ + + public static void ejercicioPrincipal(){ + List numeros = Arrays.asList(1,2,3,4,5,6,7,8,9,10); + List numerosMultiplicados = multiplicarXDos(numeros); + List numerosPares = filtrarNumerosPares(numerosMultiplicados); + imprimirNumeros(numerosPares); + int suma = sumarNumeros(numerosPares); + System.out.println("Suma de los números pares multiplicados por 2: " + suma); + } + + public static List multiplicarXDos(List numeros){ + Function multiplicar = (n) -> n * 2; + return numeros.stream().map(multiplicar).collect(Collectors.toList()); + } + + public static List filtrarNumerosPares(List numeros){ + Predicate esPar = (n) -> n % 2 == 0; + return numeros.stream().filter(esPar).collect(Collectors.toList()); + } + + public static int sumarNumeros(List numeros){ + Supplier sumar = () -> numeros.stream().mapToInt(Integer::intValue).sum(); + return sumar.get(); + } + + public static void imprimirNumeros(List numeros){ + Consumer imprimir = (n) -> System.out.println("Numero: "+n); + numeros.forEach(imprimir); + } +} diff --git a/Roadmap/32 - BATALLA DEADPOOL Y WOLVERINE/python/fborjalv.py b/Roadmap/32 - BATALLA DEADPOOL Y WOLVERINE/python/fborjalv.py new file mode 100644 index 0000000000..1d6ba1955f --- /dev/null +++ b/Roadmap/32 - BATALLA DEADPOOL Y WOLVERINE/python/fborjalv.py @@ -0,0 +1,122 @@ +""" + +/* + * EJERCICIO: + * ¡Deadpool y Wolverine se enfrentan en una batalla épica! + * Crea un programa que simule la pelea y determine un ganador. + * El programa simula un combate por turnos, donde cada protagonista posee unos + * puntos de vida iniciales, un daño de ataque variable y diferentes cualidades + * de regeneración y evasión de ataques. + * Requisitos: + * 1. El usuario debe determinar la vida inicial de cada protagonista. ✅ + * 2. Cada personaje puede impartir un daño aleatorio: ✅ + * - Deadpool: Entre 10 y 100. + * - Wolverine: Entre 10 y 120. + * 3. Si el daño es el máximo, el personaje que lo recibe no ataca en el ✅ + * siguiente turno, ya que tiene que regenerarse (pero no aumenta vida). + * 4. Cada personaje puede evitar el ataque contrario: ✅ + * - Deadpool: 25% de posibilidades. + * - Wolverine: 20% de posibilidades. + * 5. Un personaje pierde si sus puntos de vida llegan a cero o menos. ✅ + * Acciones: + * 1. Simula una batalla. ✅ + * 2. Muestra el número del turno (pausa de 1 segundo entre turnos). ✅ + * 3. Muestra qué pasa en cada turno. ✅ + * 4. Muestra la vida en cada turno. ✅ + * 5. Muestra el resultado final. ✅ + */ + + +""" + +import random +from time import sleep +class Character: + def __init__(self, health) -> None: + self.name = "" + self.health = health + self.min_damage = 0 + self.max_damage = 0 + self.damage = 0 + self.evassion = 0 + def evade_attack(self): + return random.random() < self.evassion + + def attack(self, enemy): + self.damage = random.randint(self.min_damage, self.max_damage) + if not enemy.evade_attack(): + enemy.health -= self.damage + print(f"{self.name} ha golpeado a {enemy.name}. Ha realizado un ataque de {self.damage} puntos") + print(f"Ahora la salud de {enemy.name} es de {enemy.health}") + else: + print(f"{enemy.name} ha evitado el ataque de {self.name}") + + def is_critical(self, enemy): + if self.damage == self.max_damage: + print(f"{self.name} le ha dado golpe críticoa {enemy.name}, que pierde un turno de ataque para regenerarse") + return True + else: + return False + +class Deadpool(Character): + def __init__(self, health) -> None: + super().__init__(health) + self.name = "Deadpool" + self.min_damage = 10 + self.max_damage = 100 + self.evassion = 0.25 + + +class Wolverine(Character): + def __init__(self, health) -> None: + super().__init__(health) + self.name = "Wolverine" + self.min_damage = 10 + self.max_damage = 120 + self.evassion = 0.2 + +class Game: + + def __init__(self) -> None: + dp_health = int(input("Introduce puntos de salud para Deadpool: ")) + wv_health = int(input("Introduce puntos de salud para Wolverine: ")) + self.player1, self.player2 = random.sample([Deadpool(dp_health), Wolverine(wv_health)], 2) + self.turn = 0 + + def is_character_alive(self): + if self.player1.health <= 0 or self.player2.health <=0: + winner = max(self.player1, self.player2, key= lambda x: x.health) + loser = min(self.player1, self.player2, key= lambda x: x.health) + print(f"{winner.name} ha ganado el combate a {loser.name}") + return False + else: + return True + + + def init_game(self): + + print(f"{self.player1.name} comienza atacando a {self.player2.name}") + turn_off_player1 = False + turn_off_player2 = False + while self.player1.health > 0 and self.player2.health > 0: + + sleep(3) + print(f"Turno: {self.turn} ----------") + self.turn +=1 + if not turn_off_player1: + self.player1.attack(self.player2) + if not self.is_character_alive(): break + turn_off_player2 = False + if self.player1.is_critical(self.player2): + turn_off_player2 = True + + if not turn_off_player2: + self.player2.attack(self.player1) + if not self.is_character_alive(): break + turn_off_player1 = False + if self.player2.is_critical(self.player1): + turn_off_player1 = True + + +system = Game() +system.init_game() diff --git a/Roadmap/33 - RESCATANDO A MICKEY/python/fborjalv.py b/Roadmap/33 - RESCATANDO A MICKEY/python/fborjalv.py new file mode 100644 index 0000000000..18642681db --- /dev/null +++ b/Roadmap/33 - RESCATANDO A MICKEY/python/fborjalv.py @@ -0,0 +1,116 @@ +""" +/* + * EJERCICIO: + * ¡Disney ha presentado un montón de novedades en su D23! + * Pero... ¿Dónde está Mickey? + * Mickey Mouse ha quedado atrapado en un laberinto mágico + * creado por Maléfica. + * Desarrolla un programa para ayudarlo a escapar. + * Requisitos: + * 1. El laberinto está formado por un cuadrado de 6x6 celdas. + * 2. Los valores de las celdas serán: + * - ⬜️ Vacío + * - ⬛️ Obstáculo + * - 🐭 Mickey + * - 🚪 Salida + * Acciones: + * 1. Crea una matriz que represente el laberinto (no hace falta + * que se genere de manera automática). + * 2. Interactúa con el usuario por consola para preguntarle hacia + * donde se tiene que desplazar (arriba, abajo, izquierda o derecha). + * 3. Muestra la actualización del laberinto tras cada desplazamiento. + * 4. Valida todos los movimientos, teniendo en cuenta los límites + * del laberinto y los obtáculos. Notifica al usuario. + * 5. Finaliza el programa cuando Mickey llegue a la salida. + */ + +""" +MICKEY = "🐭" +EXIT = "🚪" +VACIO = "⬜️" +OBSTACULO = "⬛️" + +class Mickey: + def __init__(self) -> None: + self.position_x = 0 + self.position_y = 0 + def move_down(self): + self.position_y += 1 + print("Movimiento: hacia abajo") + def move_up(self): + self.position_y -= 1 + print("Movimiento: hacia arriba") + def move_right(self): + self.position_x += 1 + print("Movimiento: hacia la derecha") + def move_left(self): + self.position_x -= 1 + print("Movimiento: hacia la izquierda") + + +class Game: + def __init__(self) -> None: + self.maze = [ + [MICKEY, VACIO, VACIO, VACIO, OBSTACULO, VACIO], + [OBSTACULO, VACIO, OBSTACULO, VACIO, VACIO, VACIO], + [OBSTACULO, VACIO, OBSTACULO, OBSTACULO, OBSTACULO, VACIO], + [OBSTACULO, VACIO, VACIO, VACIO, OBSTACULO, OBSTACULO], + [VACIO, VACIO, OBSTACULO, VACIO, OBSTACULO, OBSTACULO], + [VACIO, OBSTACULO, OBSTACULO, VACIO, VACIO, EXIT]] + self.player = Mickey() + self.print_maze() + self.exit_x = 5 + self.exit_y = 5 + + def print_maze(self): + print(f"Player position: {self.player.position_x + 1}, {self.player.position_y + 1}") + for fila in self.maze: + print(' '.join(map(str, fila))) + + + def move_player(self): + move = input("Introduce la dirección hacia la que se mueve Mickey: ") + match move: + case "a": + if self.player.position_x > 0 and self.maze[self.player.position_y][self.player.position_x - 1] != OBSTACULO: + self.maze[self.player.position_y][self.player.position_x] = VACIO + self.player.move_left() + self.maze[self.player.position_y][self.player.position_x] = MICKEY + else: + print("No puede seguir avanzado por la izquierda") + case "d": + if self.player.position_x < len(self.maze[0])-1 and self.maze[self.player.position_y][self.player.position_x + 1] != OBSTACULO: + self.maze[self.player.position_y][self.player.position_x] = VACIO + self.player.move_right() + self.maze[self.player.position_y][self.player.position_x] = MICKEY + else: + print("No puede seguir avanzado por la derecha") + case "s": + if self.player.position_y < len(self.maze) -1 and self.maze[self.player.position_y + 1][self.player.position_x] != OBSTACULO: + self.maze[self.player.position_y][self.player.position_x] = VACIO + self.player.move_down() + self.maze[self.player.position_y][self.player.position_x] = MICKEY + else: + print("No puede seguir avanzado hacia abajo") + case "w": + if self.player.position_y > 0 and self.maze[self.player.position_y - 1][self.player.position_x] != OBSTACULO: + self.maze[self.player.position_y][self.player.position_x] = VACIO + self.player.move_up() + self.maze[self.player.position_y][self.player.position_x] = MICKEY + else: + print("No puede seguir avazando hacia arriba") + case _: + print("Introduce un valor correcto") + + def game_on(self): + while True: + if self.player.position_y == self.exit_x and self.player.position_x == self.exit_y: + print("HAS GANADO!!") + break + else: + self.move_player() + self.print_maze() + + +system = Game() +system.game_on() diff --git a/Roadmap/37 - OASIS VS LINKIN PARK/java/MohamedElderkaoui.java b/Roadmap/37 - OASIS VS LINKIN PARK/java/MohamedElderkaoui.java index 13fa987209..938f92b7f9 100644 --- a/Roadmap/37 - OASIS VS LINKIN PARK/java/MohamedElderkaoui.java +++ b/Roadmap/37 - OASIS VS LINKIN PARK/java/MohamedElderkaoui.java @@ -13,8 +13,8 @@ import java.util.Base64; public class MohamedElderkaoui { - private static final String CLIENT_ID = "TU_CLIENT_ID"; - private static final String CLIENT_SECRET = "TU_CLIENT_SECRET"; + private static final String CLIENT_ID = System.getenv("SPOTIFY_CLIENT_ID"); +private static final String CLIENT_SECRET = System.getenv("SPOTIFY_CLIENT_SECRET"); private static final String TOKEN_URL = "https://accounts.spotify.com/api/token"; private static final String ARTIST_OASIS_ID = "2DaxqgrOhkeH0fpeiQq2f4"; // ID de Spotify para Oasis private static final String ARTIST_LP_ID = "6XyY86QOPPrYVGvF9ch6wz"; // ID de Spotify para Linkin Park diff --git a/Roadmap/37 - OASIS VS LINKIN PARK/java/mantaras96.java b/Roadmap/37 - OASIS VS LINKIN PARK/java/mantaras96.java new file mode 100644 index 0000000000..2677bdf3a9 --- /dev/null +++ b/Roadmap/37 - OASIS VS LINKIN PARK/java/mantaras96.java @@ -0,0 +1,128 @@ +package org.example; + +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; +import org.apache.http.entity.StringEntity; +import org.json.JSONObject; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.charset.StandardCharsets; +import java.util.Base64; + +public class Main { + + private static final String CLIENT_ID = ""; + private static final String CLIENT_SECRET = ""; + private static final String TOKEN_URL = "https://accounts.spotify.com/api/token"; + private static final String SEARCH_URL = "https://api.spotify.com/v1/search"; + private static final String ARTIST_URL = "https://api.spotify.com/v1/artists"; + + private static final String ARTIST_NAME_1 = "Oasis"; + private static final String ARTIST_NAME_2 = "Linkin Park"; + + private static String getSpotifyAccessToken() throws IOException { + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpPost post = new HttpPost(TOKEN_URL); + + // Encode credentials + String auth = CLIENT_ID + ":" + CLIENT_SECRET; + String encodedAuth = Base64.getEncoder().encodeToString(auth.getBytes(StandardCharsets.UTF_8)); + + // Set headers + post.setHeader("Authorization", "Basic " + encodedAuth); + post.setHeader("Content-Type", "application/x-www-form-urlencoded"); + + // Set entity + StringEntity entity = new StringEntity("grant_type=client_credentials"); + post.setEntity(entity); + + // Execute request + try (CloseableHttpResponse response = httpClient.execute(post)) { + String jsonResponse = EntityUtils.toString(response.getEntity()); + JSONObject jsonObject = new JSONObject(jsonResponse); + return jsonObject.getString("access_token"); + } finally { + httpClient.close(); + } + } + + private static String getArtistId(String accessToken, String artistName) throws IOException, URISyntaxException { + CloseableHttpClient httpClient = HttpClients.createDefault(); + + // Build URL with encoded artist name + URIBuilder uriBuilder = new URIBuilder(SEARCH_URL); + uriBuilder.addParameter("q", artistName); + uriBuilder.addParameter("type", "artist"); + String requestUrl = uriBuilder.toString(); + + HttpGet get = new HttpGet(requestUrl); + + // Set headers + get.setHeader("Authorization", "Bearer " + accessToken); + + // Execute request + try (CloseableHttpResponse response = httpClient.execute(get)) { + String jsonResponse = EntityUtils.toString(response.getEntity()); + JSONObject jsonObject = new JSONObject(jsonResponse); + // Get the artist ID from the first result + JSONObject artist = jsonObject.getJSONObject("artists").getJSONArray("items").getJSONObject(0); + return artist.getString("id"); + } finally { + httpClient.close(); + } + } + + private static JSONObject getArtistInformation(String accessToken, String artistId) throws IOException, URISyntaxException { + CloseableHttpClient httpClient = HttpClients.createDefault(); + + // Build URL with encoded artist name + URIBuilder uriBuilder = new URIBuilder(ARTIST_URL + "/" + artistId); + String requestUrl = uriBuilder.toString(); + + HttpGet get = new HttpGet(requestUrl); + + // Set headers + get.setHeader("Authorization", "Bearer " + accessToken); + + // Execute request + try (CloseableHttpResponse response = httpClient.execute(get)) { + String jsonResponse = EntityUtils.toString(response.getEntity()); + JSONObject jsonObject = new JSONObject(jsonResponse); + System.out.println(jsonObject); + //Integer popularity = jsonObject.getInt("popularity"); + //System.out.println("Popularity:" + jsonObject.getJSONObject("followers").getInt("total")); + return jsonObject; + } finally { + httpClient.close(); + } + } + + + public static void main(String[] args) throws Exception { + try { + String accessToken = getSpotifyAccessToken(); + + System.out.println("Access Token: " + accessToken); + String artistID = getArtistId(accessToken, ARTIST_NAME_1); + String artistID2 = getArtistId(accessToken, ARTIST_NAME_2); + + + JSONObject jsonObjectArtist1 = getArtistInformation(accessToken, artistID); + JSONObject jsonObjectArtist2 = getArtistInformation(accessToken, artistID2); + + if (jsonObjectArtist1.getInt("popularity") > jsonObjectArtist2.getInt("popularity")){ + System.out.println("El grupo mas popular es " + ARTIST_NAME_1); + } else { + System.out.println("El grupo mas popular es " + ARTIST_NAME_2); + } + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/Roadmap/37 - OASIS VS LINKIN PARK/python/kenysdev.py b/Roadmap/37 - OASIS VS LINKIN PARK/python/kenysdev.py new file mode 100644 index 0000000000..116a9c6856 --- /dev/null +++ b/Roadmap/37 - OASIS VS LINKIN PARK/python/kenysdev.py @@ -0,0 +1,159 @@ +# _____________________________________ +# https://github.com/kenysdev +# 2024 - Python +# _____________________________________ +# 37 OASIS VS LINKIN PARK +# ------------------------------------ +""" +* ¡Dos de las bandas más grandes de la historia están de vuelta! +* Oasis y Linkin Park han anunciado nueva gira, pero, ¿quién es más popular? +* Desarrolla un programa que se conecte al API de Spotify y los compare. +* Requisitos: +* 1. Crea una cuenta de desarrollo en https://developer.spotify.com. +* 2. Conéctate al API utilizando tu lenguaje de programación. +* 3. Recupera datos de los endpoint que tú quieras. +* Acciones: +* 1. Accede a las estadísticas de las dos bandas. +* Por ejemplo: número total de seguidores, escuchas mensuales, +* canción con más reproducciones... +* 2. Compara los resultados de, por lo menos, 3 endpoint. +* 3. Muestra todos los resultados por consola para notificar al usuario. +* 4. Desarrolla un criterio para seleccionar qué banda es más popular. +""" + +# https://spotipy.readthedocs.io/en/2.24.0/ +import spotipy +from spotipy.oauth2 import SpotifyClientCredentials + +# https://pypi.org/project/python-dotenv/ +from dotenv import load_dotenv + +class Spotify: + def __init__(self): + load_dotenv() # SPOTIPY_CLIENT_ID, SPOTIPY_CLIENT_SECRET + self.sp = spotipy.Spotify(client_credentials_manager=SpotifyClientCredentials()) + + def get_artists(self, name: str) -> dict: + results = self.sp.search(q='artist:' + name, type='artist', limit=3) + if not results: + return {} + + artists = results['artists']['items'] + return artists + + def get_most_popular_artist(self, name: str) -> dict: + artists: dict = self.get_artists(name) + if not artists: + return {} + + artists_sorted = sorted(artists, key=lambda x: x['popularity'], reverse=True) + most_popular_artist = artists_sorted[0] + return most_popular_artist + + def artist_top_tracks(self, id_artist) -> dict: + top_track = self.sp.artist_top_tracks(id_artist) + if not top_track: + return {} + return top_track + + def artist_albums(self, id_artist) -> dict: + albums = self.sp.artist_albums(id_artist, album_type='album') + if not albums: + return {} + return albums + +class Versus: + def __init__(self, artist1: dict, artist2: dict, spotify_instance): + self.a1 = artist1 + self.a2 = artist2 + self.sp = spotify_instance + self.a1_score = 0 + self.a2_score = 0 + + def __popularity(self): + a1_pop: int = self.a1['popularity'] + a2_pop: int = self.a2['popularity'] + + print(f"Popularidad: {a1_pop} vs {a2_pop}") + if a1_pop > a2_pop: + self.a1_score += 1 + elif a2_pop > a1_pop: + self.a2_score += 1 + + def __followers(self): + a1_foll: int = self.a1['followers']['total'] + a2_foll: int = self.a2['followers']['total'] + + print(f"Seguidores: {a1_foll} vs {a2_foll}") + if a1_foll > a2_foll: + self.a1_score += 1 + elif a2_foll > a1_foll: + self.a2_score += 1 + + def __top3_tracks(self): + a1_top: dict = self.sp.artist_top_tracks(self.a1['id']) + a2_top: dict = self.sp.artist_top_tracks(self.a2['id']) + a1_pop: int = sum(track['popularity'] for track in a1_top['tracks'][:3]) + a2_pop: int = sum(track['popularity'] for track in a2_top['tracks'][:3]) + print(f"Popularidad Top 3 canciones: {a1_pop} vs {a2_pop}") + + if a1_pop > a2_pop: + self.a1_score += 1 + elif a2_pop > a1_pop: + self.a2_score += 1 + + def __albums_and_active_years(self): + a1_albums: list = self.sp.artist_albums(self.a1['id'])['items'] + a2_albums: list = self.sp.artist_albums(self.a2['id'])['items'] + print(f"Número de álbumes: {len(a1_albums)} vs {len(a2_albums)}") + if len(a1_albums) > len(a2_albums): + self.a1_score += 1 + elif len(a2_albums) > len(a1_albums): + self.a2_score += 1 + + a1_years = set(album['release_date'][:4] for album in a1_albums) + a2_years = set(album['release_date'][:4] for album in a2_albums) + print(f"Años activos: {len(a1_years)} vs {len(a2_years)}") + if len(a1_years) > len(a2_years): + self.a1_score += 1 + elif len(a2_years) > len(a1_years): + self.a2_score += 1 + + def __final_result(self): + print("\nRESULTADO FINAL:") + print(f"{self.a1['name']}: {self.a1_score} puntos") + print(f"{self.a2['name']}: {self.a2_score} puntos") + + if self.a1_score > self.a2_score: + print(f"\n¡'{self.a1['name']}' gana el versus!") + elif self.a2_score > self.a1_score: + print(f"\n¡'{self.a2['name']}' gana el versus!") + else: + print("\n¡Es un empate!") + + def start(self): + print(f"{self.a1['name']} vs {self.a2['name']}") + self.__popularity() + self.__followers() + self.__top3_tracks() + self.__albums_and_active_years() + self.__final_result() + + +def main(): + print("VERSUS") + sp = Spotify() + artist1: dict = sp.get_most_popular_artist(name="Oasis") + artist2: dict = sp.get_most_popular_artist(name="Linkin Park") + + if not artist1 and not artist2: + print("Artistas no encontrados") + return + + vs = Versus(artist1, artist2, sp) + vs.start() + + +if __name__ == "__main__": + main() + diff --git a/Roadmap/37 - OASIS VS LINKIN PARK/python/neslarra.py b/Roadmap/37 - OASIS VS LINKIN PARK/python/neslarra.py new file mode 100644 index 0000000000..35f81b7985 --- /dev/null +++ b/Roadmap/37 - OASIS VS LINKIN PARK/python/neslarra.py @@ -0,0 +1,196 @@ +""" + EJERCICIO: + ¡Dos de las bandas más grandes de la historia están de vuelta! + Oasis y Linkin Park han anunciado nueva gira, pero, ¿quién es más popular? + Desarrolla un programa que se conecte al API de Spotify y los compare. + Requisitos: + 1. Crea una cuenta de desarrollo en https://developer.spotify.com. + 2. Conéctate al API utilizando tu lenguaje de programación. + 3. Recupera datos de los endpoint que tú quieras. + Acciones: + 1. Accede a las estadísticas de las dos bandas. + Por ejemplo: número total de seguidores, escuchas mensuales, + canción con más reproducciones... + 2. Compara los resultados de, por lo menos, 3 endpoint. + 3. Muestra todos los resultados por consola para notificar al usuario. + 4. Desarrolla un criterio para seleccionar qué banda es más popular. +""" +import spotipy +from spotipy.oauth2 import SpotifyClientCredentials + + +class Artist: + + def __init__(self, name: str): + artists = spotify.search(q='artist:' + name, type='artist')['artists'] + for art in artists['items']: + if art['name'] == name: + self.artist_name = name + self.artist_id = art['id'] + self.artist_image = art['images'][0]['url'] + self.artist_followers = art['followers']['total'] + self.artist_genres = art['genres'] + self.artist_popularity = art['popularity'] + self.artist_songs_url = art['external_urls']['spotify'] + break + if not self.artist_name: + raise "Exception: Artista NO encontrado." + + def get_name(self): + return self.artist_name + + def get_popularity(self): + return self.artist_popularity + + def get_id(self): + return self.artist_id + + def get_followers(self): + return self.artist_followers + + def get_genres(self): + return self.artist_genres + + def get_image(self): + return self.artist_image + + def get_albums(self): + albums = spotify.artist_albums(self.artist_id, country='AR') + return [x['name'] for x in albums['items'] if x['album_type'] == 'album'] + + def get_most_popular_song(self): + top_tracks = spotify.artist_top_tracks(self.artist_id) + track = top_tracks["tracks"][0] + return [track["name"], track["popularity"]] + + def where_listen(self): + return self.artist_songs_url + + +class Comparision: + + def __init__(self, artist_1: Artist, artist_2: Artist): + self.artist_1 = artist_1 + self.artist_2 = artist_2 + self.rank = [0, 0] + + def add_point(self, artist: int): + self.rank[artist] += 1 + + def get_common_genres(self): + g1 = self.artist_1.get_genres() + g2 = self.artist_2.get_genres() + genres = set.intersection(set(g1), set(g2)) + return genres + + def get_most_popular_band(self): + f1 = self.artist_1.get_popularity() + f2 = self.artist_2.get_popularity() + if f1 > f2: + self.add_point(0) + return self.artist_1.get_name() + elif f2 > f1: + self.add_point(1) + return self.artist_2.get_name() + else: + self.add_point(0) + self.add_point(1) + return "" + + def get_most_popular_song(self): + s1 = self.artist_1.get_most_popular_song() + s2 = self.artist_2.get_most_popular_song() + if s1[1] > s2[1]: + self.add_point(0) + return [s1[0], self.artist_1.get_name()] + elif s2[1] > s1[1]: + self.add_point(1) + return [s2[0], self.artist_2.get_name()] + else: + self.add_point(0) + self.add_point(1) + return [s1[0], self.artist_1.get_name(), s2[0], self.artist_2.get_name()] + + def get_most_follwed(self): + f1 = self.artist_1.get_followers() + f2 = self.artist_2.get_followers() + if f1 > f2: + self.add_point(0) + return self.artist_1.get_name() + elif f2 > f1: + self.add_point(1) + return self.artist_2.get_name() + else: + self.add_point(0) + self.add_point(1) + return "" + + def get_greater_number_of_albums(self): + a1 = self.artist_1.get_albums() + a2 = self.artist_2.get_albums() + if a1.__len__() > a2.__len__(): + self.add_point(0) + return [self.artist_1.get_name(), a1.__len__()] + elif a2.__len__() > a1.__len__(): + self.add_point(1) + return [self.artist_2.get_name(), a2.__len__()] + else: + self.add_point(0) + self.add_point(1) + return [a1.__len__()] + + def get_better_band(self): + if self.rank[0] > self.rank[1]: + return self.artist_1.get_name() + elif self.rank[1] > self.rank[0]: + return self.artist_2.get_name() + else: + return "" + + def get_report(self): + report = [] + message = f"Las bandas {self.artist_1.get_name()} y {self.artist_2.get_name()} " + common_genres = "" + for genre in self.get_common_genres(): + common_genres += genre + ", " + report.append(message + "tocan en común " + common_genres[:-2] if common_genres else message + "no tienen géneros en común.") + + band = self.get_most_follwed() + report.append(band + " es la más seguida." if band else "Ambas bandas son igual de seguidas.") + + band = self.get_most_popular_band() + report.append(band + " es la más popular." if band else "Ambas bandas son igual de populares.") + + song = self.get_most_popular_song() + if song.__len__() == 2: + report.append(f"La canción más popular es {song[0]} de {song[1]}") + else: + report.append(f"Las canciones más populares son {song[0]} de {song[1]} y {song[2]} de {song[3]}") + + albums = self.get_greater_number_of_albums() + if albums.__len__() == 2: + report.append(f"La banda {albums[0]} editó más álbumes ({albums[1]}).") + else: + report.append(f"Ambas bandas editaron ({albums[1]}) álbumes.") + + band = self.get_better_band() + report.append(band + " es la mejor banda." if band else "Ambas bandas son igual de buenas.") + + report.append(f"Escuchá a {self.artist_1.get_name()} en {self.artist_1.where_listen()}") + report.append(f"Escuchá a {self.artist_2.get_name()} en {self.artist_2.where_listen()}") + + return report + + +my_client_id = input("Ingresá tu Spotify client_id: ") +my_client_secret = input("Ingresa tu Spotify client_secret: ") + +my_creds = SpotifyClientCredentials(client_id=my_client_id, client_secret=my_client_secret) +spotify = spotipy.Spotify(client_credentials_manager=my_creds) + +oasis = Artist('Oasis') +lpark = Artist('Linkin Park') + +comparision = Comparision(oasis, lpark) +for result in comparision.get_report(): + print(result) diff --git a/Roadmap/stats.json b/Roadmap/stats.json index f796199d6f..5391ad2274 100644 --- a/Roadmap/stats.json +++ b/Roadmap/stats.json @@ -1,18 +1,18 @@ { "challenges_total": 38, "languages_total": 48, - "files_total": 6933, - "users_total": 1160, + "files_total": 6958, + "users_total": 1164, "challenges_ranking": [ { "order": 1, "name": "00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO", - "count": 1262 + "count": 1271 }, { "order": 2, "name": "01 - OPERADORES Y ESTRUCTURAS DE CONTROL", - "count": 765 + "count": 767 }, { "order": 3, @@ -66,12 +66,12 @@ }, { "order": 13, - "name": "14 - FECHAS", - "count": 130 + "name": "13 - PRUEBAS UNITARIAS", + "count": 131 }, { "order": 14, - "name": "13 - PRUEBAS UNITARIAS", + "name": "14 - FECHAS", "count": 130 }, { @@ -92,12 +92,12 @@ { "order": 18, "name": "17 - ITERACIONES", - "count": 114 + "count": 115 }, { "order": 19, "name": "18 - CONJUNTOS", - "count": 112 + "count": 113 }, { "order": 20, @@ -112,12 +112,12 @@ { "order": 22, "name": "21 - CALLBACKS", - "count": 87 + "count": 88 }, { "order": 23, "name": "22 - FUNCIONES DE ORDEN SUPERIOR", - "count": 81 + "count": 82 }, { "order": 24, @@ -157,32 +157,32 @@ { "order": 31, "name": "32 - BATALLA DEADPOOL Y WOLVERINE", - "count": 47 + "count": 49 }, { "order": 32, "name": "30 - SOLID DIP", - "count": 46 + "count": 47 }, { "order": 33, "name": "33 - RESCATANDO A MICKEY", - "count": 41 + "count": 42 }, { "order": 34, - "name": "35 - REPARTIENDO LOS ANILLOS DE PODER", - "count": 38 + "name": "31 - SIMULADOR JUEGOS OL\u00cdMPICOS", + "count": 39 }, { "order": 35, - "name": "31 - SIMULADOR JUEGOS OL\u00cdMPICOS", + "name": "36 - EL SOMBRERO SELECCIONADOR", "count": 38 }, { "order": 36, - "name": "36 - EL SOMBRERO SELECCIONADOR", - "count": 37 + "name": "35 - REPARTIENDO LOS ANILLOS DE PODER", + "count": 38 }, { "order": 37, @@ -192,51 +192,51 @@ { "order": 38, "name": "37 - OASIS VS LINKIN PARK", - "count": 3 + "count": 6 } ], "languages_ranking": [ { "order": 1, "name": "python", - "count": 2985, - "percentage": 43.05 + "count": 2995, + "percentage": 43.04 }, { "order": 2, "name": "javascript", - "count": 1379, - "percentage": 19.89 + "count": 1382, + "percentage": 19.86 }, { "order": 3, "name": "java", - "count": 622, - "percentage": 8.97 + "count": 626, + "percentage": 9.0 }, { "order": 4, "name": "typescript", - "count": 305, - "percentage": 4.4 + "count": 308, + "percentage": 4.43 }, { "order": 5, "name": "c#", "count": 253, - "percentage": 3.65 + "percentage": 3.64 }, { "order": 6, "name": "kotlin", - "count": 217, - "percentage": 3.13 + "count": 220, + "percentage": 3.16 }, { "order": 7, "name": "go", "count": 213, - "percentage": 3.07 + "percentage": 3.06 }, { "order": 8, @@ -247,32 +247,32 @@ { "order": 9, "name": "php", - "count": 152, - "percentage": 2.19 + "count": 153, + "percentage": 2.2 }, { "order": 10, "name": "c++", "count": 115, - "percentage": 1.66 + "percentage": 1.65 }, { "order": 11, "name": "rust", "count": 113, - "percentage": 1.63 + "percentage": 1.62 }, { "order": 12, "name": "c", "count": 67, - "percentage": 0.97 + "percentage": 0.96 }, { "order": 13, "name": "dart", "count": 49, - "percentage": 0.71 + "percentage": 0.7 }, { "order": 14, @@ -296,7 +296,7 @@ "order": 17, "name": "ruby", "count": 33, - "percentage": 0.48 + "percentage": 0.47 }, { "order": 18, @@ -343,8 +343,8 @@ { "order": 25, "name": "sql", - "count": 7, - "percentage": 0.1 + "count": 8, + "percentage": 0.11 }, { "order": 26, @@ -495,7 +495,7 @@ { "order": 2, "name": "kenysdev", - "count": 148, + "count": 149, "languages": 4 }, { @@ -650,136 +650,136 @@ }, { "order": 28, - "name": "alexdevrep", - "count": 38, - "languages": 3 + "name": "neslarra", + "count": 39, + "languages": 2 }, { "order": 29, - "name": "neslarra", + "name": "eulogioep", "count": 38, - "languages": 2 + "languages": 6 }, { "order": 30, + "name": "alexdevrep", + "count": 38, + "languages": 3 + }, + { + "order": 31, "name": "luishendrix92", "count": 37, "languages": 2 }, { - "order": 31, + "order": 32, "name": "emmanuelmmontesinos", "count": 37, "languages": 1 }, { - "order": 32, + "order": 33, "name": "mouredev", "count": 37, "languages": 1 }, { - "order": 33, + "order": 34, "name": "asjordi", "count": 37, "languages": 1 }, { - "order": 34, + "order": 35, "name": "n0hagonada", "count": 36, "languages": 3 }, { - "order": 35, + "order": 36, "name": "rauldoezon", "count": 36, "languages": 1 }, { - "order": 36, + "order": 37, "name": "rigo93acosta", "count": 36, "languages": 1 }, { - "order": 37, + "order": 38, "name": "oriaj3", "count": 35, "languages": 1 }, { - "order": 38, + "order": 39, "name": "angelsanchezt", "count": 34, "languages": 12 }, { - "order": 39, + "order": 40, "name": "rikmij", "count": 34, "languages": 2 }, { - "order": 40, + "order": 41, + "name": "fborjalv", + "count": 34, + "languages": 1 + }, + { + "order": 42, "name": "qv1ko", "count": 33, "languages": 4 }, { - "order": 41, + "order": 43, "name": "worlion", "count": 33, "languages": 2 }, { - "order": 42, + "order": 44, "name": "avcenal", "count": 33, "languages": 1 }, { - "order": 43, + "order": 45, "name": "juandaherrera", "count": 32, "languages": 5 }, { - "order": 44, + "order": 46, "name": "pedroomar23", "count": 32, "languages": 3 }, { - "order": 45, + "order": 47, "name": "pyramsd", "count": 32, "languages": 1 }, { - "order": 46, - "name": "fborjalv", - "count": 32, - "languages": 1 - }, - { - "order": 47, + "order": 48, "name": "ronipg", "count": 31, "languages": 4 }, { - "order": 48, + "order": 49, "name": "marcode24", "count": 30, "languages": 3 }, - { - "order": 49, - "name": "eulogioep", - "count": 30, - "languages": 1 - }, { "order": 50, "name": "alanshakir", @@ -914,61 +914,61 @@ }, { "order": 72, + "name": "simonguzman", + "count": 23, + "languages": 1 + }, + { + "order": 73, "name": "victor-casta", "count": 22, "languages": 3 }, { - "order": 73, + "order": 74, "name": "ycanas", "count": 22, "languages": 2 }, { - "order": 74, + "order": 75, "name": "emedevelopa", "count": 22, "languages": 1 }, { - "order": 75, + "order": 76, "name": "jptxaya", "count": 22, "languages": 1 }, { - "order": 76, + "order": 77, "name": "giovanyosorio", "count": 21, "languages": 2 }, - { - "order": 77, - "name": "igledev", - "count": 21, - "languages": 1 - }, { "order": 78, - "name": "davidmoralesdeveloper", + "name": "igledev", "count": 21, "languages": 1 }, { "order": 79, - "name": "gringoam", + "name": "davidmoralesdeveloper", "count": 21, "languages": 1 }, { "order": 80, - "name": "restevean", + "name": "gringoam", "count": 21, "languages": 1 }, { "order": 81, - "name": "simonguzman", + "name": "restevean", "count": 21, "languages": 1 }, @@ -992,79 +992,79 @@ }, { "order": 85, - "name": "saezmd", + "name": "gordo-master", "count": 19, "languages": 1 }, { "order": 86, - "name": "juandaw37", + "name": "saezmd", "count": 19, "languages": 1 }, { "order": 87, - "name": "trufoplus", + "name": "juandaw37", "count": 19, "languages": 1 }, { "order": 88, + "name": "trufoplus", + "count": 19, + "languages": 1 + }, + { + "order": 89, "name": "pguillo02", "count": 18, "languages": 5 }, { - "order": 89, + "order": 90, "name": "estuardodev", "count": 18, "languages": 4 }, { - "order": 90, + "order": 91, "name": "lumanet", "count": 18, "languages": 1 }, { - "order": 91, + "order": 92, "name": "mensius87", "count": 17, "languages": 4 }, { - "order": 92, + "order": 93, "name": "kevined11", "count": 17, "languages": 3 }, { - "order": 93, + "order": 94, "name": "raulfauli", "count": 17, "languages": 2 }, { - "order": 94, + "order": 95, "name": "saicobys", "count": 17, "languages": 2 }, - { - "order": 95, - "name": "andreavzqz", - "count": 17, - "languages": 1 - }, { "order": 96, - "name": "hyromy", + "name": "andreavzqz", "count": 17, "languages": 1 }, { "order": 97, - "name": "gordo-master", + "name": "hyromy", "count": 17, "languages": 1 }, @@ -1148,55 +1148,55 @@ }, { "order": 111, - "name": "sniker1223", - "count": 14, - "languages": 4 + "name": "mvidalb", + "count": 15, + "languages": 1 }, { "order": 112, - "name": "redom69", + "name": "sniker1223", "count": 14, "languages": 4 }, { "order": 113, - "name": "andresgcastillo", + "name": "redom69", "count": 14, - "languages": 2 + "languages": 4 }, { "order": 114, - "name": "ygriegasb", + "name": "andresgcastillo", "count": 14, "languages": 2 }, { "order": 115, - "name": "gonzadev28", + "name": "ygriegasb", "count": 14, "languages": 2 }, { "order": 116, - "name": "elmer125", + "name": "gonzadev28", "count": 14, - "languages": 1 + "languages": 2 }, { "order": 117, - "name": "vincentrodriguezr", + "name": "elmer125", "count": 14, "languages": 1 }, { "order": 118, - "name": "mikelm2020", + "name": "vincentrodriguezr", "count": 14, "languages": 1 }, { "order": 119, - "name": "mvidalb", + "name": "mikelm2020", "count": 14, "languages": 1 }, @@ -2282,403 +2282,403 @@ }, { "order": 300, + "name": "d1d4cum", + "count": 5, + "languages": 1 + }, + { + "order": 301, "name": "zarakilancelot", "count": 4, "languages": 3 }, { - "order": 301, + "order": 302, "name": "eonozux", "count": 4, "languages": 2 }, { - "order": 302, + "order": 303, "name": "yablik", "count": 4, "languages": 2 }, { - "order": 303, + "order": 304, "name": "fullovellas", "count": 4, "languages": 2 }, { - "order": 304, + "order": 305, "name": "k3nvd", "count": 4, "languages": 2 }, { - "order": 305, + "order": 306, "name": "josefuentes-dev", "count": 4, "languages": 2 }, { - "order": 306, + "order": 307, "name": "willr30", "count": 4, "languages": 2 }, { - "order": 307, + "order": 308, "name": "ruthmp", "count": 4, "languages": 2 }, { - "order": 308, + "order": 309, "name": "daeduol", "count": 4, "languages": 2 }, { - "order": 309, + "order": 310, "name": "mendozalz", "count": 4, "languages": 2 }, { - "order": 310, + "order": 311, "name": "salkalero", "count": 4, "languages": 2 }, { - "order": 311, + "order": 312, "name": "drvito1977", "count": 4, "languages": 1 }, { - "order": 312, + "order": 313, "name": "elhacedordecosas", "count": 4, "languages": 1 }, { - "order": 313, + "order": 314, "name": "andeveling", "count": 4, "languages": 1 }, { - "order": 314, + "order": 315, "name": "santiago-munoz-garcia", "count": 4, "languages": 1 }, { - "order": 315, + "order": 316, "name": "deivitdev", "count": 4, "languages": 1 }, { - "order": 316, + "order": 317, "name": "joshbaez", "count": 4, "languages": 1 }, { - "order": 317, + "order": 318, "name": "marcoslombardo", "count": 4, "languages": 1 }, { - "order": 318, + "order": 319, "name": "lrpeset", "count": 4, "languages": 1 }, { - "order": 319, + "order": 320, "name": "dieswae", "count": 4, "languages": 1 }, { - "order": 320, + "order": 321, "name": "mateo423", "count": 4, "languages": 1 }, { - "order": 321, + "order": 322, "name": "joaquinlopez14", "count": 4, "languages": 1 }, { - "order": 322, + "order": 323, "name": "angelurrutdev", "count": 4, "languages": 1 }, { - "order": 323, + "order": 324, "name": "elianisdev", "count": 4, "languages": 1 }, { - "order": 324, + "order": 325, "name": "omegatroy", "count": 4, "languages": 1 }, { - "order": 325, + "order": 326, "name": "socramwd", "count": 4, "languages": 1 }, { - "order": 326, + "order": 327, "name": "carzep09", "count": 4, "languages": 1 }, { - "order": 327, + "order": 328, "name": "mayerga", "count": 4, "languages": 1 }, { - "order": 328, + "order": 329, "name": "hugovrc", "count": 4, "languages": 1 }, { - "order": 329, + "order": 330, "name": "cdbiancotti", "count": 4, "languages": 1 }, { - "order": 330, + "order": 331, "name": "h4ckxel", "count": 4, "languages": 1 }, { - "order": 331, + "order": 332, "name": "tobibordino", "count": 4, "languages": 1 }, { - "order": 332, + "order": 333, "name": "guillermo-k", "count": 4, "languages": 1 }, { - "order": 333, + "order": 334, "name": "zakkdrte", "count": 4, "languages": 1 }, { - "order": 334, + "order": 335, "name": "sarismejiasanchez", "count": 4, "languages": 1 }, { - "order": 335, + "order": 336, "name": "buriticasara", "count": 4, "languages": 1 }, { - "order": 336, + "order": 337, "name": "davstudy", "count": 4, "languages": 1 }, { - "order": 337, + "order": 338, "name": "zerek247", "count": 4, "languages": 1 }, { - "order": 338, + "order": 339, "name": "vicman-182", "count": 4, "languages": 1 }, { - "order": 339, + "order": 340, "name": "dlgai12", "count": 4, "languages": 1 }, - { - "order": 340, - "name": "rodrigoghr", - "count": 4, - "languages": 1 - }, { "order": 341, - "name": "txuky", + "name": "rodrigoghr", "count": 4, "languages": 1 }, { "order": 342, - "name": "nox456", + "name": "txuky", "count": 4, "languages": 1 }, { "order": 343, - "name": "mplatab", + "name": "nox456", "count": 4, "languages": 1 }, { "order": 344, - "name": "angell4s", + "name": "mplatab", "count": 4, "languages": 1 }, { "order": 345, - "name": "quejuan52", + "name": "angell4s", "count": 4, "languages": 1 }, { "order": 346, - "name": "axelprz", + "name": "quejuan52", "count": 4, "languages": 1 }, { "order": 347, - "name": "javirub", + "name": "axelprz", "count": 4, "languages": 1 }, { "order": 348, - "name": "mallcca", + "name": "javirub", "count": 4, "languages": 1 }, { "order": 349, - "name": "sunjamer", + "name": "mallcca", "count": 4, "languages": 1 }, { "order": 350, - "name": "carrenoalexander", + "name": "sunjamer", "count": 4, "languages": 1 }, { "order": 351, - "name": "jadraz", + "name": "carrenoalexander", "count": 4, "languages": 1 }, { "order": 352, - "name": "anvildestroyer", + "name": "jadraz", "count": 4, "languages": 1 }, { "order": 353, - "name": "luissssoto", + "name": "anvildestroyer", "count": 4, "languages": 1 }, { "order": 354, - "name": "albertorevel", + "name": "luissssoto", "count": 4, "languages": 1 }, { "order": 355, - "name": "juanca2805", + "name": "albertorevel", "count": 4, "languages": 1 }, { "order": 356, - "name": "bladi23", + "name": "juanca2805", "count": 4, "languages": 1 }, { "order": 357, - "name": "blasbarragan", + "name": "bladi23", "count": 4, "languages": 1 }, { "order": 358, - "name": "jerrysantana", + "name": "blasbarragan", "count": 4, "languages": 1 }, { "order": 359, - "name": "abel-ade", + "name": "jerrysantana", "count": 4, "languages": 1 }, { "order": 360, - "name": "jairo-alejandro", + "name": "abel-ade", "count": 4, "languages": 1 }, { "order": 361, - "name": "sbs24", + "name": "jairo-alejandro", "count": 4, "languages": 1 }, { "order": 362, - "name": "traver79", + "name": "sbs24", "count": 4, "languages": 1 }, { "order": 363, - "name": "ramxv", + "name": "traver79", "count": 4, "languages": 1 }, { "order": 364, - "name": "inkhemi", + "name": "ramxv", "count": 4, "languages": 1 }, { "order": 365, - "name": "juperdev", + "name": "inkhemi", "count": 4, "languages": 1 }, { "order": 366, - "name": "d1d4cum", + "name": "juperdev", "count": 4, "languages": 1 }, @@ -3512,3936 +3512,3960 @@ }, { "order": 505, - "name": "juxxon23", + "name": "mantaras96", "count": 3, "languages": 1 }, { "order": 506, - "name": "frangarmez21", + "name": "juxxon23", "count": 3, "languages": 1 }, { "order": 507, - "name": "ikeragi05", + "name": "frangarmez21", "count": 3, "languages": 1 }, { "order": 508, - "name": "johnalexguerrero", + "name": "ikeragi05", "count": 3, "languages": 1 }, { "order": 509, - "name": "devvdroid01", - "count": 2, - "languages": 2 + "name": "johnalexguerrero", + "count": 3, + "languages": 1 }, { "order": 510, - "name": "sgb004", + "name": "devvdroid01", "count": 2, "languages": 2 }, { "order": 511, - "name": "chuanmi", + "name": "sgb004", "count": 2, "languages": 2 }, { "order": 512, - "name": "jlcareglio", + "name": "chuanmi", "count": 2, "languages": 2 }, { "order": 513, - "name": "jurgen-alfaro", + "name": "jlcareglio", "count": 2, "languages": 2 }, { "order": 514, - "name": "lydaf", + "name": "jurgen-alfaro", "count": 2, "languages": 2 }, { "order": 515, - "name": "carresoft", + "name": "lydaf", "count": 2, "languages": 2 }, { "order": 516, - "name": "ismaelmatiz", + "name": "carresoft", "count": 2, "languages": 2 }, { "order": 517, - "name": "tecfer", + "name": "ismaelmatiz", "count": 2, "languages": 2 }, { "order": 518, - "name": "elsanty08", + "name": "tecfer", "count": 2, "languages": 2 }, { "order": 519, - "name": "jorgesilencio", + "name": "elsanty08", "count": 2, "languages": 2 }, { "order": 520, - "name": "berentolkien", + "name": "jorgesilencio", "count": 2, "languages": 2 }, { "order": 521, - "name": "felipedev303", + "name": "berentolkien", "count": 2, "languages": 2 }, { "order": 522, - "name": "lemito66", + "name": "felipedev303", "count": 2, "languages": 2 }, { "order": 523, - "name": "alexsamboy", + "name": "lemito66", "count": 2, "languages": 2 }, { "order": 524, - "name": "enrgarvic", + "name": "alexsamboy", "count": 2, "languages": 2 }, { "order": 525, - "name": "jovany-java", + "name": "enrgarvic", "count": 2, "languages": 2 }, { "order": 526, - "name": "raul-progr", + "name": "jovany-java", "count": 2, "languages": 2 }, { "order": 527, - "name": "jmofuture", + "name": "raul-progr", "count": 2, "languages": 2 }, { "order": 528, - "name": "angel-alvarez-dev", + "name": "jmofuture", "count": 2, "languages": 2 }, { "order": 529, - "name": "lilberick", + "name": "angel-alvarez-dev", "count": 2, "languages": 2 }, { "order": 530, - "name": "camiloforero1997", + "name": "lilberick", "count": 2, "languages": 2 }, { "order": 531, - "name": "alejosor", + "name": "camiloforero1997", "count": 2, "languages": 2 }, { "order": 532, - "name": "juan-wills", + "name": "alejosor", "count": 2, "languages": 2 }, { "order": 533, - "name": "lurtur", + "name": "juan-wills", "count": 2, "languages": 2 }, { "order": 534, - "name": "jhonatanmustiolacas", + "name": "lurtur", "count": 2, "languages": 2 }, { "order": 535, - "name": "elmarqueli", + "name": "jhonatanmustiolacas", "count": 2, - "languages": 1 + "languages": 2 }, { "order": 536, - "name": "tiaguiito3", + "name": "elmarqueli", "count": 2, "languages": 1 }, { "order": 537, - "name": "angelargumedo", + "name": "tiaguiito3", "count": 2, "languages": 1 }, { "order": 538, - "name": "reaien", + "name": "angelargumedo", "count": 2, "languages": 1 }, { "order": 539, - "name": "rikar20", + "name": "reaien", "count": 2, "languages": 1 }, { "order": 540, - "name": "vdroiid", + "name": "rikar20", "count": 2, "languages": 1 }, { "order": 541, - "name": "frannmv", + "name": "vdroiid", "count": 2, "languages": 1 }, { "order": 542, - "name": "rrcoder", + "name": "frannmv", "count": 2, "languages": 1 }, { "order": 543, - "name": "diegosilval", + "name": "rrcoder", "count": 2, "languages": 1 }, { "order": 544, - "name": "nandaalf", + "name": "diegosilval", "count": 2, "languages": 1 }, { "order": 545, - "name": "hawkbott", + "name": "nandaalf", "count": 2, "languages": 1 }, { "order": 546, - "name": "tomasmarquez81", + "name": "hawkbott", "count": 2, "languages": 1 }, { "order": 547, - "name": "poetry0354", + "name": "tomasmarquez81", "count": 2, "languages": 1 }, { "order": 548, - "name": "santiagocuevas2003", + "name": "poetry0354", "count": 2, "languages": 1 }, { "order": 549, - "name": "lmedina96", + "name": "santiagocuevas2003", "count": 2, "languages": 1 }, { "order": 550, - "name": "lorenamesa", + "name": "lmedina96", "count": 2, "languages": 1 }, { "order": 551, - "name": "raulallue", + "name": "lorenamesa", "count": 2, "languages": 1 }, { "order": 552, - "name": "luciarf", + "name": "raulallue", "count": 2, "languages": 1 }, { "order": 553, - "name": "aserranot", + "name": "luciarf", "count": 2, "languages": 1 }, { "order": 554, - "name": "devcherry1", + "name": "aserranot", "count": 2, "languages": 1 }, { "order": 555, - "name": "yowcloud", + "name": "devcherry1", "count": 2, "languages": 1 }, { "order": 556, - "name": "fefestuve", + "name": "yowcloud", "count": 2, "languages": 1 }, { "order": 557, - "name": "fsfigueroa77", + "name": "fefestuve", "count": 2, "languages": 1 }, { "order": 558, - "name": "nahuelborromeo", + "name": "fsfigueroa77", "count": 2, "languages": 1 }, { "order": 559, - "name": "peibolstrike", + "name": "nahuelborromeo", "count": 2, "languages": 1 }, { "order": 560, - "name": "dararod", + "name": "peibolstrike", "count": 2, "languages": 1 }, { "order": 561, - "name": "waldid32", + "name": "dararod", "count": 2, "languages": 1 }, { "order": 562, - "name": "reanthonyh", + "name": "navarroemiliano", "count": 2, "languages": 1 }, { "order": 563, - "name": "roilhi", + "name": "waldid32", "count": 2, "languages": 1 }, { "order": 564, - "name": "cristiansystem", + "name": "reanthonyh", "count": 2, "languages": 1 }, { "order": 565, - "name": "evelynnobile", + "name": "roilhi", "count": 2, "languages": 1 }, { "order": 566, - "name": "nicolastapiasanz", + "name": "cristiansystem", "count": 2, "languages": 1 }, { "order": 567, - "name": "gomezcamilo9701", + "name": "evelynnobile", "count": 2, "languages": 1 }, { "order": 568, - "name": "vicgallego", + "name": "nicolastapiasanz", "count": 2, "languages": 1 }, { "order": 569, - "name": "freddyasierraj", + "name": "gomezcamilo9701", "count": 2, "languages": 1 }, { "order": 570, - "name": "luis-vb", + "name": "vicgallego", "count": 2, "languages": 1 }, { "order": 571, - "name": "vikkanh", + "name": "freddyasierraj", "count": 2, "languages": 1 }, { "order": 572, - "name": "juaruibr", + "name": "luis-vb", "count": 2, "languages": 1 }, { "order": 573, - "name": "crisdev3", + "name": "vikkanh", "count": 2, "languages": 1 }, { "order": 574, - "name": "frealexandro", + "name": "juaruibr", "count": 2, "languages": 1 }, { "order": 575, - "name": "gamitocu", + "name": "crisdev3", "count": 2, "languages": 1 }, { "order": 576, - "name": "saracorraless", + "name": "frealexandro", "count": 2, "languages": 1 }, { "order": 577, - "name": "cesarocbu", + "name": "gamitocu", "count": 2, "languages": 1 }, { "order": 578, - "name": "jeisonredondo", + "name": "saracorraless", "count": 2, "languages": 1 }, { "order": 579, - "name": "alanox1", + "name": "cesarocbu", "count": 2, "languages": 1 }, { "order": 580, - "name": "christianumb", + "name": "jeisonredondo", "count": 2, "languages": 1 }, { "order": 581, - "name": "jhonf1992", + "name": "alanox1", "count": 2, "languages": 1 }, { "order": 582, - "name": "k4rv3r", + "name": "christianumb", "count": 2, "languages": 1 }, { "order": 583, - "name": "rikar2o", + "name": "jhonf1992", "count": 2, "languages": 1 }, { "order": 584, - "name": "rolo27s", + "name": "k4rv3r", "count": 2, "languages": 1 }, { "order": 585, - "name": "franciscocuminilondero", + "name": "rikar2o", "count": 2, "languages": 1 }, { "order": 586, - "name": "wesborland-github", + "name": "rolo27s", "count": 2, "languages": 1 }, { "order": 587, - "name": "doblea74", + "name": "franciscocuminilondero", "count": 2, "languages": 1 }, { "order": 588, - "name": "matiasfarfan89", + "name": "wesborland-github", "count": 2, "languages": 1 }, { "order": 589, - "name": "nxl22", + "name": "doblea74", "count": 2, "languages": 1 }, { "order": 590, - "name": "valeriatorrealba", + "name": "matiasfarfan89", "count": 2, "languages": 1 }, { "order": 591, - "name": "farthaz", + "name": "nxl22", "count": 2, "languages": 1 }, { "order": 592, - "name": "aleoe01", + "name": "valeriatorrealba", "count": 2, "languages": 1 }, { "order": 593, - "name": "jaimemunozdev", + "name": "farthaz", "count": 2, "languages": 1 }, { "order": 594, - "name": "miguelrejon96", + "name": "aleoe01", "count": 2, "languages": 1 }, { "order": 595, - "name": "jorge186414", + "name": "jaimemunozdev", "count": 2, "languages": 1 }, { "order": 596, - "name": "andnikdev", + "name": "miguelrejon96", "count": 2, "languages": 1 }, { "order": 597, - "name": "soldochris", + "name": "jorge186414", "count": 2, "languages": 1 }, { "order": 598, - "name": "leonardo291024", + "name": "andnikdev", "count": 2, "languages": 1 }, { "order": 599, - "name": "mickel-arroz", + "name": "soldochris", "count": 2, "languages": 1 }, { "order": 600, - "name": "gianbordon", + "name": "leonardo291024", "count": 2, "languages": 1 }, { "order": 601, - "name": "cpcarlosprieto", + "name": "mickel-arroz", "count": 2, "languages": 1 }, { "order": 602, - "name": "juangomezn", + "name": "gianbordon", "count": 2, "languages": 1 }, { "order": 603, - "name": "angelvelasco1", + "name": "cpcarlosprieto", "count": 2, "languages": 1 }, { "order": 604, - "name": "ssanjua", + "name": "juangomezn", "count": 2, "languages": 1 }, { "order": 605, - "name": "murquisdev", + "name": "angelvelasco1", "count": 2, "languages": 1 }, { "order": 606, - "name": "duendeintemporal", + "name": "ssanjua", "count": 2, "languages": 1 }, { "order": 607, - "name": "davhage", + "name": "murquisdev", "count": 2, "languages": 1 }, { "order": 608, - "name": "erikayeah", + "name": "duendeintemporal", "count": 2, "languages": 1 }, { "order": 609, - "name": "misterdan100", + "name": "davhage", "count": 2, "languages": 1 }, { "order": 610, - "name": "memogv", + "name": "erikayeah", "count": 2, "languages": 1 }, { "order": 611, - "name": "glaboryp", + "name": "misterdan100", "count": 2, "languages": 1 }, { "order": 612, - "name": "ovjohn", + "name": "memogv", "count": 2, "languages": 1 }, { "order": 613, - "name": "haryblanco20", + "name": "glaboryp", "count": 2, "languages": 1 }, { "order": 614, - "name": "christianhernandezb", + "name": "ovjohn", "count": 2, "languages": 1 }, { "order": 615, - "name": "akzorla", + "name": "haryblanco20", "count": 2, "languages": 1 }, { "order": 616, - "name": "0pio", + "name": "christianhernandezb", "count": 2, "languages": 1 }, { "order": 617, - "name": "porto1090", + "name": "akzorla", "count": 2, "languages": 1 }, { "order": 618, - "name": "johannhsdev", + "name": "0pio", "count": 2, "languages": 1 }, { "order": 619, - "name": "jago86", + "name": "porto1090", "count": 2, "languages": 1 }, { "order": 620, - "name": "diegokarabin", + "name": "johannhsdev", "count": 2, "languages": 1 }, { "order": 621, - "name": "gugliio", + "name": "jago86", "count": 2, "languages": 1 }, { "order": 622, - "name": "kcx46", + "name": "diegokarabin", "count": 2, "languages": 1 }, { "order": 623, - "name": "nachodev7", + "name": "gugliio", "count": 2, "languages": 1 }, { "order": 624, - "name": "fernandoatello", + "name": "kcx46", "count": 2, "languages": 1 }, { "order": 625, - "name": "pablosalme", + "name": "nachodev7", "count": 2, "languages": 1 }, { "order": 626, - "name": "jsacristanbeltri", + "name": "fernandoatello", "count": 2, "languages": 1 }, { "order": 627, - "name": "baauus", + "name": "pablosalme", "count": 2, "languages": 1 }, { "order": 628, - "name": "s384", + "name": "jsacristanbeltri", "count": 2, "languages": 1 }, { "order": 629, - "name": "lauradiazm29", + "name": "baauus", "count": 2, "languages": 1 }, { "order": 630, - "name": "pakomor", + "name": "s384", "count": 2, "languages": 1 }, { "order": 631, - "name": "adogdev", + "name": "lauradiazm29", "count": 2, "languages": 1 }, { "order": 632, - "name": "eriickm", + "name": "pakomor", "count": 2, "languages": 1 }, { "order": 633, - "name": "christiancoc", + "name": "adogdev", "count": 2, "languages": 1 }, { "order": 634, - "name": "rojasricoo", + "name": "eriickm", "count": 2, "languages": 1 }, { "order": 635, - "name": "inf015", + "name": "christiancoc", "count": 2, "languages": 1 }, { "order": 636, - "name": "csaraugusto2", + "name": "rojasricoo", "count": 2, "languages": 1 }, { "order": 637, - "name": "zalazarmartin", + "name": "inf015", "count": 2, "languages": 1 }, { "order": 638, - "name": "ziellucio01", + "name": "csaraugusto2", "count": 2, "languages": 1 }, { "order": 639, - "name": "dota43ver", + "name": "zalazarmartin", "count": 2, "languages": 1 }, { "order": 640, - "name": "fjsubero", + "name": "ziellucio01", "count": 2, "languages": 1 }, { "order": 641, - "name": "julind0", + "name": "dota43ver", "count": 2, "languages": 1 }, { "order": 642, - "name": "jmontoyac", + "name": "fjsubero", "count": 2, "languages": 1 }, { "order": 643, - "name": "dariangl", + "name": "julind0", "count": 2, "languages": 1 }, { "order": 644, - "name": "ggtorca", + "name": "jmontoyac", "count": 2, "languages": 1 }, { "order": 645, - "name": "soydaviddev", + "name": "dariangl", "count": 2, "languages": 1 }, { "order": 646, - "name": "e-techgod", + "name": "ggtorca", "count": 2, "languages": 1 }, { "order": 647, - "name": "aboredllama", + "name": "soydaviddev", "count": 2, "languages": 1 }, { "order": 648, - "name": "nevaito", + "name": "e-techgod", "count": 2, "languages": 1 }, { "order": 649, - "name": "nach012", + "name": "aboredllama", "count": 2, "languages": 1 }, { "order": 650, - "name": "dans182", + "name": "nevaito", "count": 2, "languages": 1 }, { "order": 651, - "name": "freyfonseca", + "name": "josue-py", "count": 2, "languages": 1 }, { "order": 652, - "name": "aegpgrafologo", + "name": "nach012", "count": 2, "languages": 1 }, { "order": 653, - "name": "alejandrovelasquezr", + "name": "dans182", "count": 2, "languages": 1 }, { "order": 654, - "name": "fabianpa505", + "name": "freyfonseca", "count": 2, "languages": 1 }, { "order": 655, - "name": "carlosmarte23", + "name": "aegpgrafologo", "count": 2, "languages": 1 }, { "order": 656, - "name": "anblackter", + "name": "alejandrovelasquezr", "count": 2, "languages": 1 }, { "order": 657, - "name": "tic4", + "name": "fabianpa505", "count": 2, "languages": 1 }, { "order": 658, - "name": "josephfaster", + "name": "carlosmarte23", "count": 2, "languages": 1 }, { "order": 659, - "name": "gregfc95", + "name": "anblackter", "count": 2, "languages": 1 }, { "order": 660, - "name": "victore16", + "name": "tic4", "count": 2, "languages": 1 }, { "order": 661, - "name": "dokeys28", + "name": "josephfaster", "count": 2, "languages": 1 }, { "order": 662, - "name": "noaregui", + "name": "gregfc95", "count": 2, "languages": 1 }, { "order": 663, - "name": "alejandro-mantilla", + "name": "victore16", "count": 2, "languages": 1 }, { "order": 664, - "name": "gmigues", + "name": "dokeys28", "count": 2, "languages": 1 }, { "order": 665, - "name": "juanseevn", + "name": "noaregui", "count": 2, "languages": 1 }, { "order": 666, - "name": "vesubius", + "name": "alejandro-mantilla", "count": 2, "languages": 1 }, { "order": 667, - "name": "zeti1231", + "name": "gmigues", "count": 2, "languages": 1 }, { "order": 668, - "name": "cipollalucas", + "name": "juanseevn", "count": 2, "languages": 1 }, { "order": 669, - "name": "miguelberrio0810", + "name": "vesubius", "count": 2, "languages": 1 }, { "order": 670, - "name": "santiagodc8", + "name": "zeti1231", "count": 2, "languages": 1 }, { "order": 671, - "name": "pedrojog", + "name": "cipollalucas", "count": 2, "languages": 1 }, { "order": 672, - "name": "culebropalido", + "name": "miguelberrio0810", "count": 2, "languages": 1 }, { "order": 673, - "name": "marioyellowy", + "name": "santiagodc8", "count": 2, "languages": 1 }, { "order": 674, - "name": "jcknot", + "name": "pedrojog", "count": 2, "languages": 1 }, { "order": 675, - "name": "peeanoot", + "name": "culebropalido", "count": 2, "languages": 1 }, { "order": 676, - "name": "coronelsam", + "name": "marioyellowy", "count": 2, "languages": 1 }, { "order": 677, - "name": "arhl2023", + "name": "jcknot", "count": 2, "languages": 1 }, { "order": 678, - "name": "marianoemir", + "name": "peeanoot", "count": 2, "languages": 1 }, { "order": 679, - "name": "isidrojng", + "name": "coronelsam", "count": 2, "languages": 1 }, { "order": 680, - "name": "anaroncero", + "name": "arhl2023", "count": 2, "languages": 1 }, { "order": 681, - "name": "hersac", + "name": "marianoemir", "count": 2, "languages": 1 }, { "order": 682, - "name": "vecinacoo", + "name": "isidrojng", "count": 2, "languages": 1 }, { "order": 683, - "name": "juanmjimenezs", + "name": "anaroncero", "count": 2, "languages": 1 }, { "order": 684, - "name": "armentaangel", + "name": "hersac", "count": 2, "languages": 1 }, { "order": 685, - "name": "lordzzz777", + "name": "vecinacoo", "count": 2, "languages": 1 }, { "order": 686, - "name": "sdm29gh", + "name": "juanmjimenezs", "count": 2, "languages": 1 }, { "order": 687, - "name": "zonnen69", + "name": "armentaangel", "count": 2, "languages": 1 }, { "order": 688, - "name": "jmichael39", + "name": "lordzzz777", "count": 2, "languages": 1 }, { "order": 689, - "name": "davidvilem", + "name": "sdm29gh", "count": 2, "languages": 1 }, { "order": 690, - "name": "mantaras96", + "name": "zonnen69", "count": 2, "languages": 1 }, { "order": 691, - "name": "torvicv", - "count": 1, + "name": "jmichael39", + "count": 2, "languages": 1 }, { "order": 692, - "name": "dgquintero", - "count": 1, + "name": "davidvilem", + "count": 2, "languages": 1 }, { "order": 693, - "name": "c-blskv", + "name": "torvicv", "count": 1, "languages": 1 }, { "order": 694, - "name": "emaerniquez", + "name": "dgquintero", "count": 1, "languages": 1 }, { "order": 695, - "name": "carolhs92", + "name": "c-blskv", "count": 1, "languages": 1 }, { "order": 696, - "name": "leonardo-henao", + "name": "emaerniquez", "count": 1, "languages": 1 }, { "order": 697, - "name": "juancamilofvx", + "name": "carolhs92", "count": 1, "languages": 1 }, { "order": 698, - "name": "vikernes27666", + "name": "leonardo-henao", "count": 1, "languages": 1 }, { "order": 699, - "name": "cub-tor", + "name": "juancamilofvx", "count": 1, "languages": 1 }, { "order": 700, - "name": "nightmare79", + "name": "vikernes27666", "count": 1, "languages": 1 }, { "order": 701, - "name": "carlosmperezm", + "name": "cub-tor", "count": 1, "languages": 1 }, { "order": 702, - "name": "gonzalinuz18", + "name": "nightmare79", "count": 1, "languages": 1 }, { "order": 703, - "name": "qwik-zghieb", + "name": "carlosmperezm", "count": 1, "languages": 1 }, { "order": 704, - "name": "miquelrr", + "name": "gonzalinuz18", "count": 1, "languages": 1 }, { "order": 705, - "name": "miguel2rar", + "name": "qwik-zghieb", "count": 1, "languages": 1 }, { "order": 706, - "name": "eamartin", + "name": "miquelrr", "count": 1, "languages": 1 }, { "order": 707, - "name": "gabriel-dangelo", + "name": "miguel2rar", "count": 1, "languages": 1 }, { "order": 708, - "name": "agustinfccll", + "name": "eamartin", "count": 1, "languages": 1 }, { "order": 709, - "name": "anitandil", + "name": "gabriel-dangelo", "count": 1, "languages": 1 }, { "order": 710, - "name": "evilpodato04", + "name": "agustinfccll", "count": 1, "languages": 1 }, { "order": 711, - "name": "francomyburg", + "name": "anitandil", "count": 1, "languages": 1 }, { "order": 712, - "name": "neicervb", + "name": "evilpodato04", "count": 1, "languages": 1 }, { "order": 713, - "name": "josephinoo", + "name": "francomyburg", "count": 1, "languages": 1 }, { "order": 714, - "name": "arathhh8", + "name": "neicervb", "count": 1, "languages": 1 }, { "order": 715, - "name": "paluzz", + "name": "josephinoo", "count": 1, "languages": 1 }, { "order": 716, - "name": "theposi", + "name": "arathhh8", "count": 1, "languages": 1 }, { "order": 717, - "name": "vinyoles", + "name": "paluzz", "count": 1, "languages": 1 }, { "order": 718, - "name": "omarroman29", + "name": "theposi", "count": 1, "languages": 1 }, { "order": 719, - "name": "1cel4nc3", + "name": "vinyoles", "count": 1, "languages": 1 }, { "order": 720, - "name": "sergio-strazzacappa", + "name": "omarroman29", "count": 1, "languages": 1 }, { "order": 721, - "name": "corvo-99", + "name": "1cel4nc3", "count": 1, "languages": 1 }, { "order": 722, - "name": "danielcastillo1112", + "name": "sergio-strazzacappa", "count": 1, "languages": 1 }, { "order": 723, - "name": "malkarmah", + "name": "corvo-99", "count": 1, "languages": 1 }, { "order": 724, - "name": "sirvega83", + "name": "danielcastillo1112", "count": 1, "languages": 1 }, { "order": 725, - "name": "franpua", + "name": "malkarmah", "count": 1, "languages": 1 }, { "order": 726, - "name": "van-02", + "name": "sirvega83", "count": 1, "languages": 1 }, { "order": 727, - "name": "x3mboy", + "name": "franpua", "count": 1, "languages": 1 }, { "order": 728, - "name": "mickysoft", + "name": "van-02", "count": 1, "languages": 1 }, { "order": 729, - "name": "deimoshall", + "name": "x3mboy", "count": 1, "languages": 1 }, { "order": 730, - "name": "palons29", + "name": "mickysoft", "count": 1, "languages": 1 }, { "order": 731, - "name": "serg032", + "name": "deimoshall", "count": 1, "languages": 1 }, { "order": 732, - "name": "seigigim", + "name": "palons29", "count": 1, "languages": 1 }, { "order": 733, - "name": "cibacoa", + "name": "serg032", "count": 1, "languages": 1 }, { "order": 734, - "name": "axelwestman", + "name": "seigigim", "count": 1, "languages": 1 }, { "order": 735, - "name": "javodevon", + "name": "cibacoa", "count": 1, "languages": 1 }, { "order": 736, - "name": "mauricioyair", + "name": "axelwestman", "count": 1, "languages": 1 }, { "order": 737, - "name": "manuhssj", + "name": "javodevon", "count": 1, "languages": 1 }, { "order": 738, - "name": "coletonosh", + "name": "mauricioyair", "count": 1, "languages": 1 }, { "order": 739, - "name": "manugonzalito", + "name": "manuhssj", "count": 1, "languages": 1 }, { "order": 740, - "name": "gizelads", + "name": "coletonosh", "count": 1, "languages": 1 }, { "order": 741, - "name": "lucc4sz", + "name": "manugonzalito", "count": 1, "languages": 1 }, { "order": 742, - "name": "feliaguirre7", + "name": "gizelads", "count": 1, "languages": 1 }, { "order": 743, - "name": "rulo77", + "name": "lucc4sz", "count": 1, "languages": 1 }, { "order": 744, - "name": "is2095", + "name": "feliaguirre7", "count": 1, "languages": 1 }, { "order": 745, - "name": "jancalos", + "name": "rulo77", "count": 1, "languages": 1 }, { "order": 746, - "name": "marcosapodaca", + "name": "is2095", "count": 1, "languages": 1 }, { "order": 747, - "name": "angelcruzg23", + "name": "jancalos", "count": 1, "languages": 1 }, { "order": 748, - "name": "ca2puntosv", + "name": "marcosapodaca", "count": 1, "languages": 1 }, { "order": 749, - "name": "armm77", + "name": "angelcruzg23", "count": 1, "languages": 1 }, { "order": 750, - "name": "afacorroloscos", + "name": "ca2puntosv", "count": 1, "languages": 1 }, { "order": 751, - "name": "rocadev2714", + "name": "armm77", "count": 1, "languages": 1 }, { "order": 752, - "name": "chrisfelixgil", + "name": "afacorroloscos", "count": 1, "languages": 1 }, { "order": 753, - "name": "sandrarg85", + "name": "rocadev2714", "count": 1, "languages": 1 }, { "order": 754, - "name": "rootqui", + "name": "chrisfelixgil", "count": 1, "languages": 1 }, { "order": 755, - "name": "ishimaku", + "name": "sandrarg85", "count": 1, "languages": 1 }, { "order": 756, - "name": "pkmaventura", + "name": "rootqui", "count": 1, "languages": 1 }, { "order": 757, - "name": "miguelgargallo", + "name": "ishimaku", "count": 1, "languages": 1 }, { "order": 758, - "name": "astriebeck", + "name": "pkmaventura", "count": 1, "languages": 1 }, { "order": 759, - "name": "lobogeekmx", + "name": "miguelgargallo", "count": 1, "languages": 1 }, { "order": 760, - "name": "marvinagui", + "name": "astriebeck", "count": 1, "languages": 1 }, { "order": 761, - "name": "marqitos", + "name": "lobogeekmx", "count": 1, "languages": 1 }, { "order": 762, - "name": "nunezlagos", + "name": "marvinagui", "count": 1, "languages": 1 }, { "order": 763, - "name": "jcrobles99", + "name": "marqitos", "count": 1, "languages": 1 }, { "order": 764, - "name": "ledyam", + "name": "nunezlagos", "count": 1, "languages": 1 }, { "order": 765, - "name": "jatomas", + "name": "jcrobles99", "count": 1, "languages": 1 }, { "order": 766, - "name": "jaennova", + "name": "ledyam", "count": 1, "languages": 1 }, { "order": 767, - "name": "luisalberto22", + "name": "jatomas", "count": 1, "languages": 1 }, { "order": 768, - "name": "francisleble", + "name": "jaennova", "count": 1, "languages": 1 }, { "order": 769, - "name": "deiiviitdev", + "name": "luisalberto22", "count": 1, "languages": 1 }, { "order": 770, - "name": "braiso-22", + "name": "francisleble", "count": 1, "languages": 1 }, { "order": 771, - "name": "daniel-cas", + "name": "deiiviitdev", "count": 1, "languages": 1 }, { "order": 772, - "name": "acirdevelper", + "name": "braiso-22", "count": 1, "languages": 1 }, { "order": 773, - "name": "borjadelgadodev", + "name": "daniel-cas", "count": 1, "languages": 1 }, { "order": 774, - "name": "elpeque29", + "name": "acirdevelper", "count": 1, "languages": 1 }, { "order": 775, - "name": "jhordanluyo", + "name": "borjadelgadodev", "count": 1, "languages": 1 }, { "order": 776, - "name": "davidcv-dev", + "name": "elpeque29", "count": 1, "languages": 1 }, { "order": 777, - "name": "mbmaeso", + "name": "jhordanluyo", "count": 1, "languages": 1 }, { "order": 778, - "name": "alvarominarro", + "name": "davidcv-dev", "count": 1, "languages": 1 }, { "order": 779, - "name": "bjchavez", + "name": "mbmaeso", "count": 1, "languages": 1 }, { "order": 780, - "name": "madelefonb", + "name": "alvarominarro", "count": 1, "languages": 1 }, { "order": 781, - "name": "lfwzk", + "name": "bjchavez", "count": 1, "languages": 1 }, { "order": 782, - "name": "ercky1980", + "name": "madelefonb", "count": 1, "languages": 1 }, { "order": 783, - "name": "jsruedatorres", + "name": "lfwzk", "count": 1, "languages": 1 }, { "order": 784, - "name": "jacobrwx", + "name": "ercky1980", "count": 1, "languages": 1 }, { "order": 785, - "name": "abengl", + "name": "jsruedatorres", "count": 1, "languages": 1 }, { "order": 786, - "name": "jd-gm", + "name": "jacobrwx", "count": 1, "languages": 1 }, { "order": 787, - "name": "lucianogriffa", + "name": "abengl", "count": 1, "languages": 1 }, { "order": 788, - "name": "quirogapau", + "name": "jd-gm", "count": 1, "languages": 1 }, { "order": 789, - "name": "joseperesini", + "name": "lucianogriffa", "count": 1, "languages": 1 }, { "order": 790, - "name": "mhrosariom", + "name": "quirogapau", "count": 1, "languages": 1 }, { "order": 791, - "name": "sergioab7", + "name": "joseperesini", "count": 1, "languages": 1 }, { "order": 792, - "name": "santaravena", + "name": "mhrosariom", "count": 1, "languages": 1 }, { "order": 793, - "name": "datrujillog", + "name": "sergioab7", "count": 1, "languages": 1 }, { "order": 794, - "name": "johnniew81", + "name": "santaravena", "count": 1, "languages": 1 }, { "order": 795, - "name": "chriszaldana", + "name": "datrujillog", "count": 1, "languages": 1 }, { "order": 796, - "name": "antonioverdugo", + "name": "johnniew81", "count": 1, "languages": 1 }, { "order": 797, - "name": "kronomio", + "name": "chriszaldana", "count": 1, "languages": 1 }, { "order": 798, - "name": "kevinramirez28", + "name": "antonioverdugo", "count": 1, "languages": 1 }, { "order": 799, - "name": "juanpablo-a", + "name": "kronomio", "count": 1, "languages": 1 }, { "order": 800, - "name": "gerespinosa", + "name": "kevinramirez28", "count": 1, "languages": 1 }, { "order": 801, - "name": "1978acb", + "name": "juanpablo-a", "count": 1, "languages": 1 }, { "order": 802, - "name": "alexxawada", + "name": "gerespinosa", "count": 1, "languages": 1 }, { "order": 803, - "name": "ricarsur", + "name": "1978acb", "count": 1, "languages": 1 }, { "order": 804, - "name": "alemar16", + "name": "alexxawada", "count": 1, "languages": 1 }, { "order": 805, - "name": "pointfs", + "name": "ricarsur", "count": 1, "languages": 1 }, { "order": 806, - "name": "edperez07", + "name": "alemar16", "count": 1, "languages": 1 }, { "order": 807, - "name": "dacronik", + "name": "pointfs", "count": 1, "languages": 1 }, { "order": 808, - "name": "abraham9804", + "name": "edperez07", "count": 1, "languages": 1 }, { "order": 809, - "name": "afl0r3s", + "name": "dacronik", "count": 1, "languages": 1 }, { "order": 810, - "name": "dianelis1", + "name": "abraham9804", "count": 1, "languages": 1 }, { "order": 811, - "name": "fernandofl", + "name": "afl0r3s", "count": 1, "languages": 1 }, { "order": 812, - "name": "conrado85", + "name": "dianelis1", "count": 1, "languages": 1 }, { "order": 813, - "name": "agus-ig", + "name": "fernandofl", "count": 1, "languages": 1 }, { "order": 814, - "name": "alvarommedia", + "name": "conrado85", "count": 1, "languages": 1 }, { "order": 815, - "name": "maximotoro", + "name": "agus-ig", "count": 1, "languages": 1 }, { "order": 816, - "name": "m4xisil", + "name": "alvarommedia", "count": 1, "languages": 1 }, { "order": 817, - "name": "francomoreira", + "name": "maximotoro", "count": 1, "languages": 1 }, { "order": 818, - "name": "aleclto7", + "name": "m4xisil", "count": 1, "languages": 1 }, { "order": 819, - "name": "nnunezmedina", + "name": "francomoreira", "count": 1, "languages": 1 }, { "order": 820, - "name": "codejoss", + "name": "aleclto7", "count": 1, "languages": 1 }, { "order": 821, - "name": "yaojema", + "name": "nnunezmedina", "count": 1, "languages": 1 }, { "order": 822, - "name": "romanocoder", + "name": "codejoss", "count": 1, "languages": 1 }, { "order": 823, - "name": "sixtodev", + "name": "yaojema", "count": 1, "languages": 1 }, { "order": 824, - "name": "cgomezadolfo", + "name": "romanocoder", "count": 1, "languages": 1 }, { "order": 825, - "name": "rojasvargas", + "name": "sixtodev", "count": 1, "languages": 1 }, { "order": 826, - "name": "carlosdiaz-dev", + "name": "cgomezadolfo", "count": 1, "languages": 1 }, { "order": 827, - "name": "l3v1xx", + "name": "rojasvargas", "count": 1, "languages": 1 }, { "order": 828, - "name": "patricioguerra30", + "name": "carlosdiaz-dev", "count": 1, "languages": 1 }, { "order": 829, - "name": "lytsar", + "name": "l3v1xx", "count": 1, "languages": 1 }, { "order": 830, - "name": "siuldev", + "name": "patricioguerra30", "count": 1, "languages": 1 }, { "order": 831, - "name": "brayancordova1", + "name": "lytsar", "count": 1, "languages": 1 }, { "order": 832, - "name": "ronnieruuz", + "name": "siuldev", "count": 1, "languages": 1 }, { "order": 833, - "name": "yessikamichelle", + "name": "brayancordova1", "count": 1, "languages": 1 }, { "order": 834, - "name": "vainsito1", + "name": "ronnieruuz", "count": 1, "languages": 1 }, { "order": 835, - "name": "oscarletelier", + "name": "yessikamichelle", "count": 1, "languages": 1 }, { "order": 836, - "name": "kocho03", + "name": "vainsito1", "count": 1, "languages": 1 }, { "order": 837, - "name": "aidicoop", + "name": "oscarletelier", "count": 1, "languages": 1 }, { "order": 838, - "name": "albabp", + "name": "kocho03", "count": 1, "languages": 1 }, { "order": 839, - "name": "nozodev", + "name": "aidicoop", "count": 1, "languages": 1 }, { "order": 840, - "name": "mvillegas18", + "name": "albabp", "count": 1, "languages": 1 }, { "order": 841, - "name": "augustbs", + "name": "nozodev", "count": 1, "languages": 1 }, { "order": 842, - "name": "luchof5", + "name": "mvillegas18", "count": 1, "languages": 1 }, { "order": 843, - "name": "fullstackarlo", + "name": "augustbs", "count": 1, "languages": 1 }, { "order": 844, - "name": "mdemena", + "name": "luchof5", "count": 1, "languages": 1 }, { "order": 845, - "name": "cliverjimny123", + "name": "fullstackarlo", "count": 1, "languages": 1 }, { "order": 846, - "name": "rodmiggithub", + "name": "mdemena", "count": 1, "languages": 1 }, { "order": 847, - "name": "s9code", + "name": "cliverjimny123", "count": 1, "languages": 1 }, { "order": 848, - "name": "javieradev", + "name": "rodmiggithub", "count": 1, "languages": 1 }, { "order": 849, - "name": "xnomada", + "name": "s9code", "count": 1, "languages": 1 }, { "order": 850, - "name": "miguelsarm", + "name": "javieradev", "count": 1, "languages": 1 }, { "order": 851, - "name": "royhuamanavila", + "name": "xnomada", "count": 1, "languages": 1 }, { "order": 852, - "name": "imista", + "name": "miguelsarm", "count": 1, "languages": 1 }, { "order": 853, - "name": "denisortega", + "name": "royhuamanavila", "count": 1, "languages": 1 }, { "order": 854, - "name": "kouski", + "name": "imista", "count": 1, "languages": 1 }, { "order": 855, - "name": "leydimadrid", + "name": "denisortega", "count": 1, "languages": 1 }, { "order": 856, - "name": "frannm29", + "name": "kouski", "count": 1, "languages": 1 }, { "order": 857, - "name": "saintsluis", + "name": "leydimadrid", "count": 1, "languages": 1 }, { "order": 858, - "name": "gc796", + "name": "frannm29", "count": 1, "languages": 1 }, { "order": 859, - "name": "pierre-ol", + "name": "saintsluis", "count": 1, "languages": 1 }, { "order": 860, - "name": "francescoalterio", + "name": "gc796", "count": 1, "languages": 1 }, { "order": 861, - "name": "gustavoguerrero", + "name": "pierre-ol", "count": 1, "languages": 1 }, { "order": 862, - "name": "diegoxxd", + "name": "francescoalterio", "count": 1, "languages": 1 }, { "order": 863, - "name": "walkerlyna", + "name": "gustavoguerrero", "count": 1, "languages": 1 }, { "order": 864, - "name": "erysnell", + "name": "diegoxxd", "count": 1, "languages": 1 }, { "order": 865, - "name": "sejotaz", + "name": "fzcarlitos", "count": 1, "languages": 1 }, { "order": 866, - "name": "frcan89", + "name": "walkerlyna", "count": 1, "languages": 1 }, { "order": 867, - "name": "nicorey89", + "name": "erysnell", "count": 1, "languages": 1 }, { "order": 868, - "name": "alexis0717", + "name": "sejotaz", "count": 1, "languages": 1 }, { "order": 869, - "name": "edgonzz", + "name": "frcan89", "count": 1, "languages": 1 }, { "order": 870, - "name": "vmga09", + "name": "nicorey89", "count": 1, "languages": 1 }, { "order": 871, - "name": "lfam200", + "name": "alexis0717", "count": 1, "languages": 1 }, { "order": 872, - "name": "kenzambrano", + "name": "edgonzz", "count": 1, "languages": 1 }, { "order": 873, - "name": "dmhenaopa", + "name": "vmga09", "count": 1, "languages": 1 }, { "order": 874, - "name": "jpiacaruso", + "name": "lfam200", "count": 1, "languages": 1 }, { "order": 875, - "name": "isnatthy", + "name": "kenzambrano", "count": 1, "languages": 1 }, { "order": 876, - "name": "peticas", + "name": "dmhenaopa", "count": 1, "languages": 1 }, { "order": 877, - "name": "flarien", + "name": "jpiacaruso", "count": 1, "languages": 1 }, { "order": 878, - "name": "franciscokarriere", + "name": "isnatthy", "count": 1, "languages": 1 }, { "order": 879, - "name": "pipeyz21", + "name": "diego-santana23", "count": 1, "languages": 1 }, { "order": 880, - "name": "luisgarm", + "name": "peticas", "count": 1, "languages": 1 }, { "order": 881, - "name": "tetotille", + "name": "flarien", "count": 1, "languages": 1 }, { "order": 882, - "name": "vorosdev", + "name": "franciscokarriere", "count": 1, "languages": 1 }, { "order": 883, - "name": "santiagomac", + "name": "pipeyz21", "count": 1, "languages": 1 }, { "order": 884, - "name": "implevacui", + "name": "luisgarm", "count": 1, "languages": 1 }, { "order": 885, - "name": "fede6299", + "name": "tetotille", "count": 1, "languages": 1 }, { "order": 886, - "name": "kevin05m", + "name": "vorosdev", "count": 1, "languages": 1 }, { "order": 887, - "name": "diegomm27", + "name": "santiagomac", "count": 1, "languages": 1 }, { "order": 888, - "name": "pablo-lnx", + "name": "implevacui", "count": 1, "languages": 1 }, { "order": 889, - "name": "darkohokage", + "name": "fede6299", "count": 1, "languages": 1 }, { "order": 890, - "name": "jhonnfl", + "name": "kevin05m", "count": 1, "languages": 1 }, { "order": 891, - "name": "jarzatedev", + "name": "diegomm27", "count": 1, "languages": 1 }, { "order": 892, - "name": "brunom-93", + "name": "pablo-lnx", "count": 1, "languages": 1 }, { "order": 893, - "name": "alejandroruiz23", + "name": "darkohokage", "count": 1, "languages": 1 }, { "order": 894, - "name": "trollface77", + "name": "jhonnfl", "count": 1, "languages": 1 }, { "order": 895, - "name": "jaimesoftdev", + "name": "jarzatedev", "count": 1, "languages": 1 }, { "order": 896, - "name": "edm1ya", + "name": "brunom-93", "count": 1, "languages": 1 }, { "order": 897, - "name": "tartabullroberto", + "name": "alejandroruiz23", "count": 1, "languages": 1 }, { "order": 898, - "name": "serg-pq", + "name": "trollface77", "count": 1, "languages": 1 }, { "order": 899, - "name": "lara-vel-dev", + "name": "jaimesoftdev", "count": 1, "languages": 1 }, { "order": 900, - "name": "alexisbarradev", + "name": "edm1ya", "count": 1, "languages": 1 }, { "order": 901, - "name": "kelvincb", + "name": "tartabullroberto", "count": 1, "languages": 1 }, { "order": 902, + "name": "serg-pq", + "count": 1, + "languages": 1 + }, + { + "order": 903, + "name": "lara-vel-dev", + "count": 1, + "languages": 1 + }, + { + "order": 904, + "name": "alexisbarradev", + "count": 1, + "languages": 1 + }, + { + "order": 905, + "name": "kelvincb", + "count": 1, + "languages": 1 + }, + { + "order": 906, "name": "carlostoledoe", "count": 1, "languages": 1 }, { - "order": 903, + "order": 907, "name": "gilbertho502", "count": 1, "languages": 1 }, { - "order": 904, + "order": 908, "name": "v0l0v", "count": 1, "languages": 1 }, { - "order": 905, + "order": 909, "name": "johao23", "count": 1, "languages": 1 }, { - "order": 906, + "order": 910, "name": "geridage", "count": 1, "languages": 1 }, { - "order": 907, + "order": 911, "name": "vmarialuzm", "count": 1, "languages": 1 }, { - "order": 908, + "order": 912, "name": "snowcardenas", "count": 1, "languages": 1 }, { - "order": 909, + "order": 913, "name": "and-y21", "count": 1, "languages": 1 }, { - "order": 910, + "order": 914, "name": "arturodlapaz17", "count": 1, "languages": 1 }, { - "order": 911, + "order": 915, "name": "manuu42", "count": 1, "languages": 1 }, { - "order": 912, + "order": 916, "name": "howlett9999", "count": 1, "languages": 1 }, { - "order": 913, + "order": 917, "name": "dkp-dev", "count": 1, "languages": 1 }, { - "order": 914, + "order": 918, "name": "hnaranjog", "count": 1, "languages": 1 }, { - "order": 915, + "order": 919, "name": "wallsified", "count": 1, "languages": 1 }, { - "order": 916, + "order": 920, "name": "lluistech", "count": 1, "languages": 1 }, { - "order": 917, + "order": 921, "name": "mamartinez14", "count": 1, "languages": 1 }, { - "order": 918, + "order": 922, "name": "ambrociojrdelacruz", "count": 1, "languages": 1 }, { - "order": 919, + "order": 923, "name": "bassalex27", "count": 1, "languages": 1 }, { - "order": 920, + "order": 924, "name": "yetlanezils", "count": 1, "languages": 1 }, { - "order": 921, + "order": 925, "name": "ndepaul82", "count": 1, "languages": 1 }, { - "order": 922, + "order": 926, "name": "amitchellg", "count": 1, "languages": 1 }, { - "order": 923, + "order": 927, "name": "turudev1979", "count": 1, "languages": 1 }, { - "order": 924, + "order": 928, "name": "deivimiller", "count": 1, "languages": 1 }, { - "order": 925, + "order": 929, "name": "haroldalb", "count": 1, "languages": 1 }, { - "order": 926, + "order": 930, "name": "dakkaj", "count": 1, "languages": 1 }, { - "order": 927, + "order": 931, "name": "jheisonquiroga", "count": 1, "languages": 1 }, { - "order": 928, + "order": 932, "name": "juli-m4", "count": 1, "languages": 1 }, { - "order": 929, + "order": 933, "name": "sergiomhernandez", "count": 1, "languages": 1 }, { - "order": 930, + "order": 934, "name": "masenace", "count": 1, "languages": 1 }, { - "order": 931, + "order": 935, "name": "e-xtian", "count": 1, "languages": 1 }, { - "order": 932, + "order": 936, "name": "vickalck", "count": 1, "languages": 1 }, { - "order": 933, + "order": 937, "name": "gmedinat911", "count": 1, "languages": 1 }, { - "order": 934, + "order": 938, "name": "eljavi0", "count": 1, "languages": 1 }, { - "order": 935, + "order": 939, "name": "yeisongil", "count": 1, "languages": 1 }, { - "order": 936, + "order": 940, "name": "julioorozco05", "count": 1, "languages": 1 }, { - "order": 937, + "order": 941, "name": "fergz1988", "count": 1, "languages": 1 }, { - "order": 938, + "order": 942, "name": "marcos0803", "count": 1, "languages": 1 }, { - "order": 939, + "order": 943, "name": "xcortes", "count": 1, "languages": 1 }, { - "order": 940, + "order": 944, "name": "facundorsabia", "count": 1, "languages": 1 }, { - "order": 941, + "order": 945, "name": "nico70012", "count": 1, "languages": 1 }, { - "order": 942, + "order": 946, "name": "charly024", "count": 1, "languages": 1 }, { - "order": 943, + "order": 947, "name": "devjerez", "count": 1, "languages": 1 }, { - "order": 944, + "order": 948, "name": "gersonoroz", "count": 1, "languages": 1 }, { - "order": 945, + "order": 949, "name": "jafuma0320", "count": 1, "languages": 1 }, { - "order": 946, + "order": 950, "name": "g4nd4lf", "count": 1, "languages": 1 }, { - "order": 947, + "order": 951, "name": "obed-tc", "count": 1, "languages": 1 }, { - "order": 948, + "order": 952, "name": "devkenn", "count": 1, "languages": 1 }, { - "order": 949, + "order": 953, "name": "xalejandrow", "count": 1, "languages": 1 }, { - "order": 950, + "order": 954, "name": "henrydavidprimera", "count": 1, "languages": 1 }, { - "order": 951, + "order": 955, "name": "luceldasilva", "count": 1, "languages": 1 }, { - "order": 952, + "order": 956, "name": "mjordanaam", "count": 1, "languages": 1 }, { - "order": 953, + "order": 957, "name": "betulioo", "count": 1, "languages": 1 }, { - "order": 954, + "order": 958, "name": "judithernandez", "count": 1, "languages": 1 }, { - "order": 955, + "order": 959, "name": "dimanu-py", "count": 1, "languages": 1 }, { - "order": 956, + "order": 960, "name": "snowale", "count": 1, "languages": 1 }, { - "order": 957, + "order": 961, "name": "cd1974", "count": 1, "languages": 1 }, { - "order": 958, + "order": 962, "name": "acobo3", "count": 1, "languages": 1 }, { - "order": 959, + "order": 963, "name": "isaacdci", "count": 1, "languages": 1 }, { - "order": 960, + "order": 964, "name": "manueldenisdev", "count": 1, "languages": 1 }, { - "order": 961, + "order": 965, "name": "anexo01", "count": 1, "languages": 1 }, { - "order": 962, + "order": 966, "name": "yamiyugi25", "count": 1, "languages": 1 }, { - "order": 963, + "order": 967, "name": "gl-informatica", "count": 1, "languages": 1 }, { - "order": 964, + "order": 968, "name": "miguelmancebo", "count": 1, "languages": 1 }, { - "order": 965, + "order": 969, "name": "neusier101", "count": 1, "languages": 1 }, { - "order": 966, + "order": 970, "name": "emmanuelmmontesinos ", "count": 1, "languages": 1 }, { - "order": 967, + "order": 971, "name": "xhinto", "count": 1, "languages": 1 }, { - "order": 968, + "order": 972, "name": "dacaldev", "count": 1, "languages": 1 }, { - "order": 969, + "order": 973, "name": "juan-cruz01", "count": 1, "languages": 1 }, { - "order": 970, + "order": 974, "name": "juanalbornoz32", "count": 1, "languages": 1 }, { - "order": 971, + "order": 975, "name": "cisneros2404", "count": 1, "languages": 1 }, { - "order": 972, + "order": 976, "name": "neftalyr", "count": 1, "languages": 1 }, { - "order": 973, + "order": 977, "name": "latorredev", "count": 1, "languages": 1 }, { - "order": 974, + "order": 978, "name": "osneidert", "count": 1, "languages": 1 }, { - "order": 975, + "order": 979, "name": "jrgranadosb", "count": 1, "languages": 1 }, { - "order": 976, + "order": 980, "name": "vicvilla30", "count": 1, "languages": 1 }, { - "order": 977, + "order": 981, "name": "carlosbb70", "count": 1, "languages": 1 }, { - "order": 978, + "order": 982, "name": "pablom-2015", "count": 1, "languages": 1 }, { - "order": 979, + "order": 983, "name": "xtinarita", "count": 1, "languages": 1 }, { - "order": 980, + "order": 984, "name": "wilsonbarrera", "count": 1, "languages": 1 }, { - "order": 981, + "order": 985, "name": "jereaguilar", "count": 1, "languages": 1 }, { - "order": 982, + "order": 986, "name": "giovanni-schmaily", "count": 1, "languages": 1 }, { - "order": 983, + "order": 987, "name": "danidan1214", "count": 1, "languages": 1 }, { - "order": 984, + "order": 988, "name": "demegorash", "count": 1, "languages": 1 }, { - "order": 985, + "order": 989, "name": "cris10026", "count": 1, "languages": 1 }, { - "order": 986, + "order": 990, "name": "davidgramiro", "count": 1, "languages": 1 }, { - "order": 987, + "order": 991, "name": "jgarteag", "count": 1, "languages": 1 }, { - "order": 988, + "order": 992, "name": "adcarret", "count": 1, "languages": 1 }, { - "order": 989, + "order": 993, "name": "natanaelzubiri", "count": 1, "languages": 1 }, { - "order": 990, + "order": 994, "name": "diegogomezcor4", "count": 1, "languages": 1 }, { - "order": 991, + "order": 995, "name": "perla-zg", "count": 1, "languages": 1 }, { - "order": 992, + "order": 996, "name": "neshurtado", "count": 1, "languages": 1 }, { - "order": 993, + "order": 997, "name": "marcelinoarias369", "count": 1, "languages": 1 }, { - "order": 994, + "order": 998, "name": "pushodev", "count": 1, "languages": 1 }, { - "order": 995, + "order": 999, "name": "sherkla12e", "count": 1, "languages": 1 }, { - "order": 996, + "order": 1000, "name": "luisangeles20", "count": 1, "languages": 1 }, { - "order": 997, + "order": 1001, "name": "omar8102", "count": 1, "languages": 1 }, { - "order": 998, + "order": 1002, "name": "eatsangels", "count": 1, "languages": 1 }, { - "order": 999, + "order": 1003, "name": "alejarandro", "count": 1, "languages": 1 }, { - "order": 1000, + "order": 1004, "name": "tashidian", "count": 1, "languages": 1 }, { - "order": 1001, + "order": 1005, "name": "alejandro000", "count": 1, "languages": 1 }, { - "order": 1002, + "order": 1006, "name": "francgci", "count": 1, "languages": 1 }, { - "order": 1003, + "order": 1007, "name": "krisipo", "count": 1, "languages": 1 }, { - "order": 1004, + "order": 1008, "name": "jalonso76", "count": 1, "languages": 1 }, { - "order": 1005, + "order": 1009, "name": "leo18q", "count": 1, "languages": 1 }, { - "order": 1006, + "order": 1010, "name": "sofiamfernandez", "count": 1, "languages": 1 }, { - "order": 1007, + "order": 1011, "name": "jgregoris", "count": 1, "languages": 1 }, { - "order": 1008, + "order": 1012, "name": "josuelopez5", "count": 1, "languages": 1 }, { - "order": 1009, + "order": 1013, "name": "mrf1989", "count": 1, "languages": 1 }, { - "order": 1010, + "order": 1014, "name": "zeraven09", "count": 1, "languages": 1 }, { - "order": 1011, + "order": 1015, "name": "pr1de-23", "count": 1, "languages": 1 }, { - "order": 1012, + "order": 1016, "name": "kronoscba", "count": 1, "languages": 1 }, { - "order": 1013, + "order": 1017, "name": "erickcis", "count": 1, "languages": 1 }, { - "order": 1014, + "order": 1018, "name": "experthacker444", "count": 1, "languages": 1 }, { - "order": 1015, + "order": 1019, "name": "javirr4", "count": 1, "languages": 1 }, { - "order": 1016, + "order": 1020, "name": "ignacioskm", "count": 1, "languages": 1 }, { - "order": 1017, + "order": 1021, "name": "jchernandez87", "count": 1, "languages": 1 }, { - "order": 1018, + "order": 1022, "name": "ferngpv", "count": 1, "languages": 1 }, { - "order": 1019, + "order": 1023, "name": "kshields51", "count": 1, "languages": 1 }, { - "order": 1020, + "order": 1024, "name": "salas89", "count": 1, "languages": 1 }, { - "order": 1021, + "order": 1025, "name": "90dread", "count": 1, "languages": 1 }, { - "order": 1022, + "order": 1026, "name": "chema-dw", "count": 1, "languages": 1 }, { - "order": 1023, + "order": 1027, "name": "sbngl", "count": 1, "languages": 1 }, { - "order": 1024, + "order": 1028, "name": "m4xxdev", "count": 1, "languages": 1 }, { - "order": 1025, + "order": 1029, "name": "cristianvergaraf", "count": 1, "languages": 1 }, { - "order": 1026, + "order": 1030, "name": "lizzymaken", "count": 1, "languages": 1 }, { - "order": 1027, + "order": 1031, "name": "jandortiz", "count": 1, "languages": 1 }, { - "order": 1028, + "order": 1032, "name": "claudios1980", "count": 1, "languages": 1 }, { - "order": 1029, + "order": 1033, "name": "sergiovelayos", "count": 1, "languages": 1 }, { - "order": 1030, + "order": 1034, "name": "miguelangel861", "count": 1, "languages": 1 }, { - "order": 1031, + "order": 1035, "name": "marcosjarrin", "count": 1, "languages": 1 }, { - "order": 1032, + "order": 1036, "name": "jandresalvar", "count": 1, "languages": 1 }, { - "order": 1033, + "order": 1037, "name": "joferpg", "count": 1, "languages": 1 }, { - "order": 1034, + "order": 1038, "name": "jlrojano", "count": 1, "languages": 1 }, { - "order": 1035, + "order": 1039, "name": "ivanserran", "count": 1, "languages": 1 }, { - "order": 1036, + "order": 1040, "name": "dany3gs", "count": 1, "languages": 1 }, { - "order": 1037, + "order": 1041, "name": "lizandev", "count": 1, "languages": 1 }, { - "order": 1038, + "order": 1042, "name": "adriangonzalezroble", "count": 1, "languages": 1 }, { - "order": 1039, + "order": 1043, "name": "dariel800xd", "count": 1, "languages": 1 }, { - "order": 1040, + "order": 1044, "name": "cristian-encalada", "count": 1, "languages": 1 }, { - "order": 1041, + "order": 1045, "name": "lewisoneil", "count": 1, "languages": 1 }, { - "order": 1042, + "order": 1046, "name": "hanzd07", "count": 1, "languages": 1 }, { - "order": 1043, + "order": 1047, "name": "bycris13", "count": 1, "languages": 1 }, { - "order": 1044, + "order": 1048, "name": "santiagopereiraviroga", "count": 1, "languages": 1 }, { - "order": 1045, + "order": 1049, "name": "v1k770r", "count": 1, "languages": 1 }, { - "order": 1046, + "order": 1050, "name": "gianellannie", "count": 1, "languages": 1 }, { - "order": 1047, + "order": 1051, "name": "alefine", "count": 1, "languages": 1 }, { - "order": 1048, + "order": 1052, "name": "chalaito88", "count": 1, "languages": 1 }, { - "order": 1049, + "order": 1053, "name": "fredylopez01", "count": 1, "languages": 1 }, { - "order": 1050, + "order": 1054, "name": "dsmhp0", "count": 1, "languages": 1 }, { - "order": 1051, + "order": 1055, "name": "lautimorales", "count": 1, "languages": 1 }, { - "order": 1052, + "order": 1056, "name": "alexeigio", "count": 1, "languages": 1 }, { - "order": 1053, + "order": 1057, "name": "angeldevsarrollo", "count": 1, "languages": 1 }, { - "order": 1054, + "order": 1058, "name": "pguillo", "count": 1, "languages": 1 }, { - "order": 1055, + "order": 1059, "name": "vikinghost", "count": 1, "languages": 1 }, { - "order": 1056, + "order": 1060, "name": "derkopath", "count": 1, "languages": 1 }, { - "order": 1057, + "order": 1061, "name": "adriansaint07", "count": 1, "languages": 1 }, { - "order": 1058, + "order": 1062, "name": "javiir", "count": 1, "languages": 1 }, { - "order": 1059, + "order": 1063, "name": "sxxnzdev", "count": 1, "languages": 1 }, { - "order": 1060, + "order": 1064, "name": "det3992", "count": 1, "languages": 1 }, { - "order": 1061, + "order": 1065, "name": "frankmon03", "count": 1, "languages": 1 }, { - "order": 1062, + "order": 1066, "name": "xhaloidx", "count": 1, "languages": 1 }, { - "order": 1063, + "order": 1067, "name": "iguerrerov", "count": 1, "languages": 1 }, { - "order": 1064, + "order": 1068, "name": "jrgim", "count": 1, "languages": 1 }, { - "order": 1065, + "order": 1069, "name": "cristianmr87", "count": 1, "languages": 1 }, { - "order": 1066, + "order": 1070, "name": "rumacar05", "count": 1, "languages": 1 }, { - "order": 1067, + "order": 1071, "name": "jose-zga", "count": 1, "languages": 1 }, { - "order": 1068, + "order": 1072, "name": "mathiur", "count": 1, "languages": 1 }, { - "order": 1069, + "order": 1073, "name": "robermejia", "count": 1, "languages": 1 }, { - "order": 1070, + "order": 1074, "name": "sanuka78", "count": 1, "languages": 1 }, { - "order": 1071, + "order": 1075, "name": "reneguzman7", "count": 1, "languages": 1 }, { - "order": 1072, + "order": 1076, "name": "durwian", "count": 1, "languages": 1 }, { - "order": 1073, + "order": 1077, "name": "martinaq", "count": 1, "languages": 1 }, { - "order": 1074, + "order": 1078, "name": "kgrc05", "count": 1, "languages": 1 }, { - "order": 1075, + "order": 1079, "name": "queralesdev", "count": 1, "languages": 1 }, { - "order": 1076, + "order": 1080, "name": "dovinhoyos", "count": 1, "languages": 1 }, { - "order": 1077, + "order": 1081, "name": "maynor06", "count": 1, "languages": 1 }, { - "order": 1078, + "order": 1082, "name": "jaimenar", "count": 1, "languages": 1 }, { - "order": 1079, + "order": 1083, "name": "chrystiancalderon", "count": 1, "languages": 1 }, { - "order": 1080, + "order": 1084, "name": "alvaropg15", "count": 1, "languages": 1 }, { - "order": 1081, + "order": 1085, "name": "deathbato", "count": 1, "languages": 1 }, { - "order": 1082, + "order": 1086, "name": "rreyes0424", "count": 1, "languages": 1 }, { - "order": 1083, + "order": 1087, "name": "algeloro", "count": 1, "languages": 1 }, { - "order": 1084, + "order": 1088, "name": "jony_english22", "count": 1, "languages": 1 }, { - "order": 1085, + "order": 1089, "name": "antoniojzp86", "count": 1, "languages": 1 }, { - "order": 1086, + "order": 1090, "name": "serg_pq", "count": 1, "languages": 1 }, { - "order": 1087, + "order": 1091, "name": "zyn7e", "count": 1, "languages": 1 }, { - "order": 1088, + "order": 1092, "name": "diegopardomontero", "count": 1, "languages": 1 }, { - "order": 1089, + "order": 1093, "name": "cristobalbelcor", "count": 1, "languages": 1 }, { - "order": 1090, + "order": 1094, "name": "albert-29", "count": 1, "languages": 1 }, { - "order": 1091, + "order": 1095, "name": "password1989", "count": 1, "languages": 1 }, { - "order": 1092, + "order": 1096, "name": "pvigo10", "count": 1, "languages": 1 }, { - "order": 1093, + "order": 1097, "name": "clespinosa2024", "count": 1, "languages": 1 }, { - "order": 1094, + "order": 1098, "name": "danisaurio94", "count": 1, "languages": 1 }, { - "order": 1095, + "order": 1099, "name": "jaquelinetorres", "count": 1, "languages": 1 }, { - "order": 1096, + "order": 1100, "name": "javosss", "count": 1, "languages": 1 }, { - "order": 1097, + "order": 1101, "name": "eduardo282", "count": 1, "languages": 1 }, { - "order": 1098, + "order": 1102, "name": "franespina", "count": 1, "languages": 1 }, { - "order": 1099, + "order": 1103, "name": "davidbastosg", "count": 1, "languages": 1 }, { - "order": 1100, + "order": 1104, "name": "carlosmares", "count": 1, "languages": 1 }, { - "order": 1101, + "order": 1105, "name": "rawc1nnamon", "count": 1, "languages": 1 }, { - "order": 1102, + "order": 1106, "name": "deivisaherreraj", "count": 1, "languages": 1 }, { - "order": 1103, + "order": 1107, "name": "alfaroo1", "count": 1, "languages": 1 }, { - "order": 1104, + "order": 1108, "name": "astrarothdlcxvi", "count": 1, "languages": 1 }, { - "order": 1105, + "order": 1109, "name": "kerunaru", "count": 1, "languages": 1 }, { - "order": 1106, + "order": 1110, "name": "marcosalvarezcalabria", "count": 1, "languages": 1 }, { - "order": 1107, + "order": 1111, "name": "orzefox", "count": 1, "languages": 1 }, { - "order": 1108, + "order": 1112, "name": "acirdeveloper", "count": 1, "languages": 1 }, { - "order": 1109, + "order": 1113, "name": "emiliordev", "count": 1, "languages": 1 }, { - "order": 1110, + "order": 1114, "name": "sve-nnn", "count": 1, "languages": 1 }, { - "order": 1111, + "order": 1115, "name": "edgarmedranoa", "count": 1, "languages": 1 }, { - "order": 1112, + "order": 1116, "name": "rafapg93", "count": 1, "languages": 1 }, { - "order": 1113, + "order": 1117, "name": "vickalc", "count": 1, "languages": 1 }, { - "order": 1114, + "order": 1118, "name": "riukac", "count": 1, "languages": 1 }, { - "order": 1115, + "order": 1119, "name": "rusian69", "count": 1, "languages": 1 }, { - "order": 1116, + "order": 1120, "name": "wijimenezz", "count": 1, "languages": 1 }, { - "order": 1117, + "order": 1121, "name": "albertovf", "count": 1, "languages": 1 }, { - "order": 1118, + "order": 1122, "name": "markayala13", "count": 1, "languages": 1 }, { - "order": 1119, + "order": 1123, "name": "rocha30", "count": 1, "languages": 1 }, { - "order": 1120, + "order": 1124, "name": "righelch", "count": 1, "languages": 1 }, { - "order": 1121, + "order": 1125, "name": "deathbat00", "count": 1, "languages": 1 }, { - "order": 1122, + "order": 1126, "name": "nicoloboo02", "count": 1, "languages": 1 }, { - "order": 1123, + "order": 1127, "name": "sergiopq", "count": 1, "languages": 1 }, { - "order": 1124, + "order": 1128, "name": "angeloro", "count": 1, "languages": 1 }, { - "order": 1125, + "order": 1129, "name": "jony-english22", "count": 1, "languages": 1 }, { - "order": 1126, + "order": 1130, "name": "tilordqwerty", "count": 1, "languages": 1 }, { - "order": 1127, + "order": 1131, "name": "lordzzz", "count": 1, "languages": 1 }, { - "order": 1128, + "order": 1132, "name": "alinares94", "count": 1, "languages": 1 }, { - "order": 1129, + "order": 1133, "name": "jferchotorres", "count": 1, "languages": 1 }, { - "order": 1130, + "order": 1134, "name": "713avo", "count": 1, "languages": 1 }, { - "order": 1131, + "order": 1135, "name": "micendev", "count": 1, "languages": 1 }, { - "order": 1132, + "order": 1136, "name": "ingjavierpinilla", "count": 1, "languages": 1 }, { - "order": 1133, + "order": 1137, "name": "batmarc91", "count": 1, "languages": 1 }, { - "order": 1134, + "order": 1138, "name": "angel-agis", "count": 1, "languages": 1 }, { - "order": 1135, + "order": 1139, "name": "lesterdavid31", "count": 1, "languages": 1 }, { - "order": 1136, + "order": 1140, "name": "joancharles07", "count": 1, "languages": 1 }, { - "order": 1137, + "order": 1141, "name": "mauricioobgo", "count": 1, "languages": 1 }, { - "order": 1138, + "order": 1142, "name": "cuervo23alpha", "count": 1, "languages": 1 }, { - "order": 1139, + "order": 1143, "name": "h4cker54n", "count": 1, "languages": 1 }, { - "order": 1140, + "order": 1144, "name": "derobpe", "count": 1, "languages": 1 }, { - "order": 1141, + "order": 1145, "name": "willypaz243", "count": 1, "languages": 1 }, { - "order": 1142, + "order": 1146, "name": "emersonxinay", "count": 1, "languages": 1 }, { - "order": 1143, + "order": 1147, "name": "alecraft8", "count": 1, "languages": 1 }, { - "order": 1144, + "order": 1148, "name": "greenalpak", "count": 1, "languages": 1 }, { - "order": 1145, + "order": 1149, "name": "juampaweb", "count": 1, "languages": 1 }, { - "order": 1146, + "order": 1150, "name": "girngoma", "count": 1, "languages": 1 }, { - "order": 1147, + "order": 1151, "name": "jjaljuria", "count": 1, "languages": 1 }, { - "order": 1148, + "order": 1152, "name": "ddaniel27", "count": 1, "languages": 1 }, { - "order": 1149, + "order": 1153, "name": "dfc201692", "count": 1, "languages": 1 }, { - "order": 1150, + "order": 1154, "name": "angelramirez02", "count": 1, "languages": 1 }, { - "order": 1151, + "order": 1155, "name": "lesclaz", "count": 1, "languages": 1 }, { - "order": 1152, + "order": 1156, "name": "giovannipeirone", "count": 1, "languages": 1 }, { - "order": 1153, + "order": 1157, "name": "whiterbb", "count": 1, "languages": 1 }, { - "order": 1154, + "order": 1158, "name": "adridiazz", "count": 1, "languages": 1 }, { - "order": 1155, + "order": 1159, "name": "jesus2421", "count": 1, "languages": 1 }, { - "order": 1156, + "order": 1160, "name": "euu92", "count": 1, "languages": 1 }, { - "order": 1157, + "order": 1161, "name": "santyjl44", "count": 1, "languages": 1 }, { - "order": 1158, + "order": 1162, "name": "luism95", "count": 1, "languages": 1 }, { - "order": 1159, + "order": 1163, "name": "ouendinga", "count": 1, "languages": 1 }, { - "order": 1160, + "order": 1164, "name": "melonconyogurt", "count": 1, "languages": 1