From f1da5065645552ac1f0e48644c7dc0eea7b97654 Mon Sep 17 00:00:00 2001 From: nightblockchain30 Date: Tue, 27 Feb 2024 20:24:02 +0100 Subject: [PATCH 01/21] 04 - JavaScript --- .../javascript/Nightblockchain30.js | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 Roadmap/04 - CADENAS DE CARACTERES/javascript/Nightblockchain30.js diff --git a/Roadmap/04 - CADENAS DE CARACTERES/javascript/Nightblockchain30.js b/Roadmap/04 - CADENAS DE CARACTERES/javascript/Nightblockchain30.js new file mode 100644 index 0000000000..ec08960f3f --- /dev/null +++ b/Roadmap/04 - CADENAS DE CARACTERES/javascript/Nightblockchain30.js @@ -0,0 +1,128 @@ +//at, charAt - Recibe un numero y devuelve el caracter en esa posicion +const sentence = 'Mouredev by Brais Moure'; +console.log('at', sentence.at(10)); +console.log('charAt', sentence.charAt(3)); +const sentence2 = "Nightblockchain 30"; +console.log("ar",sentence2.charAt(5),"ol"); + +//concat - Conecta dos strings y devuelve una nueva +const str1 = 'Hola'; +const str2 = 'Mundo'; +console.log('concat con espacio', str1.concat(' ', str2)); +console.log('concat con caracter', str1.concat('-', str2)); + +//startsWith & endsWith - Evalua si el string inicia/termina con los caracteres del string del argumento y devuelve un booleano +console.log('startsWith 1', sentence.endsWith('Mouredeb')); +console.log('startsWith 2', sentence.endsWith('by')); +console.log('endsWith 1', sentence.endsWith('Moure')); +console.log('endsWith 2', sentence.endsWith('dev')); + +//fromCharCode - Devuelve un string creada por una secuencia de unidades de UTF-16 +console.log('fromCharCode', String.fromCharCode(12, 24, 15, 9)); + + +//includes - Evalua si un substring se encuentra dentro de un string. Devuelve un booleano. Se diferencia entre mayusculas y minusculas +const word1 = 'by'; +const word2 = 'By'; +console.log('includes 1', sentence.includes(word1)); +console.log('includes 2', sentence.includes(word2)); + +//indexOf - Devuelve la posicion en la que un substring inicia dentro de un string. En caso que la substring se repita, devuelve la posicion de la primera encontrada. +//lastIndexOf - Devuelve la posicion en la que un substring inicia dentro de un string. En caso que la substring se repita, devuelve la posicion de la ultima encontrada. +const newSentence = 'Hola mundo. Bienvenidos al stream! Adios mundo.'; +const word3 = 'mundo'; +console.log('indexOf', newSentence.indexOf(word3)); +console.log('lastIndexOf', newSentence.lastIndexOf(word3)); + +//match - Devuelve los valores que coincidan con el regex +const regex = /[A-Z]/g; //Evalua solo mayusculas +console.log('match', sentence.match(regex)); + +//padStart & padEnd - Agregan un caracter al inicio o al final de la string, segun tantos espacios falten entre el ancho del string, y el ancho del argumento. +console.log('padStart', sentence.padStart(106, '-')); +console.log('padStart', sentence.padStart(102, '.')); +console.log('padEnd', sentence.padEnd(40, '^')); +console.log('padEnd', sentence.padEnd(80, '*')); + + +//raw - Metodo que funciona con template literals para crear un string, en base a otra que tenga caracteres especiales que no se quieren perder o interpretar de forma inadecuada. +const __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +const filePath = String.raw(__makeTemplateObject(["C:Developmentprofileaboutme.html"], ["C:\\Development\\profile\\aboutme.html"])); +console.log('raw', "Ruta de acceso: ".concat(filePath)); + +//repeat - Devuelve una nueva string que contiene el numero de copias del string del argumento, concatenadas +const strSinSpacio = 'Mundo!'; +const strConSpacio = 'Mundo! '; +console.log('repeat 1', "Hola ".concat(strSinSpacio.repeat(3))); +console.log('repeat 2', "Hola ".concat(strConSpacio.repeat(5))); + +//replace - Sustituye uno, constios, o toda un string, con otra string del segundo argumento del metodo. +const ownRegex = /Brais Moure/i; +console.log('replace 1', sentence.replace('Brais', 'AChapeton')); +console.log('replace 2', sentence.replace(ownRegex, 'Andres')); + +//search - Ejecuta una busqueda en base a un regex para buscar una similitud en un string, y devolver el index de esa primera similitud +const regex2 = /[^\w\s']/g; //Este regex evalua todo lo que NO sea una palabra, espacios en blanco, o comillas +console.log('search', newSentence.search(regex2)); + +//slice - Extrae una seccion del string y retorna una nueva, si modificar la original +console.log('slice', sentence.slice(7)); + +//split - Divide el string en base a un patron, y crea un array con las substrings resultantes +console.log('split', sentence.split(' ')); + +//toLowerCase & toUpperCase - Devuelve un string transformado todo a minusculas/mayusculas +console.log('toLowerCase', sentence.toLowerCase()); +console.log('toUpperCase', sentence.toUpperCase()); + +//trim - Elimina todos los espacios vacios que se encuentren al inicio o al final de un string +//trimStart - Elimina solo los espacios vacion que se encuentra al inicio +//trimEnd - Elimina solo los espacios vacion que se encuentra al final +const whiteSpaces = ' Hello World! '; +console.log('trim 1', whiteSpaces); +console.log('trim 2', whiteSpaces.trim()); +console.log('trimStart', whiteSpaces.trimStart()); +console.log('trimEnd', whiteSpaces.trimEnd()); + +// EJERCICIO EXTRA +const esPalindromo = function (my_string) { + const reverseStr = my_string.toLowerCase().split('').reverse().join(''); + if (my_string.toLowerCase() === reverseStr) { + console.log('Es palindroma'); + } + else { + console.log('No es palindroma'); + } +}; + +esPalindromo('reconocer'); +esPalindromo('mundo'); + +const esAnagrama = function (str1, str2) { + const reverseStr2 = str2.toLowerCase().split('').reverse().join(''); + if (str1.toLowerCase() === reverseStr2) { + console.log("La palabra ".concat(str1, " es un anagrama")); + } + else { + console.log("".concat(str1, " no es un anagrama")); + } +}; +esAnagrama('amor', 'roma'); + +const esIsograma = function (my_string) { + const letrasArray = my_string.toLowerCase().split(''); + const letrasSet = new Set(letrasArray); + if (letrasArray.length === letrasSet.size) { + console.log("La palabra ".concat(my_string, " es un isograma")); + } + else { + console.log("".concat(my_string, " no es un isograma")); + } +}; + +esIsograma('murcielago'); +esIsograma('ambiente'); From 2d83abb3d0c708c0c9397b4aaa5ef4456eae9753 Mon Sep 17 00:00:00 2001 From: cirianodev Date: Tue, 27 Feb 2024 22:53:18 -0300 Subject: [PATCH 02/21] #09 - Python --- Roadmap/09 - HERENCIA/python/DataCiriano.py | 240 ++++++++++++++++++++ 1 file changed, 240 insertions(+) create mode 100644 Roadmap/09 - HERENCIA/python/DataCiriano.py diff --git a/Roadmap/09 - HERENCIA/python/DataCiriano.py b/Roadmap/09 - HERENCIA/python/DataCiriano.py new file mode 100644 index 0000000000..db0fc9cf9e --- /dev/null +++ b/Roadmap/09 - HERENCIA/python/DataCiriano.py @@ -0,0 +1,240 @@ +""" +* EJERCICIO: + * Explora el concepto de herencia según tu lenguaje. Crea un ejemplo que + * implemente una superclase Animal y un par de subclases Perro y Gato, + * junto con una función que sirva para imprimir el sonido que emite cada Animal. + * + * DIFICULTAD EXTRA (opcional): + * Implementa la jerarquía de una empresa de desarrollo formada por Empleados que + * pueden ser Gerentes, Gerentes de Proyectos o Programadores. + * Cada empleado tiene un identificador y un nombre. + * Dependiendo de su labor, tienen propiedades y funciones exclusivas de su + * actividad, y almacenan los empleados a su cargo. +""" +#Crear la superclase Animal +class Animal(): + + def __init__(self, name: str, age: int, color: str): + self.name = name + self.age = age + self.color = color + +#Crer la subclase Perro y Gato que heredan de la clase Animal +class Perro(Animal): + + def __init__(self, name: str, age: int, color: str, race: str): + super().__init__(name, age, color) + self.race = race + + def bark(self): + print(f"{self.name} started to bark") + + def features(self): + print(f"Name: {self.name}") + print(f"Age: {self.age}") + print(f"Race: {self.race}") + print(f"Color: {self.color}") + + +class Gato(Animal): + + def __init__(self, name: str, age: int, color: str, race: str): + super().__init__(name, age, color) + self.race = race + + def meow(self): + print(f"{self.name} started to meow") + + def features(self): + print(f"Name: {self.name}") + print(f"Age: {self.age}") + print(f"Race: {self.race}") + print(f"Color: {self.color}") + +#Instanciar objetos de clase +rex = Perro("Rex", 10, "Brown", "German Shepherd") +tom = Gato("Tom", 7, "Grey", "Russina Blue") + +rex.features() +rex.bark() + +tom.features() +tom.meow() + + + + +#-----EXTRA----- + +#Crear superclase Employee + +class Employee(): + + def __init__(self, employee_id: int, name: str, surname: str, level: str, salary: int): + self.employee_id = employee_id + self.name = name + self.surname = surname + self.level = level + self.salary = salary + + def data(self): + print(f"Employee ID: {self.employee_id}") + print(f"Name: {self.name}") + print(f"Surname: {self.surname}") + print(f"Level: {self.level}") + print(f"Salary: {self.salary}$") + + +#Crear subclases Manager, ProjectManager y Developer que heredan de la superclase Employee + +class Manager(Employee): + + def __init__(self, employee_id: int, name: str, surname: str, level: str, salary: int, position: str): + super().__init__(employee_id, name, surname, level, salary) + self.position = position + self.pm_list = [] + self.dev_list = [] + + def hire_employee(self, new_employee): + if new_employee.level.lower() == "pm": + self.pm_list.append(new_employee) + print(f"¡¡Welcome to the team {new_employee.name} {new_employee.surname} as Project Manger!!\n") + elif new_employee.level.lower() == "dev": + self.dev_list.append(new_employee) + print(f"¡¡Welcome to the team {new_employee.name} {new_employee.surname} as Developer!!\n") + else: + print("We are not hiring people with your skills. Thanks for your time.\n") + + def fire_employee(self, employee): + if employee in self.pm_list: + self.pm_list.remove(employee) + print(f"{employee.name} {employee.surname} thank you for your work.\n") + elif employee in self.dev_list: + self.dev_list.remove(employee) + print(f"{employee.name} {employee.surname} thank you for your work.\n") + else: + print("The employee doesn't exsist.") + + def assign_project(self, pm_id, project): + for team_member in self.pm_list: + if team_member.employee_id == pm_id: + print(f"{team_member.name} {team_member.surname} is assign to: {project}\n") + return + print(f"¡¡ERROR!! No existe un empleado con el id {pm_id}.\n") + + def show_employees(self): + print("Project Manager List:\n") + for pm in (self.pm_list): + pm.data() + print() + + print("Developers List:\n") + for dev in (self.dev_list): + dev.data() + print() + + def manager_data(self): + self.data() + print(f"Position: {self.position}\n") + +class ProjectManager(Employee): + + def __init__(self, employee_id: str, name: str, surname: str, level: str, salary: int, projects: str): + super().__init__(employee_id, name, surname, level, salary) + self.projects = projects + self.project_team = [] + + def show_project(self): + print(f"{self.name} is on charge of the {self.projects} project.\n") + + def add_project_employee(self, new_developer, projects): + self.project_team.append(new_developer) + print(f"{self.name}: ¡¡Welcome {new_developer.name} to the {projects} project!!\n") + + def show_team(self): + print(f"Team {self.projects}\n") + print(f"Project Manager: {self.name} {self.surname}\n") + print("Developers:\n") + for project_member in self.project_team: + print(f"Name: {project_member.name}") + print(f"Surname: {project_member.surname}") + print(f"Level: {project_member.level}\n") + +class Developer(Employee): + + def __init__(self, employee_id: int, name: str, surname: str, level: str, salary: int, languages: list): + super().__init__(employee_id, name, surname, level, salary) + self.languages = languages + + def new_functionality(self, code_language): + for language in self.languages: + if language.lower() == code_language.lower(): + print(f"{self.name} {self.surname} is developing a new functionality in {code_language}.") + return + print(f"{self.name} {self.surname}: We need a new {code_language} developer.") + + def fix_bug(self,bug: str): + print(f"{self.name} {self.surname} is working on the issue '{bug}'.") + + + +#Instanciar clases + +dev_01 = Developer(21, "Miguel", "Ciriano", "Dev", 30000, ["Python", "SQL"]) +dev_02 = Developer(22, "Gabriel", "Rojo", "Dev", 30000, ["JS", "SQL"]) +dev_03 = Developer(23, "Ana", "García", "Dev", 30000, ["Rust", "JS","HTML", "CSS"]) +dev_04 = Developer(24, "Beatriz", "Mandel", "Dev", 30000, ["TypeScrip", "Java"]) +dev_05 = Developer(25, "Pedro", "Zamora", "Dev", 30000, ["Java", "SQL", "JS", "HTML", "CSS"]) + + +pm_01 = ProjectManager(31, "Juanito", "Pérez", "PM", 50000, "Backend") +pm_02 = ProjectManager(32, "Alfonso", "Molinero", "PM", 50000, "UX/UI") +pm_03 = ProjectManager(33, "Rodrigo", "Salta", "PM", 50000, "Frontend") +pm_04 = ProjectManager(34, "Valeria", "Araya", "PM", 50000, "Marketing") +pm_05 = ProjectManager(35, "Susana", "Jara", "PM", 50000, "Sales") + +designer = Employee(41, "Juan", "Lorca", "Dsgn", 30000) + +manager_01 = Manager(1, "Elon", "Musk", "CEO", 100000, "Management") + +#Funcionalidades de la clase Manager +manager_01.hire_employee(dev_01) +manager_01.hire_employee(dev_02) +manager_01.hire_employee(dev_03) +manager_01.hire_employee(dev_04) +manager_01.hire_employee(dev_05) + +manager_01.hire_employee(designer) + +manager_01.hire_employee(pm_01) +manager_01.hire_employee(pm_02) +manager_01.hire_employee(pm_03) +manager_01.hire_employee(pm_04) +manager_01.hire_employee(pm_05) + +manager_01.show_employees() + +manager_01.fire_employee(dev_03) +manager_01.fire_employee(pm_03) + +manager_01.show_employees() + +manager_01.assign_project(35, "Sales") +manager_01.assign_project(32, "UX/UI") +manager_01.assign_project(4, "UX/UI") + +manager_01.manager_data() + +#Funcionalidades de la clase Project Manager +pm_01.show_project() +pm_05.add_project_employee(dev_05, "Sales") +pm_05.add_project_employee(dev_03, "Sales") + +pm_05.show_team() + +#Funcionalidades de la clase Developer + +dev_01.new_functionality("PYTHON") +dev_01.new_functionality("HTML") + +dev_03.fix_bug("Cancelation order") From 55de382c725ff49f0b64538b827cfd912a1a2122 Mon Sep 17 00:00:00 2001 From: DalaxDev Date: Tue, 27 Feb 2024 20:55:41 -0500 Subject: [PATCH 03/21] #00-Python --- .../python/Daparradom.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Daparradom.py diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Daparradom.py b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Daparradom.py new file mode 100644 index 0000000000..9249267eb3 --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Daparradom.py @@ -0,0 +1,23 @@ +# Sitio oficial Python: https://www.python.org/ + +# Este es un comentario en una línea + +""" +Este es un comentario en varias líneas +Tal como podemos observar se puede +escribir en varias lineas. + +""" + +# Tipos de Datos + +entero = 1 +string = "Esta es una cadena de texto" +booleano = False +flotante = 5.555 +complejo = 5 + 7j + +# saludando a Python + +print("¡Hola Python!") + From fe773a1b5060cec219386d668a6f0247dea65e42 Mon Sep 17 00:00:00 2001 From: Heiber Perez Date: Tue, 27 Feb 2024 21:05:02 -0500 Subject: [PATCH 04/21] #05 Typescript --- .../typescript/mxtrar23.ts | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Roadmap/05 - VALOR Y REFERENCIA/typescript/mxtrar23.ts diff --git a/Roadmap/05 - VALOR Y REFERENCIA/typescript/mxtrar23.ts b/Roadmap/05 - VALOR Y REFERENCIA/typescript/mxtrar23.ts new file mode 100644 index 0000000000..fbbc0314a1 --- /dev/null +++ b/Roadmap/05 - VALOR Y REFERENCIA/typescript/mxtrar23.ts @@ -0,0 +1,49 @@ +//- Muestra ejemplos de asignación de variables "por valor" y "por referencia", según su tipo de dato. + +//por valor +const texto1 = 'TypeScript' +const texto2 = texto1 + +console.log(texto1); +console.log(texto2); + +// por referencia +const array1 = [1,2,3] +let array2 = array1 + +array2.push(4) + +console.log(array1); +console.log(array2); + + +// - Muestra ejemplos de funciones con variables que se les pasan "por valor" y "por referencia", y cómo se comportan en cada caso en el momento de ser modificadas. + + +//por valor +const function1 = (param:number) :void => { + param = 2 + console.log(param); +} + +const num = 1 +function1(num) +console.log(num); + + +// por referencia +const function2 = (param:number[]) :void => { + param.push(4) + let array2 = param + array2.push(5) + + console.log(param); + console.log(array2); +} + +const arr = [1,2,3] +function2(arr) +console.log(arr); + + + From 6f3835a51f761a38326c165b1dd38040afc56f2b Mon Sep 17 00:00:00 2001 From: DalaxDev Date: Tue, 27 Feb 2024 23:03:22 -0500 Subject: [PATCH 05/21] #01-Python --- .../python/Daparradom.py | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/Daparradom.py diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/Daparradom.py b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/Daparradom.py new file mode 100644 index 0000000000..775d98d74a --- /dev/null +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/Daparradom.py @@ -0,0 +1,62 @@ +### 01-Operadores y Estructuras de Control ### + +#Operadores Aritmeticos + +print(5 + 1, "suma") #suma +print(5 - 1, "resta") #resta +print(5 * 1, "Multiplicacion") #multiplicación +print(5 / 1, "Division") #División +print(10 % 2, "Modulo") #modulo ---> da el remanente +print(5 // 3, "floor division") #floor division --> division sin remanente o sin flotante +print(3**4, "Operacion con exponente") #Exponente + +#Operadores comparativos + +(5 == 4) # igual que +(5 > 4) # mayor que +(5 < 4) # menor que +(5 >= 4) # mayor o igual que +(5 <= 4) # menor o igual que +(5 != 4) # diferente que + +# Operadores logicos + +print( 5==3 and 1>0.5) +print( 1==2 or 3>5) +print(not (7<6)) + +# Condicionales + +resul = 5 + +if resul>0: + print (f"la variable resul cuyo valor es {resul} es positiva ") +elif resul == 0: + print (f"La variable resul cuyo valor es {resul} es igual a 0") +else: + print(f"La variable resul cuyo valor es {resul} es negativa") + +#loops + +while resul < 30 : + print(resul) + resul+=2 +else: + print("mi variable resul es mayor a 30") + +numbers = [1,2,3,4,5,6,7,8,9,10] + +for number in numbers: + print(number) + +for i in range(1,50,10): + print(i) +else: + print("se ha terminado el for") + +## Programa + +print("Se comienza el programa\n") +for number in range(10,56,1): + if number%2 == 0 and number!=16 and number%3!=0: + print(number) \ No newline at end of file From d2a746c85210e6d71bb4fe632e602f78d881fe8d Mon Sep 17 00:00:00 2001 From: RXVLC Date: Wed, 28 Feb 2024 10:46:18 +0100 Subject: [PATCH 06/21] #09 - javascript --- Roadmap/09 - HERENCIA/javascript/rxvlc.js | 110 ++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 Roadmap/09 - HERENCIA/javascript/rxvlc.js diff --git a/Roadmap/09 - HERENCIA/javascript/rxvlc.js b/Roadmap/09 - HERENCIA/javascript/rxvlc.js new file mode 100644 index 0000000000..93b78b8c79 --- /dev/null +++ b/Roadmap/09 - HERENCIA/javascript/rxvlc.js @@ -0,0 +1,110 @@ +// Superclase +class Animal { + constructor(nombre, edad) { + this.nombre = nombre; + this.edad = edad; + } +} + +// Heredera Perro +class Perro extends Animal { + constructor(nombre, edad) { + super(nombre, edad); + } + + sonido() { + console.log("¡guau guau!"); + } +} + +// Heredera Gato +class Gato extends Animal { + constructor(nombre, edad) { + super(nombre, edad); + } + + sonido() { + console.log("¡miau miau!"); + } +} + +// Clase base para representar a un empleado genérico +class Empleado { + constructor(id, nombre) { + this.id = id; + this.nombre = nombre; + } + + informacion() { + console.log(`ID: ${this.id}, Nombre: ${this.nombre}`); + } +} + +// Clase Gerente hereda de Empleado +class Gerente extends Empleado { + constructor(id, nombre) { + super(id, nombre); + this.empleadosACargo = []; + } + + agregarEmpleado(empleado) { + this.empleadosACargo.push(empleado); + } + + informacion() { + super.informacion(); + console.log("Tipo: Gerente"); + console.log(`Empleados a cargo: ${this.empleadosACargo.length}`); + } +} + +// Clase GerenteProyecto hereda de Gerente +class GerenteProyecto extends Gerente { + constructor(id, nombre, areaProyecto) { + super(id, nombre); + this.areaProyecto = areaProyecto; + } + + informacion() { + super.informacion(); + console.log(`Área del Proyecto: ${this.areaProyecto}`); + } +} + +// Clase Programador hereda de Empleado +class Programador extends Empleado { + constructor(id, nombre, lenguaje) { + super(id, nombre); + this.lenguaje = lenguaje; + } + + informacion() { + super.informacion(); + console.log(`Lenguaje: ${this.lenguaje}`); + } +} + +// Creación de instancias de Perro y Gato +let miPerro = new Perro("Bobby", 5); +let miGato = new Gato("Whiskers", 3); + +// Llamada a los métodos específicos de cada clase +miPerro.sonido(); // Salida: ¡guau guau! +miGato.sonido(); // Salida: ¡miau miau! + +// Creación de instancias de empleados +let gerente1 = new Gerente(1, "Juan"); +let gerenteProyecto1 = new GerenteProyecto(2, "María", "Desarrollo Web"); +let programador1 = new Programador(3, "Pedro", "C#"); + +// Agregar empleados a cargo del gerente +gerente1.agregarEmpleado(gerenteProyecto1); +gerenteProyecto1.agregarEmpleado(programador1); + +// Mostrar información de los empleados +console.log("Información del Gerente:"); +gerente1.informacion(); +console.log("\nInformación del Gerente de Proyecto:"); +gerenteProyecto1.informacion(); +console.log("\nInformación del Programador:"); +programador1.informacion(); From 2dcdef71475e759770383e535a81187e4921c24b Mon Sep 17 00:00:00 2001 From: "david.parra" Date: Wed, 28 Feb 2024 09:17:48 -0500 Subject: [PATCH 07/21] 09 Python, Javascript --- .../09 - HERENCIA/javascript/juandaherrera.js | 145 ++++++++++++++++++ Roadmap/09 - HERENCIA/python/juandaherrera.py | 139 +++++++++++++++++ 2 files changed, 284 insertions(+) create mode 100644 Roadmap/09 - HERENCIA/javascript/juandaherrera.js create mode 100644 Roadmap/09 - HERENCIA/python/juandaherrera.py diff --git a/Roadmap/09 - HERENCIA/javascript/juandaherrera.js b/Roadmap/09 - HERENCIA/javascript/juandaherrera.js new file mode 100644 index 0000000000..7c32a0bb39 --- /dev/null +++ b/Roadmap/09 - HERENCIA/javascript/juandaherrera.js @@ -0,0 +1,145 @@ +/* + * EJERCICIO: + * Explora el concepto de herencia según tu lenguaje. Crea un ejemplo que + * implemente una superclase Animal y un par de subclases Perro y Gato, + * junto con una función que sirva para imprimir el sonido que emite cada Animal. + */ + +class Animal { + constructor(name) { + this.name = name; + } + + makeSound() { + throw new Error( + "Método makeSound() debe ser implementado por subclases" + ); + } +} + +class Perro extends Animal { + makeSound() { + console.log("Guauuu"); + } +} + +class Gato extends Animal { + makeSound() { + console.log("Miauu"); + } +} + +const firulais = new Perro("Firulais"); +const mishi = new Gato("Mishi"); + +firulais.makeSound(); // Guauuu +mishi.makeSound(); // Miauu + +/* + * DIFICULTAD EXTRA (opcional): + * Implementa la jerarquía de una empresa de desarrollo formada por Empleados que + * pueden ser Gerentes, Gerentes de Proyectos o Programadores. + * Cada empleado tiene un identificador y un nombre. + * Dependiendo de su labor, tienen propiedades y funciones exclusivas de su + * actividad, y almacenan los empleados a su cargo. + */ + +// Simulación simple de generación de UUID en JavaScript +function generateUUID() { + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace( + /[xy]/g, + function (c) { + var r = (Math.random() * 16) | 0, + v = c === "x" ? r : (r & 0x3) | 0x8; + return v.toString(16); + } + ); +} + +class Employee { + constructor(name, salary, leader = null) { + this.id = generateUUID(); + this.name = name; + this.salary = salary; + this.leader = leader; + this.directReports = []; + + if (leader) { + leader.addDirectReport(this); + } + } + + addDirectReport(employee) { + this.directReports.push(employee); + } + + execute() { + throw new Error("Método execute() debe ser implementado por subclases"); + } +} + +class Manager extends Employee { + execute() { + return "Definiendo estrategía para que la compañía crezca..."; + } +} + +class ProjectManager extends Employee { + constructor(name, salary, project, leader = null) { + super(name, salary, leader); + this.project = project; + } + + execute() { + return `Liderando y supervisando el proyecto: ${this.project}`; + } +} + +class Developer extends Employee { + constructor(name, salary, leader = null) { + super(name, salary, leader); + this.project = leader ? leader.project : "sin proyecto"; + } + + execute() { + return `Desarrollando en el proyecto: ${this.project}`; + } +} + +const manager = new Manager("Juan David", 35000000); +const projectManager1 = new ProjectManager( + "Esteban", + 13000000, + "Incentivos", + manager +); +const projectManager2 = new ProjectManager( + "Santiago", + 12500000, + "Algoritmo", + manager +); + +const developer1 = new Developer("Daniel", 8000000, projectManager1); +const developer2 = new Developer("Julian", 8500000, projectManager1); +const developer3 = new Developer("Felipe", 8000000, projectManager1); +const developer4 = new Developer("Duván", 9000000, projectManager2); +const developer5 = new Developer("Brais", 11000000, projectManager2); + +// Función para imprimir la información de un empleado +function printEmployeeInfo(employee) { + console.log(`ID: ${employee.id}`); + console.log(`Nombre: ${employee.name}`); + console.log(`Salario: ${employee.salary}`); + console.log(`Líder: ${employee.leader ? employee.leader.name : "N/A"}`); + console.log( + "Reportes Directos: ", + employee.directReports.map((e) => e.name).join(", ") + ); + console.log(`Ejecutando: ${employee.execute()}`); + console.log("----------------------"); +} + +printEmployeeInfo(manager); +printEmployeeInfo(projectManager1); +printEmployeeInfo(developer5); diff --git a/Roadmap/09 - HERENCIA/python/juandaherrera.py b/Roadmap/09 - HERENCIA/python/juandaherrera.py new file mode 100644 index 0000000000..878f40a548 --- /dev/null +++ b/Roadmap/09 - HERENCIA/python/juandaherrera.py @@ -0,0 +1,139 @@ +""" + * EJERCICIO: + * Explora el concepto de herencia según tu lenguaje. Crea un ejemplo que + * implemente una superclase Animal y un par de subclases Perro y Gato, + * junto con una función que sirva para imprimir el sonido que emite cada Animal. +""" + +from __future__ import annotations + +import uuid +from abc import ABC, abstractmethod +from typing import List, Optional, Union + + +class Animal(ABC): + def __init__(self, name: str) -> None: + self.name = name + + @abstractmethod + def make_sound(self): + pass + + +class Perro(Animal): + + def make_sound(self): + print('Guauuu') + + +class Gato(Animal): + def make_sound(self): + print('Miauu') + + +firulais = Perro('Firulais') +mishi = Gato('Mishi') + +firulais.make_sound() +mishi.make_sound() + + +""" + * DIFICULTAD EXTRA (opcional): + * Implementa la jerarquía de una empresa de desarrollo formada por Empleados que + * pueden ser Gerentes, Gerentes de Proyectos o Programadores. + * Cada empleado tiene un identificador y un nombre. + * Dependiendo de su labor, tienen propiedades y funciones exclusivas de su + * actividad, y almacenan los empleados a su cargo. +""" + + +class Employee(ABC): + + def __init__(self, name: str, salary: float, leader: Optional[Employee] = None) -> None: + self.id = uuid.uuid4() + self.name = name + self.salary = salary + self.leader = leader + self.direct_reports: List[Employee] = [] + + if leader: + leader.add_direct_report(self) + + def __str__(self) -> str: + string = '\n'.join( + ( + f'ID: {self.id}', + f'Nombre: {self.name}', + f'Salario: {self.salary:_}', + f'Líder: {self.get_leader_name()}', + f'Reportes Directos: {self.get_direct_reports_names()}', + f'Ejecutando: {self.execute()}', + ) + ) + return string + + def add_direct_report(self, employee: Employee) -> None: + self.direct_reports.append(employee) + + def get_direct_reports_names(self) -> List[str]: + return [employee.name for employee in self.direct_reports] + + def get_leader_name(self) -> Union[str, None]: + if self.leader and isinstance(self.leader, Employee): + return self.leader.name + return None + + @abstractmethod + def execute(self) -> str: + pass + + +class Manager(Employee): + def execute(self): + return 'Definiendo estrategía para que la compañía crezca...' + + +class Projectmanager(Employee): + + def __init__( + self, name: str, salary: float, project: str, leader: Optional[Employee] = None + ) -> None: + super().__init__(name, salary, leader) + self.project = project + + def execute(self): + return f'Liderando y supervisando el proyecto: {self.project}' + + +class Developer(Employee): + def __init__(self, name: str, salary: float, leader: Optional[Projectmanager] = None) -> None: + super().__init__(name, salary, leader) + if leader and isinstance(leader, Projectmanager): + self.project = leader.project + else: + self.project = 'sin proyecto' + + def execute(self): + return f'Desarrollando en el proyecto: {self.leader.project}' + + +manager = Manager('Juan David', 35_000_000) + +project_manager_1 = Projectmanager('Esteban', 13_000_000, 'Incentivos', manager) +project_manager_2 = Projectmanager('Santiago', 12_500_000, 'Algoritmo', manager) + +developer_1 = Developer('Daniel', 8_000_000, project_manager_1) +developer_2 = Developer('Julian', 8_500_000, project_manager_1) +developer_3 = Developer('Felipe', 8_000_000, project_manager_1) +developer_4 = Developer('Duván', 9_000_000, project_manager_2) +developer_5 = Developer('Brais', 11_000_000, project_manager_2) + +print(manager) +print('-' * 25) +print(project_manager_1) +print('-' * 25) +print(project_manager_2) +print('-' * 25) +print(developer_5) From d53c0549f055ae5fb438725eb54ac49a7f15359f Mon Sep 17 00:00:00 2001 From: EloyChavezDev Date: Wed, 28 Feb 2024 09:42:11 -0600 Subject: [PATCH 08/21] #09 - javascript --- .../09 - HERENCIA/javascript/EloyChavezDev.js | 132 ++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 Roadmap/09 - HERENCIA/javascript/EloyChavezDev.js diff --git a/Roadmap/09 - HERENCIA/javascript/EloyChavezDev.js b/Roadmap/09 - HERENCIA/javascript/EloyChavezDev.js new file mode 100644 index 0000000000..05a01de64d --- /dev/null +++ b/Roadmap/09 - HERENCIA/javascript/EloyChavezDev.js @@ -0,0 +1,132 @@ +/* + * EJERCICIO: + * Explora el concepto de herencia según tu lenguaje. Crea un ejemplo que + * implemente una superclase Animal y un par de subclases Perro y Gato, + * junto con una función que sirva para imprimir el sonido que emite cada Animal. + * + * DIFICULTAD EXTRA (opcional): + * Implementa la jerarquía de una empresa de desarrollo formada por Empleados que + * pueden ser Gerentes, Gerentes de Proyectos o Programadores. + * Cada empleado tiene un identificador y un nombre. + * Dependiendo de su labor, tienen propiedades y funciones exclusivas de su + * actividad, y almacenan los empleados a su cargo. + */ + +//Superclase Animal y subclases Perro y Gato: +class Animal { + constructor(nombre) { + this.nombre = nombre; + } + + hablar() { + console.log("**Sonido genérico de animal**"); + } + } + + class Perro extends Animal { + constructor(nombre, raza) { + super(nombre); + this.raza = raza; + } + + hablar() { + console.log("**Woof!**"); + } + } + + class Gato extends Animal { + constructor(nombre, raza) { + super(nombre); + this.raza = raza; + } + + hablar() { + console.log("**Meow!**"); + } + } + + // Ejemplo de uso + const perro1 = new Perro("Toby", "Labrador"); + perro1.hablar(); + + const gato1 = new Gato("Luna", "Siamés"); + gato1.hablar(); + + //Dificultad Extra: Jerarquía de Empresa de Desarrollo + class Empleado { + constructor(id, nombre) { + this.id = id; + this.nombre = nombre; + this.empleadosACargo = []; + } + + getInfo() { + console.log(`ID: ${this.id}`); + console.log(`Nombre: ${this.nombre}`); + } + } + + //Clase Gerente: + class Gerente extends Empleado { + constructor(id, nombre, departamento) { + super(id, nombre); + this.departamento = departamento; + } + + getInfo() { + super.getInfo(); + console.log(`Departamento: ${this.departamento}`); + } + } + + //Clase Gerente de Proyectos: + class GerenteProyecto extends Gerente { + constructor(id, nombre, departamento, proyectos) { + super(id, nombre, departamento); + this.proyectos = proyectos; + } + + getInfo() { + super.getInfo(); + console.log(`Proyectos: ${this.proyectos.join(", ")}`); + } + } + + //Clase Programador: + class Programador extends Empleado { + constructor(id, nombre, lenguajes) { + super(id, nombre); + this.lenguajes = lenguajes; + } + + getInfo() { + super.getInfo(); + console.log(`Lenguajes de programación: ${this.lenguajes.join(", ")}`); + } + } + + // Ejemplo de uso + const gerente1 = new Gerente(1, "Ana", "Ventas"); + gerente1.getInfo(); + + const gerenteProyecto1 = new GerenteProyecto(2, "Pedro", "Desarrollo", ["Proyecto X", "Proyecto Y"]); + gerenteProyecto1.getInfo(); + + const programador1 = new Programador(3, "María", ["JavaScript", "Python"]); + programador1.getInfo(); + + // Asignación de empleados a cargo + gerente1.empleadosACargo.push(programador1); + gerenteProyecto1.empleadosACargo.push(programador1); + + // Mostrar la información de los empleados a cargo del gerente + console.log("Empleados a cargo del gerente:"); + for (const empleado of gerente1.empleadosACargo) { + empleado.getInfo(); + } + + // Mostrar la información de los empleados a cargo del gerente de proyecto + console.log("Empleados a cargo del gerente de proyecto:"); + for (const empleado of gerenteProyecto1.empleadosACargo) { + empleado.getInfo(); + } \ No newline at end of file From 341575a4b7c532043b3de0d8513b0571b05914c0 Mon Sep 17 00:00:00 2001 From: SrVariable Date: Wed, 28 Feb 2024 16:44:24 +0100 Subject: [PATCH 09/21] Refactor code Renamed a variable and improved documentation --- Roadmap/07 - PILAS Y COLAS/c/srvariable.c | 52 ++++++++++++++++------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/Roadmap/07 - PILAS Y COLAS/c/srvariable.c b/Roadmap/07 - PILAS Y COLAS/c/srvariable.c index 805cdbbbac..d8e5289bf0 100644 --- a/Roadmap/07 - PILAS Y COLAS/c/srvariable.c +++ b/Roadmap/07 - PILAS Y COLAS/c/srvariable.c @@ -51,6 +51,14 @@ typedef struct s_node t_node *create_node(const char *item); void destroy_node(t_node **node); +// Manejo de errores + +int error_handler(void *address, int status, t_function name); + +// Utils + +void ft_print(t_node *first, t_node *last, t_function name); + // Estructura de una pila typedef struct s_stack @@ -84,10 +92,6 @@ int dequeue(t_queue **queue); char *peek_queue(t_queue *queue); int test_queue(void); -// Manejo de errores - -int error_handler(void *address, int status, t_function type); - // Estructura del navegador web typedef struct s_web @@ -187,20 +191,20 @@ void destroy_node(t_node **node) * * @param address Dirección de memoria de la pila/cola. * @param status Estado que indica en qué llamada ha fallado. - * @param type + * @param name Nombre de la función. * - * @return - status + * @return - status Devuelve el parámetro status. */ -int error_handler(void *address, int status, t_function type) +int error_handler(void *address, int status, t_function name) { - if (type == POP || type == PEEK_STACK) printf("La pila está vacía\n\n"); - else if (type == DEQUEUE || type == PEEK_QUEUE) printf("La cola está vacía\n\n"); - else if (type == PUSH) + if (name == POP || name == PEEK_STACK) printf("La pila está vacía\n\n"); + else if (name == DEQUEUE || name == PEEK_QUEUE) printf("La cola está vacía\n\n"); + else if (name == PUSH) { printf("Error añadiendo el elemento a la pila, llamada %d\n", status); destroy_stack((t_stack **) address); } - else if (type == ENQUEUE) + else if (name == ENQUEUE) { printf("Error añadiendo el elemento a la cola, llamada %d\n", status); destroy_queue((t_queue **) address); @@ -208,17 +212,24 @@ int error_handler(void *address, int status, t_function type) return (status); } -void ft_print(t_node *first, t_node *last, t_function type) +/** + * @brief Mensaje personalizado para pilas y colas + * + * @param first Nodo al primer elemento. + * @param last Nodo al último elemento. + * @param name Nombre de la función. + */ +void ft_print(t_node *first, t_node *last, t_function name) { if (!first || !last) return ; - if (type == PUSH || type == POP) + if (name == PUSH || name == POP) printf("Bottom: %s | Top: %s\n\n", first->item, last->item); - else if (type == ENQUEUE || type == DEQUEUE) + else if (name == ENQUEUE || name == DEQUEUE) printf("Front: %s | Back: %s\n\n", first->item, last->item); } /** - * @brief Test de funciones del stack. + * @brief Test de funciones de la pila. * * @return - > 0 Si hay algún error grave. * @return - 0 Si el test se ejecuta correctamente. @@ -320,6 +331,12 @@ int test_stack(void) return (0); } +/** + * @brief Test de funciones de la cola. + * + * @return - > 0 Si hay algún error grave. + * @return - 0 Si el test se ejecuta correctamente. + */ int test_queue(void) { t_queue *queue; @@ -676,6 +693,8 @@ char *peek_queue(t_queue *queue) return (queue->front->item); } +/* === DIFICULTAD EXTRA === */ + /** * @brief Simulación de un navegador web. * @@ -718,7 +737,7 @@ int web_browser(void) else if (!strcmp(web->input, "Salir") || !strcmp(web->input, "salir") || !strcmp(web->input, "X") || !strcmp(web->input, "x")) { - printf("Has cerrado el navegador\n"); + printf("Has cerrado el navegador\n\n\n"); status = 0; break; } @@ -887,6 +906,7 @@ int printer(void) */ void printer_menu(void) { + printf("========== IMPRESORA ==========\n"); printf("Introduce:\n"); printf("- El nombre del documento, para añadirlo a la cola\n"); printf("- Imprimir, para imprimir el primer documento en la cola\n"); From d006f12f474bb0a0f420e5eb51f9bb25138a4e1b Mon Sep 17 00:00:00 2001 From: SrVariable Date: Wed, 28 Feb 2024 16:48:38 +0100 Subject: [PATCH 10/21] Fix web browser bug When navigating to "Inicio" multiple times and navigating anywhere else the home_counter is resetted, which causes not being allowed to go back more than the last "Inicio", even though there are more pages. --- Roadmap/07 - PILAS Y COLAS/c/srvariable.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Roadmap/07 - PILAS Y COLAS/c/srvariable.c b/Roadmap/07 - PILAS Y COLAS/c/srvariable.c index d8e5289bf0..8802afb947 100644 --- a/Roadmap/07 - PILAS Y COLAS/c/srvariable.c +++ b/Roadmap/07 - PILAS Y COLAS/c/srvariable.c @@ -793,11 +793,8 @@ int web_browser_navigate(t_web **web) status = push(&(*web)->history, (*web)->input); if (status) printf("Error navegando a %s\n", (*web)->input); if ((*web)->flag == 1) - { destroy_stack(&(*web)->temp); - (*web)->home_counter = 0; - } - else (*web)->flag = 0; + (*web)->flag = 0; if (!strcmp(peek_stack((*web)->history), "Inicio")) (*web)->home_counter++; return (status); From 6f4713554b068f337d89e00c47996f770d5d8d60 Mon Sep 17 00:00:00 2001 From: Troy Nebula <147437820+TroyNebula@users.noreply.github.com> Date: Wed, 28 Feb 2024 17:44:58 +0100 Subject: [PATCH 11/21] #07 - Python --- .../07 - PILAS Y COLAS/python/TroyNebula.py | 155 ++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 Roadmap/07 - PILAS Y COLAS/python/TroyNebula.py diff --git a/Roadmap/07 - PILAS Y COLAS/python/TroyNebula.py b/Roadmap/07 - PILAS Y COLAS/python/TroyNebula.py new file mode 100644 index 0000000000..d2d70f64bc --- /dev/null +++ b/Roadmap/07 - PILAS Y COLAS/python/TroyNebula.py @@ -0,0 +1,155 @@ +'''EJERCICIO: +Implementa los mecanismos de introducción y recuperación de elementos propios de las +pilas (stacks - LIFO) y las colas (queue - FIFO) utilizando una estructura de array +o lista (dependiendo de las posibilidades de tu lenguaje).''' +from collections import deque +# La lista en python funciona por defecto como pila, es más eficiente que una pila o cola + + +# pila / stack +lista = [] +lista.append(11) # Inserción al final de la lista +lista.append(13) # se le llama push a añadir, a apilar +lista.append(15) +print (lista) # [11, 13, 15] +lista.pop (1) # elimino el index 1 que es el 13 +print (lista) # [11, 15] + #la longitud de la lista es 3 pero en index son 2 (0,1,2) de ahí el -1 en la posición +num_desapilar = lista[len(lista)-1] +print (num_desapilar) # 15 + # Eliminar elementos de la pila (pop) El último en entrar es el primero en salir LIFO +del lista[len(lista)-1] # elimino el último por índice, el 15 "desapilar" +print (lista) # [11] +lista.pop () # elimino por defecto el último añadido, el 11 +print (lista) # [] +print() + + +# cola / queue FIFO Lista doblemente finalizada, fácil para insertar/eliminar en principios o finales +mi_deque = deque() +mi_deque.append(1) # push / inserción igual que en la pila +mi_deque.append(2) # pero se le llama encolar = enqueue +mi_deque.append(3) +print (mi_deque) # deque([1, 2, 3]) +mi_deque.appendleft(5) # inserta al principio +print (mi_deque) # deque([5, 1, 2, 3]) +print("Posición 1: ", mi_deque[1]) + # la posicioon 1 es el 1, la 0 es el 5 que acabamos de añadir +mi_deque.pop() # desencolar / dequeue / elimina el último que es el 3 / actúa como pila +print (mi_deque) # deque([5, 1, 2]) +mi_deque.popleft() #elimina el primero que es el 5 +print(mi_deque) # deque([1, 2]) +print() + + +''' DIFICULTAD EXTRA (opcional): +* Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás +de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle +que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web. +Las palabras "adelante", "atrás" desencadenan esta acción, el resto se interpreta como +el nombre de una nueva web. +* Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una +impresora compartida que recibe documentos y los imprime cuando así se le indica. +La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se +interpretan como nombres de documentos.''' + + + +'''No conseguía desplazarme por los items de la lista, quería que se fueran imprimiendo una tras otra, pero en el ejercicio +resuelto de Moure se introduce la web completa, quedando la lista así: +['moure.dev', 'moure.dev/inicio', 'moure.dev/inicio/cursos'] ''' + +def navega (): + stack =[] + while True: # Bucle infinito + + print ("""*********************************\nAdvertencia: Esto es un simulador no un navegador.\nIntroduce 'adelante/atras/salir' o el nombre de la web donde quieres ir.\nPor ejemplo: moure.dev/inicio/cursos/python ... etc.\nNo es necesario introducir 'http://' pero recuerda incluir la web completa :\n*********************************""") + introducido = input () + + if introducido == "adelante": + # No se puede solucinar con una pila, porque al ir atrás he borrado el último y no tengo ninguno al que avanzar + print() + print ( "---> Error 404 Página no encontrada") + + elif introducido == "atras": + if len (stack) == 1: + print() + print ("---> Estás en la página principal no puedes volver atrás.") + + elif len (stack) > 1: + stack.pop() + + elif introducido == "salir": + print() + print ("---> Has terminado de navegar. Adiós.") + break + else: + stack.append(introducido) + + print() + print (f"---> Estás en la web: http://{stack[len(stack)-1]}") # imprimo el último de la fila + +navega() + +def impresora (): + lista_documentos :list = [] + while True: + + print ("""*********************************\nIntroduce el nombre del documento a imprimir o 'salir'.\nPor ejemplo: factura.psd\nCuando quieras empezar la impresión escribe 'imprimir' para imprimir en orden, o 'imprimir' seguido del docuemnto que desee.\n*********************************""") + a_imprimir = input () + + if a_imprimir == "imprimir": + if len(lista_documentos) >0: + print(f"---> Se está imprimiendo el archivo {lista_documentos.pop(0)}") + if len(lista_documentos) ==0: + print ("---> No quedan documentos a imprimir. Lista vacía") + else: + print ("---> No quedan documentos a imprimir. Lista vacía") + + elif "imprimir" in a_imprimir: + if len(lista_documentos) >0: + nombre_concreto = a_imprimir.strip("imprimir ") + # print ("Nombre concreto:" + nombre_concreto) #comprobación ok + if nombre_concreto in lista_documentos: + print() + print (f"---> Se está imprimiendo el archivo {nombre_concreto}") + lista_documentos.remove(nombre_concreto) + if len(lista_documentos) ==0: + print ("---> No quedan documentos a imprimir. Lista vacía") + else: + print ("---> Archivo no encontrado. Comprueba si está en la cola de impresión.") + + elif a_imprimir == "salir": + print() + print ("---> Impresión terminada. Adiós.") + break + else: + lista_documentos.append(a_imprimir) + print() + print (f"---> Cola de impresión pendiente: {lista_documentos}") + +impresora () + +# Fin del ejercicio + +#----------------------------------------------------------------------------------------- +# mis pruebas de salida para ver el formato +mi_web: list = ["index"] +mi_web.append ("segunda") +inicio : str =mi_web[0] +print() +print("http://" + inicio) # http://index +print ("http://", mi_web) # http:// ['index', 'segunda'] +print (f"http://", {inicio}) # http:// {'index'} +print ("http://",mi_web[0:]) # http:// ['index', 'segunda'] +temp=str(mi_web[0:]) +print(f"http://" + temp) # http://['index', 'segunda'] Ya no hay espacio, pero sigue saliendo [] y ' +print(f"http://" + temp.strip(("[']"))) # http://index', 'segunda Sigue saliendo ' +mi_web.pop() +print(f"http://" + str(mi_web[0:])) # http://['index'] Ya no hay espacio, pero sigue saliendo [] y ' +print() + +#def imprime_web (mi_web): +# for pagina in mi_web: +# print (f"Estás en esta página http://" + pagina ) # Aquí se imprime con index limpio pero una línea por cada página +#imprime_web (mi_web) \ No newline at end of file From 946a3e19f11f4e1b63d8416bb25b9376d620f02f Mon Sep 17 00:00:00 2001 From: nightblockchain30 Date: Wed, 28 Feb 2024 18:07:59 +0100 Subject: [PATCH 12/21] #05 - JavaScript --- .../javascript/Nightblockchain30.js | 121 ++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 Roadmap/05 - VALOR Y REFERENCIA/javascript/Nightblockchain30.js diff --git a/Roadmap/05 - VALOR Y REFERENCIA/javascript/Nightblockchain30.js b/Roadmap/05 - VALOR Y REFERENCIA/javascript/Nightblockchain30.js new file mode 100644 index 0000000000..5e4d246bb4 --- /dev/null +++ b/Roadmap/05 - VALOR Y REFERENCIA/javascript/Nightblockchain30.js @@ -0,0 +1,121 @@ +/* + * EJERCICIO: + * - Muestra ejemplos de asignación de variables "por valor" y "por referencia", según + * su tipo de dato. + * - Muestra ejemplos de funciones con variables que se les pasan "por valor" y + * "por referencia", y cómo se comportan en cada caso en el momento de ser modificadas. + * (Entender estos conceptos es algo esencial en la gran mayoría de lenguajes) + * + * DIFICULTAD EXTRA (opcional): + * Crea dos programas que reciban dos parámetros (cada uno) definidos como variables anteriormente. + * - Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia. + * Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno + * se asigna a dos variables diferentes a las originales. A continuación, imprime el valor de las + * variables originales y las nuevas, comprobando que se ha invertido su valor en las segundas. + * Comprueba también que se ha conservado el valor original en las primeras. + */ + +//Refiere a cómo se manejan los valores y las direcciones de memoria cuando se asignan variables en un programa + +//Asignación por valor +/* +En la asignación por valor, se copia el contenido de la variable original en la nueva variable. +Las dos variables son independientes y ocupan ubicaciones de memoria diferentes. + */ +let variableoriginal= 10 +let variablecopia= variableoriginal //Asignación por valor +variableoriginal=20 + +console.log(`La variable original ahora vale ${variableoriginal} mientras que la variable copia +guarda el primer valor de la original en este caso ${variablecopia}`) + +//Asignación por referencia +/* +En la asignación por referencia, la nueva variable hace referencia a la misma ubicación de memoria que la variable original. + En este caso, cualquier cambio en una variable afectará a la otra, ya que comparten la misma ubicación de memoria. +*/ + +let arrayoriginal = ["Hola","Alexdevrep","Mundo"] +let arraycopia = arrayoriginal + +arraycopia[2] = "JavaScript" + +console.log (arrayoriginal) +/*Como podemos obsevar aunque hayamos modificado el array copia tambien se modifica el original +ya que ambos apuntan a la misma ubicación de memoria */ + +//Funciones con variables por valor + +function saludar(saludo){ + let mi_saludo = `Hola, ${saludo}` + return mi_saludo +} + +let holamundo = "JavaScript" +let resultado = saludar(holamundo) +console.log(holamundo) //La variable original no se modifica +console.log(resultado) + +//Funciones con variables por referencia + +function agregarelemento(array,elemento){ + array.push(elemento) + +} +//Vamos a usar el arrayoriginal creado anteriormente +agregarelemento(arrayoriginal,"Mundo") +console.log(arraycopia)//Imprimimos el arraycopia para comprobar que efectivamente ambos array apuntan a la misma ubicación de la memoria + + +//DIFICUALTAD EXTRA +/* DIFICULTAD EXTRA (opcional): +* Crea dos programas que reciban dos parámetros (cada uno) definidos como variables anteriormente. +* - Cada programa recibe, en un caso, dos parámetros por valor, y en otro caso, por referencia. +* Estos parámetros los intercambia entre ellos en su interior, los retorna, y su retorno +* se asigna a dos variables diferentes a las originales. A continuación, imprime el valor de las +* variables originales y las nuevas, comprobando que se ha invertido su valor en las segundas. +* Comprueba también que se ha conservado el valor original en las primeras. +*/ + +let valor1 = 3 +let valor2 = 5 +let objetoOriginal= { valor1: "Hola", valor2:"JavaScript"} +let objetoNuevo = programa2(objetoOriginal) + +function programa1 (valor1,valor2){ + valor1 = 5 + valor2 = 3 + return [valor1, valor2] + +} + +function programa2 (objeto){ + let intercambio =objeto.valor1 + objeto.valor1=objeto.valor2 + objeto.valor2 = intercambio + return objeto + +} + +console.log ("Resultado del programa 1: ") +console.log (`El valor de la variables originales es ${valor1} para la variable valor1 y ${valor2} para la variable valor2`) +let [valor1nuevo, valor2nuevo] = programa1(valor1,valor2) +console.log("El valor1 ahora será:" + valor1nuevo) +console.log("El valor2 ahora será:"+valor2nuevo) +console.log("-------------------------------------") +console.log ("Resultado del programa 2: ") + +console.log ("Valores originales:", objetoOriginal.valor1,objetoOriginal.valor2) +console.log ("Valores nuevos:", objetoNuevo.valor1,objetoNuevo.valor2) + + + + + + + + + + + + From 07c5a9024a2114f366d743f4749bf25d6005da92 Mon Sep 17 00:00:00 2001 From: nightblockchain30 Date: Wed, 28 Feb 2024 18:10:39 +0100 Subject: [PATCH 13/21] 05- JavaScript --- Roadmap/05 - VALOR Y REFERENCIA/javascript/Nightblockchain30.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Roadmap/05 - VALOR Y REFERENCIA/javascript/Nightblockchain30.js b/Roadmap/05 - VALOR Y REFERENCIA/javascript/Nightblockchain30.js index 5e4d246bb4..2121c33673 100644 --- a/Roadmap/05 - VALOR Y REFERENCIA/javascript/Nightblockchain30.js +++ b/Roadmap/05 - VALOR Y REFERENCIA/javascript/Nightblockchain30.js @@ -24,7 +24,7 @@ Las dos variables son independientes y ocupan ubicaciones de memoria diferentes. */ let variableoriginal= 10 let variablecopia= variableoriginal //Asignación por valor -variableoriginal=20 +variableoriginal=20 console.log(`La variable original ahora vale ${variableoriginal} mientras que la variable copia guarda el primer valor de la original en este caso ${variablecopia}`) From f284cc3055581ad1cb6cb1108b9abe8524eb2019 Mon Sep 17 00:00:00 2001 From: pyRamsd Date: Wed, 28 Feb 2024 13:03:50 -0500 Subject: [PATCH 14/21] #08 - python --- Roadmap/08 - CLASES/python/pyramsd.py | 112 ++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 Roadmap/08 - CLASES/python/pyramsd.py diff --git a/Roadmap/08 - CLASES/python/pyramsd.py b/Roadmap/08 - CLASES/python/pyramsd.py new file mode 100644 index 0000000000..44a3555e05 --- /dev/null +++ b/Roadmap/08 - CLASES/python/pyramsd.py @@ -0,0 +1,112 @@ +class FocoLedRGB: + + def __init__(self, color:str) -> None: + self.color = color + self.encendido = False + + def Led_ON(self) -> None: + self.encendido = True + + def Led_OFF(self) -> None: + self.encendido = False + + def change_Color(self, color) -> None: + self.color = color + + def get_Color(self) -> None: + return self.color + + def get_Status(self): + status = f'El led es de color {self.color} y ' + if self.encendido: + status += 'esta encendido' + else: + status += 'esta apagado' + + return status + +led = FocoLedRGB('blanco') +print(led.get_Status()) + +led.Led_ON() +print(led.get_Status()) + +print(led.get_Color()) + +led.change_Color('verde') +print(led.get_Color()) + +led.Led_OFF() +print(led.get_Status()) + +led.Led_ON() +print(led.get_Status()) + + +''' +EXTRA +''' + +class Stack: + + def __init__(self) -> None: + self.stack = [] + + def push(self, item) -> None: + self.stack.append(item) + + def pop(self): + if self.count() == 0: + return None + return self.stack.pop() + + def count(self) -> int: + return len(self.stack) + + def print(self) -> list: + print(self.stack) + +lista = Stack() +lista.print() +lista.push('A') +lista.print() +lista.push('B') +lista.push('c') +lista.push('d') +lista.print() +print(lista.count()) +lista.pop() +lista.print() +print(lista.pop()) +lista.print() + + +class Queue: + + def __init__(self) -> None: + self.queue = [] + + def enqueue(self, item): + self.queue.append(item) + + def dequeue(self): + if self.count() == 0: + return None + return self.queue.pop(0) + + def count(self): + return len(self.queue) + + def print(self): + print(self.queue) + + +my_queue = Queue() +my_queue.enqueue("A") +my_queue.enqueue("B") +my_queue.enqueue("c") +my_queue.enqueue("D") +my_queue.print() +my_queue.dequeue() +print(my_queue.count()) +print(my_queue.dequeue()) \ No newline at end of file From 4c26c52a0a50adb985adca859c54434bc3f810f6 Mon Sep 17 00:00:00 2001 From: Sergio Ruiz <98649699+pyramsd@users.noreply.github.com> Date: Wed, 28 Feb 2024 13:05:18 -0500 Subject: [PATCH 15/21] 08 - python --- Roadmap/08 - CLASES/python/pyramsd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Roadmap/08 - CLASES/python/pyramsd.py b/Roadmap/08 - CLASES/python/pyramsd.py index 44a3555e05..c59b3264a2 100644 --- a/Roadmap/08 - CLASES/python/pyramsd.py +++ b/Roadmap/08 - CLASES/python/pyramsd.py @@ -109,4 +109,4 @@ def print(self): my_queue.print() my_queue.dequeue() print(my_queue.count()) -print(my_queue.dequeue()) \ No newline at end of file +print(my_queue.dequeue()) From 5c2d7319bc54d6474dbcc70401bf8f247007a48a Mon Sep 17 00:00:00 2001 From: Johnniew81 <46456836+Johnniew81@users.noreply.github.com> Date: Wed, 28 Feb 2024 19:26:14 +0100 Subject: [PATCH 16/21] #00 - javascript --- .../javascript/johnniew81.js | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/johnniew81.js diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/johnniew81.js b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/johnniew81.js new file mode 100644 index 0000000000..2a6ccb11b0 --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/johnniew81.js @@ -0,0 +1,65 @@ +/* + * ¿Preparad@ para aprender o repasar el lenguaje de programación que tú quieras? + * - Recuerda que todas las instrucciones de participación están en el + * repositorio de GitHub. + * + * Lo primero... ¿Ya has elegido un lenguaje? + * - No todos son iguales, pero sus fundamentos suelen ser comunes. + * - Este primer reto te servirá para familiarizarte con la forma de participar + * enviando tus propias soluciones. + * + * EJERCICIO: + * - Crea un comentario en el código y coloca la URL del sitio web oficial del + * lenguaje de programación que has seleccionado. + * - Representa las diferentes sintaxis que existen de crear comentarios + * en el lenguaje (en una línea, varias...). + * - Crea una variable (y una constante si el lenguaje lo soporta). + * - Crea variables representando todos los tipos de datos primitivos + * del lenguaje (cadenas de texto, enteros, booleanos...). + * - Imprime por terminal el texto: "¡Hola, [y el nombre de tu lenguaje]!" + * + * ¿Fácil? No te preocupes, recuerda que esta es una ruta de estudio y + * debemos comenzar por el principio. + */ + +// --------------------------- Crea un comentario en el código y coloca la URL del sitio web oficial del ------------------------------------// + +// JavaScript - https://developer.mozilla.org/es/docs/Web/JavaScript + +// ------------------------------ Representa las diferentes sintaxis que existen de crear comentarios --------------------------------------// + +// Comentaro en una linea + +/* comentario en +varias +lineas +*/ + +// ---------------------------------- Crea una variable (y una constante si el lenguaje lo soporta) ------------------------------------------// + +var saludo = "Hola"; // en desuso +let despedida = "Adios"; +const saludoDespedida = "Hola y adios"; + +// -------------------------------- Crea variables representando todos los tipos de datos primitivos ----------------------------------------// + +// String +let string = "Cadena de texto"; +// Number +let number1 = 5; //entero +let number2 = 5.5; //decimal +// Booleano +let boolean1 = false; +let boolean2 = true; +//NULL +let datoNull = null; +//UNDEFINED +let noDefinido = undefined; +//BIGINT +let bigInt = 50n; +//SYMBOL +let simbol = Symbol("whaterver"); + +// ------------------------------- Imprime por terminal el texto: "¡Hola, [y el nombre de tu lenguaje]!" ---------------------------------------// + +console.log("Hola JavaScript"); From 714904889729002b686cf85d6afc7b2ce57f4530 Mon Sep 17 00:00:00 2001 From: Estrada Sanchez Jesus Date: Wed, 28 Feb 2024 12:53:08 -0600 Subject: [PATCH 17/21] #02 - Java --- .../java/JesusEs1312.java | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 Roadmap/02 - FUNCIONES Y ALCANCE/java/JesusEs1312.java diff --git a/Roadmap/02 - FUNCIONES Y ALCANCE/java/JesusEs1312.java b/Roadmap/02 - FUNCIONES Y ALCANCE/java/JesusEs1312.java new file mode 100644 index 0000000000..fdd0f5a179 --- /dev/null +++ b/Roadmap/02 - FUNCIONES Y ALCANCE/java/JesusEs1312.java @@ -0,0 +1,105 @@ +/* + * 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. + */ + +public class JesusEs1312 { + //--- Variables globales --- + String variableGlobal = "Soy una variable global"; + + //--- Funciones básicas --- + // Sin parámetros ni retorno + public void funcionBasica() { + System.out.println("Hola, soy una función básica sin parametros ni retorno"); + } + + // Con un parámetro + public void funcionConParametro(String parametro) { + System.out.println("Hola, soy una función con un parámetro: " + parametro); + } + + // Con varios parámetros + public void funcionConVariosParametros(String parametro1, String parametro2) { + System.out.println("Hola, soy una función con varios parámetros: " + parametro1 + " y " + parametro2); + } + + // Con retorno + public String funcionConRetorno() { + return "Hola, soy una función con retorno"; + } + + //--- Funciones dentro de funciones --- + public void funcionPrincipal() { + System.out.println("Hola, soy la función principal"); + funcionBasica(); + } + + public static void main(String[] args) { + //--- Variables locales --- + String variableLocal = "Soy una variable local"; + + JesusEs1312 jesus = new JesusEs1312(); + jesus.funcionBasica(); + jesus.funcionPrincipal(); + jesus.funcionConParametro("parametro"); + jesus.funcionConVariosParametros(variableLocal, jesus.variableGlobal); + System.out.println(jesus.funcionConRetorno()); + + //--- funciones ya creadas en el lenguaje --- + // Math.random() devuelve un número aleatorio entre 0.0 y 1.0 + System.out.println(Math.random()); + // UpperCase() convierte una cadena de texto a mayúsculas + System.out.println(jesus.funcionConRetorno().toUpperCase()); + // LowerCase() convierte una cadena de texto a minúsculas + System.out.println(jesus.funcionConRetorno().toLowerCase()); + // Length() devuelve la longitud de una cadena de texto + System.out.println(jesus.funcionConRetorno().length()); + // Replace() reemplaza una cadena de texto por otra + System.out.println(jesus.funcionConRetorno().replace("Hola", "Adios")); + // Substring() devuelve una subcadena de texto + System.out.println(jesus.funcionConRetorno().substring(0, 4)); + // Concat() concatena dos cadenas de texto + System.out.println(jesus.funcionConRetorno().concat(" con concatenación")); + // Equals() compara dos cadenas de texto + System.out.println(jesus.funcionConRetorno().equals("Hola, soy una función con retorno")); + + //--- Dificultad extra --- + System.out.println(jesus.funcionExtra("Fizz", "Buzz")); + } + + //--- Dificultad extra --- + public int funcionExtra(String parametro1, String parametro2) { + int contador = 0; + for (int i = 1; i <= 100; i++) { + if (i % 3 == 0 && i % 5 == 0) { + System.out.println(parametro1 + parametro2); + } else if (i % 3 == 0) { + System.out.println(parametro1); + } else if (i % 5 == 0) { + System.out.println(parametro2); + } else { + System.out.println(i); + } + contador++; + } + return contador; + } +} From 95c6f9f7cbdc92dab988c081e837f80788ebe4c2 Mon Sep 17 00:00:00 2001 From: rantamhack Date: Wed, 28 Feb 2024 20:00:00 +0100 Subject: [PATCH 18/21] #00-java --- .../java/Rantamhack.java | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/java/Rantamhack.java diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/java/Rantamhack.java b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/java/Rantamhack.java new file mode 100644 index 0000000000..43c42f8c5a --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/java/Rantamhack.java @@ -0,0 +1,83 @@ + +/* + * - Crea un comentario en el código y coloca la URL del sitio web oficial del + * lenguaje de programación que has seleccionado. + * - Representa las diferentes sintaxis que existen de crear comentarios + * en el lenguaje (en una lí­nea, varias...). + * - Crea una variable (y una constante si el lenguaje lo soporta). + * - Crea variables representando todos los tipos de datos primitivos + * del lenguaje (cadenas de texto, enteros, booleanos...). + * - Imprime por terminal el texto: "¡Hola, [y el nombre de tu lenguaje]!" +*/ + +// Para tener una línea comentada en java se usa el simbolo "//" + +/* +Para varias líneas se usa la combinacion barra "/" y Multiplicar "*" para abrir el comentario +y la combinación Multiplicar "*" barra "/" para cerrar el comentario. Las lí­neas intermedias +quedan comentadas +*/ + +/* +La página de referencia de java es https://www.java.com +La página para España es https://www.java.com/es/ +*/ + +public class Rantamhack { + public static void main (String[] args){ + + + // Constante de programa + final int MY_CONSTANTE = 100; + + // Variables + + // Entera (int) + int my_integer_variable = 16; + + // Decimal (float) + float my_pi_variable = 3.14f; + + // Caracter(char) + char my_char_variable = 'a'; + + // Texto (string) + String my_text_variable = "mi variable"; + + // Booleana (bool) + boolean my_bool_variable = true; + + // Mensaje de saludo al lenguaje + String lenguage = "Java"; + + // otras variable con menos uso + // --byte-- para cantidades pequeñas (de -128 a 127) + byte my_byte_variable = 15; + + // --short-- para cantidades medianas ( de -32678 a 32677) + short my_short_variable = 15000; + + // --long-- para numeros de -9223372036854775808 a 9223372036854775807 + long my_long_variable = 92233720368547756L; + + // --double-- para decimales con gran numero de cifras donde no llegue float + double my_double_variable = 0.111111111111111111111; + + + System.out.println(MY_CONSTANTE); + System.out.println(my_integer_variable); + System.out.println(my_pi_variable); + System.out.println(my_char_variable); + System.out.println(my_text_variable); + System.out.println(my_bool_variable); + System.out.println("¡¡Hola, "+lenguage +"!!"); + System.out.println(my_byte_variable); + System.out.println(my_short_variable); + System.out.println(my_long_variable); + System.out.println(my_double_variable); + + + + + } +} From 436a44e4a310db472be6306e96e434445d5749bc Mon Sep 17 00:00:00 2001 From: agusrosero Date: Wed, 28 Feb 2024 16:16:40 -0300 Subject: [PATCH 19/21] #00 - Javascript --- .../javascript/agusrosero.js | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/agusrosero.js diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/agusrosero.js b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/agusrosero.js new file mode 100644 index 0000000000..47dd04bd51 --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/agusrosero.js @@ -0,0 +1,45 @@ +/* + * ¿Preparad@ para aprender o repasar el lenguaje de programación que tú quieras? + * - Recuerda que todas las instrucciones de participación están en el + * repositorio de GitHub. + * + * Lo primero... ¿Ya has elegido un lenguaje? + * - No todos son iguales, pero sus fundamentos suelen ser comunes. + * - Este primer reto te servirá para familiarizarte con la forma de participar + * enviando tus propias soluciones. + * + * EJERCICIO: + * - Crea un comentario en el código y coloca la URL del sitio web oficial del + * lenguaje de programación que has seleccionado. + * - Representa las diferentes sintaxis que existen de crear comentarios + * en el lenguaje (en una línea, varias...). + * - Crea una variable (y una constante si el lenguaje lo soporta). + * - Crea variables representando todos los tipos de datos primitivos + * del lenguaje (cadenas de texto, enteros, booleanos...). + * - Imprime por terminal el texto: "¡Hola, [y el nombre de tu lenguaje]!" + * + * ¿Fácil? No te preocupes, recuerda que esta es una ruta de estudio y + * debemos comenzar por el principio. + */ + +// https://developer.mozilla.org/es/docs/Web/JavaScript + +// Comentario de una linea + +/* +Comentario +de +varias lineas +*/ + +let miVariable = "Hola, soy una variable"; +const miConstante = "Hola, soy una constante"; + +let cadena = "Hola"; +let numero = 42; +let nulo = null; +let indefinido = undefined; +let booleano = true; + +let lenguaje = "Javascript"; +console.log(`¡Hola, ${lenguaje}!`); From a42950e3bd39fb8972f1e1e44a8287691644062b Mon Sep 17 00:00:00 2001 From: hozlucas28 Date: Wed, 28 Feb 2024 16:32:59 -0300 Subject: [PATCH 20/21] Solution 09 - Python --- Roadmap/09 - HERENCIA/python/hozlucas28.py | 555 +++++++++++++++++++++ 1 file changed, 555 insertions(+) create mode 100644 Roadmap/09 - HERENCIA/python/hozlucas28.py diff --git a/Roadmap/09 - HERENCIA/python/hozlucas28.py b/Roadmap/09 - HERENCIA/python/hozlucas28.py new file mode 100644 index 0000000000..02674bb0a3 --- /dev/null +++ b/Roadmap/09 - HERENCIA/python/hozlucas28.py @@ -0,0 +1,555 @@ +""" + Inheritance... +""" + +from dataclasses import dataclass +from typing import Self, Literal + + +@dataclass +class Animal: + """Animal class""" + + _average_speed: float + _average_weight: float + _name: str + _sound: str | None + + def set_average_speed(self, average_speed: float) -> Self: + """Set a new average speed""" + self._average_speed = average_speed + return self + + def set_average_weight(self, average_weight: float) -> Self: + """Set a new average weight""" + self._average_weight = average_weight + return self + + def set_name(self, name: str) -> Self: + """Set a new name""" + self._name = name + return self + + def set_sound(self, sound: str) -> Self: + """Set a new sound""" + self._sound = sound + return self + + def get_average_speed(self) -> float: + """Return average speed""" + return self._average_speed + + def get_average_weight(self) -> float: + """Return average weight""" + return self._average_weight + + def get_name(self) -> str: + """Return name""" + return self._name + + def get_sound(self) -> str | None: + """Return sound""" + return self._sound + + def get_attributes(self) -> str: + """Return all attributes""" + return ( + f"Average speed --> {self.get_average_speed()}" + + f"\nAverage_weight --> {self.get_average_weight()}" + + f"\nName --> {self.get_name()}" + ) + + def print_sound(self) -> Self: + """Print sound""" + print(f"\n{self.get_sound()}") + return self + + +@dataclass +class Dog(Animal): + """Dog class""" + + _owner_name: str + _owner_phone: str + + def get_owner_name(self) -> str: + """Return owner name""" + return self._owner_name + + def get_owner_phone(self) -> str: + """Return owner phone""" + return self._owner_phone + + def set_owner_name(self, owner_name: str) -> Self: + """Set a new owner name""" + self._owner_name = owner_name + return self + + def set_owner_phone(self, owner_phone: str) -> Self: + """Set a new owner phone""" + self._owner_phone = owner_phone + return self + + def get_attributes(self) -> str: + return ( + super().get_attributes() + + f"\nOwner name --> {self.get_owner_name()}" + + f"\nOwner phone --> {self.get_owner_phone()}" + ) + + +@dataclass +class Cat(Animal): + """Cat class""" + + _owner_name: str + _owner_phone: str + + def get_owner_name(self) -> str: + """Return owner name""" + return self._owner_name + + def get_owner_phone(self) -> str: + """Return owner phone""" + return self._owner_phone + + def set_owner_name(self, owner_name: str) -> Self: + """Set a new owner name""" + self._owner_name = owner_name + return self + + def set_owner_phone(self, owner_phone: str) -> Self: + """Set a new owner phone""" + self._owner_phone = owner_phone + return self + + def get_attributes(self) -> str: + return ( + super().get_attributes() + + f"\nOwner name --> {self.get_owner_name()}" + + f"\nOwner phone --> {self.get_owner_phone()}" + ) + + +print("Inheritance in Python...") + +print( + """\nfrom dataclasses import dataclass +from typing import Self + + +@dataclass +class Animal: + \"\"\"Animal class\"\"\" + + _average_speed: float + _average_weight: float + _name: str + _sound: str | None + + def set_average_speed(self, average_speed: float) -> Self: + \"\"\"Set a new average speed\"\"\" + self._average_speed = average_speed + return self + + def set_average_weight(self, average_weight: float) -> Self: + \"\"\"Set a new average weight\"\"\" + self._average_weight = average_weight + return self + + def set_name(self, name: str) -> Self: + \"\"\"Set a new name\"\"\" + self._name = name + return self + + def set_sound(self, sound: str) -> Self: + \"\"\"Set a new sound\"\"\" + self._sound = sound + return self + + def get_average_speed(self) -> float: + \"\"\"Return average speed\"\"\" + return self._average_speed + + def get_average_weight(self) -> float: + \"\"\"Return average weight\"\"\" + return self._average_weight + + def get_name(self) -> str: + \"\"\"Return name\"\"\" + return self._name + + def get_sound(self) -> str | None: + \"\"\"Return sound\"\"\" + return self._sound + + def get_attributes(self) -> str: + \"\"\"Return all attributes\"\"\" + return ( + f\"Average speed --> {self.get_average_speed()}\" + + f\"\\nAverage_weight --> {self.get_average_weight()}\" + + f\"\\nName --> {self.get_name()}\" + ) + + def print_sound(self) -> Self: + \"\"\"Print sound\"\"\" + print(f\"\\n{self.get_sound()}\") + return self + + +@dataclass +class Dog(Animal): + \"\"\"Dog class\"\"\" + + _owner_name: str + _owner_phone: str + + def get_owner_name(self) -> str: + \"\"\"Return owner name\"\"\" + return self._owner_name + + def get_owner_phone(self) -> str: + \"\"\"Return owner phone\"\"\" + return self._owner_phone + + def set_owner_name(self, owner_name: str) -> Self: + \"\"\"Set a new owner name\"\"\" + self._owner_name = owner_name + return self + + def set_owner_phone(self, owner_phone: str) -> Self: + \"\"\"Set a new owner phone\"\"\" + self._owner_phone = owner_phone + return self + + def get_attributes(self) -> str: + return ( + super().get_attributes() + + f\"\\nOwner name --> {self.get_owner_name()}\" + + f\"\\nOwner phone --> {self.get_owner_phone()}\" + ) + + +@dataclass +class Cat(Animal): + \"\"\"Cat class\"\"\" + + _owner_name: str + _owner_phone: str + + def get_owner_name(self) -> str: + \"\"\"Return owner name\"\"\" + return self._owner_name + + def get_owner_phone(self) -> str: + \"\"\"Return owner phone\"\"\" + return self._owner_phone + + def set_owner_name(self, owner_name: str) -> Self: + \"\"\"Set a new owner name\"\"\" + self._owner_name = owner_name + return self + + def set_owner_phone(self, owner_phone: str) -> Self: + \"\"\"Set a new owner phone\"\"\" + self._owner_phone = owner_phone + return self + + def get_attributes(self) -> str: + return ( + super().get_attributes() + + f\"\\nOwner name --> {self.get_owner_name()}\" + + f\"\\nOwner phone --> {self.get_owner_phone()}\" + )""" +) + +dog = Dog( + _average_speed=21, + _average_weight=28, + _name="Angela", + _owner_name="Lucas Hoz", + _owner_phone="1134465758", + _sound="Woof", +) + +print( + """\n\ndog = Dog( + _average_speed=21, + _average_weight=28, + _name=\"Angela\", + _owner_name=\"Lucas Hoz\", + _owner_phone=\"1134465758\", + _sound=\"Woof\", +)""" +) + +print("\nDog attributes...\n") +print(dog.get_attributes()) + +print("\nDog sound...") +dog.print_sound() + +cat = Cat( + _average_speed=16, + _average_weight=14.68, + _name="Mini", + _owner_name="Martin Gonzales", + _owner_phone="1134485978", + _sound="Meow", +) + +print( + """\ncat = Cat( + _average_speed=16, + _average_weight=14.68, + _name=\"Mini\", + _owner_name=\"Martin Gonzales\", + _owner_phone=\"1134485978\", + _sound=\"Meow\", +)""" +) + +print("\nCat attributes...\n") +print(cat.get_attributes()) + +print("\nCat sound...") +cat.print_sound() + + +""" + Additional challenge... +""" + +print( + "\n# ---------------------------------------------------------------------------------- #\n" +) + +print("Additional challenge...") + + +@dataclass +class Employee: + """Employee class""" + + _first_name: str + _id: int + _last_name: str + _salary: float + + def set_first_name(self, first_name: str) -> Self: + """Set a new first name""" + self._first_name = first_name + return self + + def set_id(self, new_id: int) -> Self: + """Set a new first name""" + self._id = new_id + return self + + def set_last_name(self, last_name: str) -> Self: + """Set a new first name""" + self._last_name = last_name + return self + + def set_salary(self, salary: float) -> Self: + """Set a new first name""" + self._salary = salary + return self + + def get_first_name(self) -> str: + """Return first name""" + return self._first_name + + def get_id(self) -> int: + """Return first name""" + return self._id + + def get_last_name(self) -> str: + """Return first name""" + return self._last_name + + def get_salary(self) -> float: + """Return first name""" + return self._salary + + def get_attributes(self) -> str: + """Get all attributes""" + return ( + f"First name --> {self._first_name}" + + f"\nId --> {self._id}" + + f"\nLast name --> {self._last_name}" + + f"\nSalary --> {self._salary}" + ) + + +type Side = Literal["Backend", "Frontend", "Full Stack"] + + + + +@dataclass +class Programmer(Employee): + """Programmer class""" + + _languages: list[str] + _side: Side + + def set_languages(self, languages: list[str]) -> Self: + """Set new languages""" + self._languages = languages + return self + + def set_side(self, side: Side) -> Self: + """Set new side""" + self._side = side + return self + + def get_languages(self) -> list[str]: + """Get languages""" + return self._languages + + def get_side(self) -> Side: + """Get side""" + return self._side + + def get_attributes(self) -> str: + return ( + super().get_attributes() + + f"\nLanguages --> {self.get_languages()}" + + f"\nSide --> {self.get_side()}" + ) + + def write_code(self, language: str) -> str: + """Write code in the programming language of the programmer""" + return f"Writing code in {language}" + + +@dataclass +class ProjectManager(Employee): + """Project manager class""" + + _functions: list[str] + _programmers: list[Programmer] + + def set_functions(self, functions: list[str]) -> Self: + """Set new functions""" + self._functions = functions + return self + + def set_programmers(self, programmers: list[Programmer]) -> Self: + """Set new programmers""" + self._programmers = programmers + return self + + def get_functions(self) -> list[str]: + """Return functions""" + return self._functions + + def get_programmers(self) -> list[Programmer]: + """Return programmers""" + return self._programmers + + def get_attributes(self) -> str: + return ( + super().get_attributes() + + f"\nFunctions --> {self.get_functions()}" + + f"\nProgrammers --> {self.get_programmers()}" + ) + + def make_management(self) -> str: + """Make management stuffs""" + return "Just a project manager doing everything expect programming." + + +@dataclass() +class Manager(Employee): + """Manager class""" + + _department: str + _functions: list[str] + _project_managers: list[ProjectManager] + + def set_department(self, department: str) -> Self: + """Set new department""" + self._department = department + return self + + def set_functions(self, functions: list[str]) -> Self: + """Set new functions""" + self._functions = functions + return self + + def set_project_managers(self, project_managers: list[ProjectManager]) -> Self: + """Set new project managers""" + self._project_managers = project_managers + return self + + def get_department(self) -> str: + """Return department""" + return self._department + + def get_functions(self) -> list[str]: + """Return functions""" + return self._functions + + def get_project_managers(self) -> list[ProjectManager]: + """Return projects managers""" + return self._project_managers + + def get_attributes(self) -> str: + return ( + super().get_attributes() + + f"\nFunctions --> {self.get_functions()}" + + f"\nProject managers --> {self.get_project_managers()}" + ) + + def make_management(self) -> str: + """Make management stuffs""" + return "Just a manager doing management things." + + +programmer = Programmer( + _first_name="Lucas", + _id=0, + _languages=["JavaScript", "TypeScript", "Python"], + _last_name="Hoz", + _salary=150000, + _side="Full Stack", +) + +print("\nProgrammer attributes...\n") +print(programmer.get_attributes()) + +print("\nProgrammer methods...") +print(f"\nprogrammer.write_code() --> {programmer.write_code(language="Python")}") + +project_manager = ProjectManager( + _first_name="Lucas", + _functions=["Time management", "Team leardership"], + _id=1, + _last_name="Hoz", + _programmers=[programmer], + _salary=150000, +) + +print("\nProject manager attributes...\n") +print(project_manager.get_attributes()) + +print("\nProject manager methods...") +print(f"\nproject_manager.make_management() --> {project_manager.make_management()}") + +manager = Manager( + _department="Development", + _first_name="Lucas", + _functions=["Time management", "Financial planning", "Department management"], + _id=2, + _last_name="Hoz", + _project_managers=[project_manager], + _salary=150000, +) + +print("\nManager attributes...\n") +print(manager.get_attributes()) + +print("\nManager methods...") +print(f"\nmanager.make_management() --> {manager.make_management()}") From 9789057e981290179ad02d28beccdb24d10844bb Mon Sep 17 00:00:00 2001 From: mouredev Date: Thu, 29 Feb 2024 00:11:54 +0000 Subject: [PATCH 21/21] Update stats --- Roadmap/stats.json | 1152 +++++++++++++++++++++++--------------------- 1 file changed, 600 insertions(+), 552 deletions(-) diff --git a/Roadmap/stats.json b/Roadmap/stats.json index 5305907282..4a62bb069a 100644 --- a/Roadmap/stats.json +++ b/Roadmap/stats.json @@ -1,168 +1,168 @@ { "challenges_total": 10, - "languages_total": 33, - "files_total": 2177, - "users_total": 497, + "languages_total": 34, + "files_total": 2212, + "users_total": 504, "challenges_ranking": [ { "order": 1, "name": "00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO", - "count": 587 + "count": 593 }, { "order": 2, "name": "01 - OPERADORES Y ESTRUCTURAS DE CONTROL", - "count": 383 + "count": 386 }, { "order": 3, "name": "02 - FUNCIONES Y ALCANCE", - "count": 294 + "count": 297 }, { "order": 4, "name": "03 - ESTRUCTURAS DE DATOS", - "count": 202 + "count": 203 }, { "order": 5, "name": "04 - CADENAS DE CARACTERES", - "count": 174 + "count": 177 }, { "order": 6, "name": "06 - RECURSIVIDAD", - "count": 166 + "count": 167 }, { "order": 7, "name": "05 - VALOR Y REFERENCIA", - "count": 151 + "count": 152 }, { "order": 8, "name": "07 - PILAS Y COLAS", - "count": 110 + "count": 111 }, { "order": 9, "name": "08 - CLASES", - "count": 92 + "count": 99 }, { "order": 10, "name": "09 - HERENCIA", - "count": 18 + "count": 27 } ], "languages_ranking": [ { "order": 1, "name": "python", - "count": 833, - "percentage": 38.26 + "count": 842, + "percentage": 38.07 }, { "order": 2, "name": "javascript", - "count": 401, - "percentage": 18.42 + "count": 411, + "percentage": 18.58 }, { "order": 3, "name": "java", - "count": 214, - "percentage": 9.83 + "count": 220, + "percentage": 9.95 }, { "order": 4, "name": "typescript", "count": 117, - "percentage": 5.37 + "percentage": 5.29 }, { "order": 5, "name": "kotlin", - "count": 88, - "percentage": 4.04 + "count": 90, + "percentage": 4.07 }, { "order": 6, "name": "c#", - "count": 85, - "percentage": 3.9 + "count": 86, + "percentage": 3.89 }, { "order": 7, "name": "swift", - "count": 80, - "percentage": 3.67 + "count": 83, + "percentage": 3.75 }, { "order": 8, "name": "go", "count": 51, - "percentage": 2.34 + "percentage": 2.31 }, { "order": 9, "name": "php", - "count": 50, - "percentage": 2.3 + "count": 51, + "percentage": 2.31 }, { "order": 10, "name": "rust", - "count": 42, - "percentage": 1.93 + "count": 43, + "percentage": 1.94 }, { "order": 11, "name": "c", "count": 42, - "percentage": 1.93 + "percentage": 1.9 }, { "order": 12, "name": "c++", "count": 36, - "percentage": 1.65 + "percentage": 1.63 }, { "order": 13, "name": "dart", - "count": 33, - "percentage": 1.52 + "count": 34, + "percentage": 1.54 }, { "order": 14, "name": "bash", "count": 15, - "percentage": 0.69 + "percentage": 0.68 }, { "order": 15, "name": "ruby", "count": 13, - "percentage": 0.6 + "percentage": 0.59 }, { "order": 16, "name": "cobol", "count": 11, - "percentage": 0.51 + "percentage": 0.5 }, { "order": 17, "name": "arduino", "count": 10, - "percentage": 0.46 + "percentage": 0.45 }, { "order": 18, "name": "ocaml", "count": 10, - "percentage": 0.46 + "percentage": 0.45 }, { "order": 19, @@ -174,7 +174,7 @@ "order": 20, "name": "scala", "count": 8, - "percentage": 0.37 + "percentage": 0.36 }, { "order": 21, @@ -253,13 +253,19 @@ "name": "clojure", "count": 1, "percentage": 0.05 + }, + { + "order": 34, + "name": "04 - cadenas de caracteres", + "count": 1, + "percentage": 0.05 } ], "users_ranking": [ { "order": 1, "name": "miguelex", - "count": 86, + "count": 88, "languages": 15 }, { @@ -289,7 +295,7 @@ { "order": 6, "name": "cesar-ch", - "count": 24, + "count": 25, "languages": 3 }, { @@ -318,21 +324,21 @@ }, { "order": 11, - "name": "garos01", + "name": "blackriper", "count": 20, "languages": 2 }, { "order": 12, - "name": "didacdev", - "count": 19, - "languages": 3 + "name": "garos01", + "count": 20, + "languages": 2 }, { "order": 13, - "name": "blackriper", + "name": "didacdev", "count": 19, - "languages": 2 + "languages": 3 }, { "order": 14, @@ -342,43 +348,43 @@ }, { "order": 15, + "name": "juandaherrera", + "count": 18, + "languages": 5 + }, + { + "order": 16, "name": "n0hagonada", "count": 18, "languages": 2 }, { - "order": 16, + "order": 17, "name": "kenysdev", "count": 17, "languages": 3 }, { - "order": 17, + "order": 18, "name": "juanppdev", "count": 17, "languages": 3 }, { - "order": 18, + "order": 19, "name": "raulfauli", "count": 17, "languages": 2 }, { - "order": 19, + "order": 20, "name": "rikmij", "count": 17, "languages": 2 }, - { - "order": 20, - "name": "pguillo02", - "count": 16, - "languages": 5 - }, { "order": 21, - "name": "juandaherrera", + "name": "pguillo02", "count": 16, "languages": 5 }, @@ -403,7 +409,7 @@ { "order": 25, "name": "alvaro-neyra", - "count": 14, + "count": 15, "languages": 2 }, { @@ -486,487 +492,487 @@ }, { "order": 39, + "name": "jesusway69", + "count": 11, + "languages": 2 + }, + { + "order": 40, "name": "bertomp", "count": 10, "languages": 5 }, { - "order": 40, + "order": 41, "name": "othamae", "count": 10, "languages": 3 }, { - "order": 41, + "order": 42, "name": "neslarra", "count": 10, "languages": 2 }, { - "order": 42, + "order": 43, "name": "victor-casta", "count": 10, "languages": 2 }, { - "order": 43, + "order": 44, "name": "cesarcarmona30", "count": 10, "languages": 2 }, { - "order": 44, + "order": 45, "name": "igledev", "count": 10, "languages": 1 }, { - "order": 45, + "order": 46, "name": "kontroldev", "count": 10, "languages": 1 }, { - "order": 46, - "name": "javierjoyera", + "order": 47, + "name": "warclimb", "count": 10, "languages": 1 }, - { - "order": 47, - "name": "nightblockchain30", - "count": 9, - "languages": 2 - }, { "order": 48, - "name": "jchavescaceres", - "count": 9, - "languages": 2 + "name": "agusrosero", + "count": 10, + "languages": 1 }, { "order": 49, - "name": "jesusway69", - "count": 9, - "languages": 2 + "name": "javierjoyera", + "count": 10, + "languages": 1 }, { "order": 50, - "name": "brockar", + "name": "nightblockchain30", "count": 9, - "languages": 1 + "languages": 2 }, { "order": 51, - "name": "allbertomd", + "name": "jchavescaceres", "count": 9, - "languages": 1 + "languages": 2 }, { "order": 52, - "name": "oleojake", + "name": "brockar", "count": 9, "languages": 1 }, { "order": 53, - "name": "dan-corbo", + "name": "allbertomd", "count": 9, "languages": 1 }, { "order": 54, - "name": "parababire", + "name": "oleojake", "count": 9, "languages": 1 }, { "order": 55, - "name": "pancratzia", + "name": "dan-corbo", "count": 9, "languages": 1 }, { "order": 56, - "name": "christian-jfr", + "name": "parababire", "count": 9, "languages": 1 }, { "order": 57, - "name": "seandsun", + "name": "pancratzia", "count": 9, "languages": 1 }, { "order": 58, - "name": "hectorio23", + "name": "artickun", "count": 9, "languages": 1 }, { "order": 59, - "name": "jamerrq", + "name": "christian-jfr", "count": 9, "languages": 1 }, { "order": 60, - "name": "oriaj3", + "name": "seandsun", "count": 9, "languages": 1 }, { "order": 61, - "name": "jcdm60", + "name": "hectorio23", "count": 9, "languages": 1 }, { "order": 62, - "name": "soohav", + "name": "jamerrq", "count": 9, "languages": 1 }, { "order": 63, - "name": "isilanes", + "name": "oriaj3", "count": 9, "languages": 1 }, { "order": 64, - "name": "mouredev", + "name": "jcdm60", "count": 9, "languages": 1 }, { "order": 65, - "name": "avcenal", + "name": "soohav", "count": 9, "languages": 1 }, { "order": 66, - "name": "dataciriano", + "name": "isilanes", "count": 9, "languages": 1 }, { "order": 67, - "name": "caverobrandon", + "name": "mouredev", "count": 9, "languages": 1 }, { "order": 68, - "name": "adra-dev", + "name": "avcenal", "count": 9, "languages": 1 }, { "order": 69, - "name": "kuroz00", + "name": "dataciriano", "count": 9, "languages": 1 }, { "order": 70, - "name": "warclimb", + "name": "caverobrandon", "count": 9, "languages": 1 }, { "order": 71, - "name": "agusrosero", + "name": "adra-dev", "count": 9, "languages": 1 }, { "order": 72, - "name": "amadorquispe", + "name": "kuroz00", "count": 9, "languages": 1 }, { "order": 73, - "name": "asjordi", + "name": "amadorquispe", "count": 9, "languages": 1 }, { "order": 74, + "name": "asjordi", + "count": 9, + "languages": 1 + }, + { + "order": 75, "name": "pakiuh", "count": 8, "languages": 4 }, { - "order": 75, + "order": 76, "name": "angel-delg", "count": 8, "languages": 4 }, { - "order": 76, + "order": 77, + "name": "arkmiguel379", + "count": 8, + "languages": 3 + }, + { + "order": 78, "name": "xmunder", "count": 8, "languages": 2 }, { - "order": 77, + "order": 79, "name": "pcosin", "count": 8, "languages": 2 }, { - "order": 78, + "order": 80, "name": "rianojnicolas", "count": 8, "languages": 2 }, { - "order": 79, + "order": 81, "name": "a-mayans", "count": 8, "languages": 2 }, { - "order": 80, + "order": 82, "name": "ycanas", "count": 8, "languages": 2 }, { - "order": 81, + "order": 83, "name": "switchdays", "count": 8, "languages": 2 }, { - "order": 82, + "order": 84, "name": "karys4", "count": 8, "languages": 1 }, { - "order": 83, + "order": 85, + "name": "matitc", + "count": 8, + "languages": 1 + }, + { + "order": 86, + "name": "jesusantonioeescamilla", + "count": 8, + "languages": 1 + }, + { + "order": 87, "name": "fedeairala", "count": 8, "languages": 1 }, { - "order": 84, + "order": 88, "name": "pyramsd", "count": 8, "languages": 1 }, { - "order": 85, + "order": 89, "name": "toral24", "count": 8, "languages": 1 }, { - "order": 86, + "order": 90, "name": "majinka10", "count": 8, "languages": 1 }, { - "order": 87, + "order": 91, "name": "jtrujilloalcocer", "count": 8, "languages": 1 }, { - "order": 88, + "order": 92, "name": "m1l0j05", "count": 8, "languages": 1 }, { - "order": 89, + "order": 93, "name": "kleyner098", "count": 8, "languages": 1 }, { - "order": 90, + "order": 94, "name": "darubiano", "count": 7, "languages": 7 }, { - "order": 91, + "order": 95, "name": "nwpablodeveloper", "count": 7, "languages": 3 }, { - "order": 92, + "order": 96, "name": "diegoibb", "count": 7, "languages": 3 }, { - "order": 93, - "name": "arkmiguel379", + "order": 97, + "name": "jesuses1312", "count": 7, "languages": 2 }, { - "order": 94, + "order": 98, "name": "emedevelopa", "count": 7, "languages": 1 }, { - "order": 95, - "name": "matitc", - "count": 7, - "languages": 1 - }, - { - "order": 96, - "name": "jesusantonioeescamilla", - "count": 7, - "languages": 1 - }, - { - "order": 97, + "order": 99, "name": "gonzadev28", "count": 7, "languages": 1 }, { - "order": 98, + "order": 100, "name": "popmaquin", "count": 7, "languages": 1 }, { - "order": 99, + "order": 101, "name": "marinaortells", "count": 7, "languages": 1 }, { - "order": 100, + "order": 102, "name": "srvariable", "count": 7, "languages": 1 }, { - "order": 101, + "order": 103, "name": "gjbecerrae", "count": 7, "languages": 1 }, { - "order": 102, + "order": 104, "name": "saezmd", "count": 7, "languages": 1 }, { - "order": 103, + "order": 105, "name": "hyromy", "count": 7, "languages": 1 }, { - "order": 104, + "order": 106, "name": "troynebula", "count": 7, "languages": 1 }, { - "order": 105, + "order": 107, "name": "clmiranda", "count": 7, "languages": 1 }, { - "order": 106, + "order": 108, "name": "paula2409", "count": 7, "languages": 1 }, { - "order": 107, + "order": 109, "name": "mtirador", "count": 7, "languages": 1 }, { - "order": 108, + "order": 110, "name": "ldre3", "count": 7, "languages": 1 }, { - "order": 109, + "order": 111, "name": "chrisdev00", "count": 7, "languages": 1 }, { - "order": 110, + "order": 112, "name": "fidelysla", "count": 6, "languages": 3 }, { - "order": 111, + "order": 113, "name": "danilo0203", "count": 6, "languages": 2 }, { - "order": 112, + "order": 114, "name": "nlarrea", "count": 6, "languages": 2 }, { - "order": 113, + "order": 115, "name": "luterfloyd", "count": 6, "languages": 2 }, { - "order": 114, + "order": 116, "name": "luisk0706", "count": 6, "languages": 2 }, - { - "order": 115, - "name": "jesuses1312", - "count": 6, - "languages": 2 - }, - { - "order": 116, - "name": "guillemduno", - "count": 6, - "languages": 1 - }, { "order": 117, - "name": "any7dev", + "name": "guillemduno", "count": 6, "languages": 1 }, { "order": 118, - "name": "wolffcode", + "name": "any7dev", "count": 6, "languages": 1 }, { "order": 119, - "name": "artickun", + "name": "wolffcode", "count": 6, "languages": 1 }, @@ -1002,451 +1008,451 @@ }, { "order": 125, - "name": "hectordbh", + "name": "ocandodev", "count": 6, "languages": 1 }, { "order": 126, - "name": "deathwing696", + "name": "hectordbh", "count": 6, "languages": 1 }, { "order": 127, - "name": "alabacw74", - "count": 5, - "languages": 3 + "name": "deathwing696", + "count": 6, + "languages": 1 }, { "order": 128, - "name": "bryan112094", + "name": "alabacw74", "count": 5, "languages": 3 }, { "order": 129, - "name": "vmatmarco", + "name": "julianbuitragocharry-dev", "count": 5, - "languages": 2 + "languages": 3 }, { "order": 130, - "name": "jalivur", + "name": "bryan112094", "count": 5, - "languages": 2 + "languages": 3 }, { "order": 131, - "name": "alejandrodave", + "name": "vmatmarco", "count": 5, "languages": 2 }, { "order": 132, - "name": "icedrek", + "name": "jalivur", "count": 5, "languages": 2 }, { "order": 133, - "name": "mxtrar23", + "name": "alejandrodave", "count": 5, - "languages": 1 + "languages": 2 }, { "order": 134, - "name": "gliadev", + "name": "icedrek", "count": 5, - "languages": 1 + "languages": 2 }, { "order": 135, - "name": "lauracastrillonmp", + "name": "mxtrar23", "count": 5, "languages": 1 }, { "order": 136, - "name": "n1sek", + "name": "gliadev", "count": 5, "languages": 1 }, { "order": 137, - "name": "d4-n1", + "name": "lauracastrillonmp", "count": 5, "languages": 1 }, { "order": 138, - "name": "gmbarrios", + "name": "n1sek", "count": 5, "languages": 1 }, { "order": 139, - "name": "marcose-ferretoe", + "name": "d4-n1", "count": 5, "languages": 1 }, { "order": 140, - "name": "jose-luis-lanza", + "name": "gmbarrios", "count": 5, "languages": 1 }, { "order": 141, - "name": "yharyarias", + "name": "marcose-ferretoe", "count": 5, "languages": 1 }, { "order": 142, - "name": "gabrielramos02", + "name": "jose-luis-lanza", "count": 5, "languages": 1 }, { "order": 143, - "name": "k-90", + "name": "yharyarias", "count": 5, "languages": 1 }, { "order": 144, - "name": "alberba", + "name": "gabrielramos02", "count": 5, "languages": 1 }, { "order": 145, - "name": "monicavaquerano", + "name": "k-90", "count": 5, "languages": 1 }, { "order": 146, - "name": "manjaitan", + "name": "alberba", "count": 5, "languages": 1 }, { "order": 147, - "name": "karolle", + "name": "monicavaquerano", "count": 5, "languages": 1 }, { "order": 148, - "name": "alvarofernandezavalos", + "name": "manjaitan", "count": 5, "languages": 1 }, { "order": 149, - "name": "ocandodev", + "name": "gustavogomez19", "count": 5, "languages": 1 }, { "order": 150, - "name": "zequy40", + "name": "karolle", "count": 5, "languages": 1 }, { "order": 151, - "name": "zarakilancelot", - "count": 4, - "languages": 3 + "name": "alvarofernandezavalos", + "count": 5, + "languages": 1 }, { "order": 152, - "name": "mendozalz", - "count": 4, - "languages": 2 + "name": "adridoce", + "count": 5, + "languages": 1 }, { "order": 153, - "name": "julianbuitragocharry-dev", - "count": 4, - "languages": 2 + "name": "zequy40", + "count": 5, + "languages": 1 }, { "order": 154, - "name": "espinoleandroo", + "name": "zarakilancelot", "count": 4, - "languages": 2 + "languages": 3 }, { "order": 155, - "name": "willr30", + "name": "mendozalz", "count": 4, "languages": 2 }, { "order": 156, - "name": "eloychavezdev", + "name": "espinoleandroo", "count": 4, - "languages": 1 + "languages": 2 }, { "order": 157, - "name": "robmxz", + "name": "willr30", "count": 4, - "languages": 1 + "languages": 2 }, { "order": 158, - "name": "omegatroy", + "name": "18miguelgalarza", "count": 4, "languages": 1 }, { "order": 159, - "name": "vid92", + "name": "eloychavezdev", "count": 4, "languages": 1 }, { "order": 160, - "name": "vasilealexandru02", + "name": "robmxz", "count": 4, "languages": 1 }, { "order": 161, - "name": "axelprz", + "name": "omegatroy", "count": 4, "languages": 1 }, { "order": 162, - "name": "inkhemi", + "name": "vid92", "count": 4, "languages": 1 }, { "order": 163, - "name": "mirandayuber", + "name": "vasilealexandru02", "count": 4, "languages": 1 }, { "order": 164, - "name": "albertorevel", + "name": "axelprz", "count": 4, "languages": 1 }, { "order": 165, - "name": "ramxv", + "name": "inkhemi", "count": 4, "languages": 1 }, { "order": 166, - "name": "guillermo-k", + "name": "mirandayuber", "count": 4, "languages": 1 }, { "order": 167, - "name": "quejuan52", + "name": "albertorevel", "count": 4, "languages": 1 }, { "order": 168, - "name": "javirub", + "name": "ramxv", "count": 4, "languages": 1 }, { "order": 169, - "name": "zakkdrte", + "name": "guillermo-k", "count": 4, "languages": 1 }, { "order": 170, - "name": "tobibordino", + "name": "quejuan52", "count": 4, "languages": 1 }, { "order": 171, - "name": "dlgai12", + "name": "javirub", "count": 4, "languages": 1 }, { "order": 172, - "name": "jerrysantana", + "name": "zakkdrte", "count": 4, "languages": 1 }, { "order": 173, - "name": "blasbarragan", + "name": "tobibordino", "count": 4, "languages": 1 }, { "order": 174, - "name": "gustavogomez19", + "name": "dlgai12", "count": 4, "languages": 1 }, { "order": 175, - "name": "bladi23", + "name": "jerrysantana", "count": 4, "languages": 1 }, { "order": 176, - "name": "traver79", + "name": "blasbarragan", "count": 4, "languages": 1 }, { "order": 177, - "name": "adridoce", + "name": "bladi23", "count": 4, "languages": 1 }, { "order": 178, - "name": "mayerga", + "name": "traver79", "count": 4, "languages": 1 }, { "order": 179, - "name": "hugovrc", + "name": "mayerga", "count": 4, "languages": 1 }, { "order": 180, - "name": "deivitdev", + "name": "hugovrc", "count": 4, "languages": 1 }, { "order": 181, - "name": "abelsrzz", - "count": 3, - "languages": 3 + "name": "deivitdev", + "count": 4, + "languages": 1 }, { "order": 182, - "name": "akaisombra", + "name": "abelsrzz", "count": 3, "languages": 3 }, { "order": 183, - "name": "edalmava", + "name": "akaisombra", "count": 3, - "languages": 2 + "languages": 3 }, { "order": 184, - "name": "allanoscoding", + "name": "edalmava", "count": 3, "languages": 2 }, { "order": 185, - "name": "cubandeveloper89", + "name": "allanoscoding", "count": 3, "languages": 2 }, { "order": 186, - "name": "seba9906", + "name": "cubandeveloper89", "count": 3, "languages": 2 }, { "order": 187, - "name": "skala2301", + "name": "seba9906", "count": 3, "languages": 2 }, { "order": 188, - "name": "pablotaber", + "name": "skala2301", "count": 3, "languages": 2 }, { "order": 189, - "name": "dimasb69", + "name": "pablotaber", "count": 3, "languages": 2 }, { "order": 190, - "name": "vixxtory", + "name": "dimasb69", "count": 3, "languages": 2 }, { "order": 191, - "name": "daeduol", + "name": "vixxtory", "count": 3, "languages": 2 }, { "order": 192, - "name": "eloitr", + "name": "daeduol", "count": 3, "languages": 2 }, { "order": 193, - "name": "troleomotor10", + "name": "eloitr", "count": 3, "languages": 2 }, { "order": 194, - "name": "gitperalta", + "name": "troleomotor10", "count": 3, - "languages": 1 + "languages": 2 }, { "order": 195, - "name": "andeveling", + "name": "gitperalta", "count": 3, "languages": 1 }, { "order": 196, - "name": "coshiloco", + "name": "andeveling", "count": 3, "languages": 1 }, { "order": 197, - "name": "atienzar", + "name": "coshiloco", "count": 3, "languages": 1 }, { "order": 198, - "name": "javiearth", + "name": "atienzar", "count": 3, "languages": 1 }, { "order": 199, - "name": "18miguelgalarza", + "name": "javiearth", "count": 3, "languages": 1 }, @@ -1578,1662 +1584,1704 @@ }, { "order": 221, - "name": "elkin-dev", + "name": "rgeditv1", "count": 3, "languages": 1 }, { "order": 222, - "name": "camilo-zuluaga", + "name": "elkin-dev", "count": 3, "languages": 1 }, { "order": 223, - "name": "yeam-10", + "name": "camilo-zuluaga", "count": 3, "languages": 1 }, { "order": 224, - "name": "jorgegarcia-dev", + "name": "yeam-10", "count": 3, "languages": 1 }, { "order": 225, - "name": "dandrusco", + "name": "jorgegarcia-dev", "count": 3, "languages": 1 }, { "order": 226, - "name": "frostbitepy", + "name": "dandrusco", "count": 3, "languages": 1 }, { "order": 227, - "name": "sarismejiasanchez", + "name": "frostbitepy", "count": 3, "languages": 1 }, { "order": 228, - "name": "minn09", + "name": "sarismejiasanchez", "count": 3, "languages": 1 }, { "order": 229, - "name": "dmauricio4", + "name": "minn09", "count": 3, "languages": 1 }, { "order": 230, - "name": "volumidev", + "name": "dmauricio4", "count": 3, "languages": 1 }, { "order": 231, - "name": "francofmv", + "name": "volumidev", "count": 3, "languages": 1 }, { "order": 232, - "name": "oixild", + "name": "francofmv", "count": 3, "languages": 1 }, { "order": 233, - "name": "xurxogz", + "name": "oixild", "count": 3, "languages": 1 }, { "order": 234, - "name": "westwbn", + "name": "xurxogz", "count": 3, "languages": 1 }, { "order": 235, - "name": "rocallejas", + "name": "kingsaul22", "count": 3, "languages": 1 }, { "order": 236, - "name": "guido2288", + "name": "westwbn", "count": 3, "languages": 1 }, { "order": 237, - "name": "frangarmez21", + "name": "rocallejas", "count": 3, "languages": 1 }, { "order": 238, - "name": "kine-jdf", + "name": "guido2288", "count": 3, "languages": 1 }, { "order": 239, - "name": "jlcareglio", - "count": 2, - "languages": 2 + "name": "frangarmez21", + "count": 3, + "languages": 1 }, { "order": 240, - "name": "oskarcali", - "count": 2, - "languages": 2 + "name": "kine-jdf", + "count": 3, + "languages": 1 }, { "order": 241, - "name": "chuanmi", + "name": "jlcareglio", "count": 2, "languages": 2 }, { "order": 242, - "name": "sgb004", + "name": "oskarcali", "count": 2, "languages": 2 }, { "order": 243, - "name": "jmofuture", + "name": "chuanmi", "count": 2, "languages": 2 }, { "order": 244, - "name": "berentolkien", + "name": "sgb004", "count": 2, "languages": 2 }, { "order": 245, - "name": "raul-progr", + "name": "jmofuture", "count": 2, "languages": 2 }, { "order": 246, - "name": "lemito66", + "name": "berentolkien", "count": 2, "languages": 2 }, { "order": 247, - "name": "lydaf", + "name": "raul-progr", "count": 2, "languages": 2 }, { "order": 248, - "name": "lilberick", + "name": "lemito66", "count": 2, "languages": 2 }, { "order": 249, - "name": "carresoft", + "name": "lydaf", "count": 2, "languages": 2 }, { "order": 250, - "name": "tecfer", + "name": "lilberick", "count": 2, "languages": 2 }, { "order": 251, - "name": "ismaelmatiz", + "name": "carresoft", "count": 2, "languages": 2 }, { "order": 252, - "name": "younes0-0", + "name": "tecfer", "count": 2, "languages": 2 }, { "order": 253, - "name": "jhonatanmustiolacas", + "name": "ismaelmatiz", "count": 2, "languages": 2 }, { "order": 254, - "name": "diegokarabin", + "name": "younes0-0", "count": 2, - "languages": 1 + "languages": 2 }, { "order": 255, - "name": "waldid32", + "name": "jhonatanmustiolacas", "count": 2, - "languages": 1 + "languages": 2 }, { "order": 256, - "name": "reanthonyh", + "name": "diegokarabin", "count": 2, "languages": 1 }, { "order": 257, - "name": "peibolstrike", + "name": "waldid32", "count": 2, "languages": 1 }, { "order": 258, - "name": "farthaz", + "name": "reanthonyh", "count": 2, "languages": 1 }, { "order": 259, - "name": "omarland", + "name": "peibolstrike", "count": 2, "languages": 1 }, { "order": 260, - "name": "wesborland-github", + "name": "farthaz", "count": 2, "languages": 1 }, { "order": 261, - "name": "cpcarlosprieto", + "name": "omarland", "count": 2, "languages": 1 }, { "order": 262, - "name": "rolo27s", + "name": "wesborland-github", "count": 2, "languages": 1 }, { "order": 263, - "name": "akzorla", + "name": "cpcarlosprieto", "count": 2, "languages": 1 }, { "order": 264, - "name": "murquisdev", + "name": "rolo27s", "count": 2, "languages": 1 }, { "order": 265, - "name": "jhonf1992", + "name": "akzorla", "count": 2, "languages": 1 }, { "order": 266, - "name": "aleoe01", + "name": "murquisdev", "count": 2, "languages": 1 }, { "order": 267, - "name": "rikar2o", + "name": "jhonf1992", "count": 2, "languages": 1 }, { "order": 268, - "name": "jaimemunozdev", + "name": "aleoe01", "count": 2, "languages": 1 }, { "order": 269, - "name": "arliumdev", + "name": "rikar2o", "count": 2, "languages": 1 }, { "order": 270, - "name": "cristiansystem", + "name": "jaimemunozdev", "count": 2, "languages": 1 }, { "order": 271, - "name": "fsfigueroa77", + "name": "arliumdev", "count": 2, "languages": 1 }, { "order": 272, - "name": "fefestuve", + "name": "cristiansystem", "count": 2, "languages": 1 }, { "order": 273, - "name": "vicgallego", + "name": "fsfigueroa77", "count": 2, "languages": 1 }, { "order": 274, - "name": "csaraugusto2", + "name": "fefestuve", "count": 2, "languages": 1 }, { "order": 275, - "name": "cipollalucas", + "name": "vicgallego", "count": 2, "languages": 1 }, { "order": 276, - "name": "e-techgod", + "name": "csaraugusto2", "count": 2, "languages": 1 }, { "order": 277, - "name": "pakomor", + "name": "cipollalucas", "count": 2, "languages": 1 }, { "order": 278, - "name": "ziellucio01", + "name": "e-techgod", "count": 2, "languages": 1 }, { "order": 279, - "name": "alejandrovelasquezr", + "name": "pakomor", "count": 2, "languages": 1 }, { "order": 280, - "name": "luciarf", + "name": "ziellucio01", "count": 2, "languages": 1 }, { "order": 281, - "name": "zalazarmartin", + "name": "alejandrovelasquezr", "count": 2, "languages": 1 }, { "order": 282, - "name": "gmigues", + "name": "luciarf", "count": 2, "languages": 1 }, { "order": 283, - "name": "rgeditv1", + "name": "zalazarmartin", "count": 2, "languages": 1 }, { "order": 284, - "name": "davstudy", + "name": "gmigues", "count": 2, "languages": 1 }, { "order": 285, - "name": "tekatoki", + "name": "davstudy", "count": 2, "languages": 1 }, { "order": 286, - "name": "carlosmarte23", + "name": "tekatoki", "count": 2, "languages": 1 }, { "order": 287, - "name": "baauus", + "name": "carlosmarte23", "count": 2, "languages": 1 }, { "order": 288, - "name": "anblackter", + "name": "baauus", "count": 2, "languages": 1 }, { "order": 289, - "name": "gregfc95", + "name": "anblackter", "count": 2, "languages": 1 }, { "order": 290, - "name": "eriickm", + "name": "gregfc95", "count": 2, "languages": 1 }, { "order": 291, - "name": "lauradiazm29", + "name": "eriickm", "count": 2, "languages": 1 }, { "order": 292, - "name": "yoezequiel", + "name": "lauradiazm29", "count": 2, "languages": 1 }, { "order": 293, - "name": "aserranot", + "name": "yoezequiel", "count": 2, "languages": 1 }, { "order": 294, - "name": "arhl2023", + "name": "aserranot", "count": 2, "languages": 1 }, { "order": 295, - "name": "alextc35", + "name": "arhl2023", "count": 2, "languages": 1 }, { "order": 296, - "name": "hersac", + "name": "alextc35", "count": 2, "languages": 1 }, { "order": 297, - "name": "david-quinones", + "name": "hersac", "count": 2, "languages": 1 }, { "order": 298, - "name": "peeanoot", + "name": "david-quinones", "count": 2, "languages": 1 }, { "order": 299, - "name": "isidrojng", + "name": "peeanoot", "count": 2, "languages": 1 }, { "order": 300, - "name": "juaruibr", + "name": "joseesmil04", "count": 2, "languages": 1 }, { "order": 301, - "name": "luis-vb", + "name": "isidrojng", "count": 2, "languages": 1 }, { "order": 302, - "name": "saracorraless", + "name": "juaruibr", "count": 2, "languages": 1 }, { "order": 303, - "name": "sdm29gh", + "name": "luis-vb", "count": 2, "languages": 1 }, { "order": 304, - "name": "chartypes", + "name": "saracorraless", "count": 2, "languages": 1 }, { "order": 305, - "name": "jesusanotnioeescamilla", + "name": "sdm29gh", "count": 2, "languages": 1 }, { "order": 306, - "name": "rikar20", + "name": "chartypes", "count": 2, "languages": 1 }, { "order": 307, - "name": "lmedina96", + "name": "lordzzz777", "count": 2, "languages": 1 }, { "order": 308, - "name": "raulallue", + "name": "jesusanotnioeescamilla", "count": 2, "languages": 1 }, { "order": 309, - "name": "alanshakir", + "name": "rikar20", "count": 2, "languages": 1 }, { "order": 310, - "name": "yowcloud", + "name": "lmedina96", "count": 2, "languages": 1 }, { "order": 311, - "name": "tiaguiito3", + "name": "raulallue", "count": 2, "languages": 1 }, { "order": 312, - "name": "lorenamesa", + "name": "alanshakir", "count": 2, "languages": 1 }, { "order": 313, - "name": "teren91", + "name": "yowcloud", "count": 2, "languages": 1 }, { "order": 314, - "name": "frannmv", + "name": "tiaguiito3", "count": 2, "languages": 1 }, { "order": 315, - "name": "serg-pq", - "count": 1, + "name": "lorenamesa", + "count": 2, "languages": 1 }, { "order": 316, - "name": "alexisbarradev", - "count": 1, + "name": "teren91", + "count": 2, "languages": 1 }, { "order": 317, - "name": "lara-vel-dev", - "count": 1, + "name": "frannmv", + "count": 2, "languages": 1 }, { "order": 318, - "name": "tartabullroberto", + "name": "serg-pq", "count": 1, "languages": 1 }, { "order": 319, - "name": "van-02", + "name": "alexisbarradev", "count": 1, "languages": 1 }, { "order": 320, - "name": "lucc4sz", + "name": "lara-vel-dev", "count": 1, "languages": 1 }, { "order": 321, - "name": "gizelads", + "name": "tartabullroberto", "count": 1, "languages": 1 }, { "order": 322, - "name": "seigigim", + "name": "van-02", "count": 1, "languages": 1 }, { "order": 323, - "name": "manugonzalito", + "name": "lucc4sz", "count": 1, "languages": 1 }, { "order": 324, - "name": "jancalos", + "name": "gizelads", "count": 1, "languages": 1 }, { "order": 325, - "name": "serg032", + "name": "seigigim", "count": 1, "languages": 1 }, { "order": 326, - "name": "is2095", + "name": "manugonzalito", "count": 1, "languages": 1 }, { "order": 327, - "name": "santiagomac", + "name": "jancalos", "count": 1, "languages": 1 }, { "order": 328, - "name": "franpua", + "name": "serg032", "count": 1, "languages": 1 }, { "order": 329, - "name": "sirvega83", + "name": "is2095", "count": 1, "languages": 1 }, { "order": 330, - "name": "franciscokarriere", + "name": "santiagomac", "count": 1, "languages": 1 }, { "order": 331, - "name": "bjchavez", + "name": "franpua", "count": 1, "languages": 1 }, { "order": 332, - "name": "sixtodev", + "name": "sirvega83", "count": 1, "languages": 1 }, { "order": 333, - "name": "jsruedatorres", + "name": "franciscokarriere", "count": 1, "languages": 1 }, { "order": 334, - "name": "romanocoder", + "name": "bjchavez", "count": 1, "languages": 1 }, { "order": 335, - "name": "jd-gm", + "name": "sixtodev", "count": 1, "languages": 1 }, { "order": 336, - "name": "maximotoro", + "name": "jsruedatorres", "count": 1, "languages": 1 }, { "order": 337, - "name": "ronnieruuz", + "name": "isnatthy", "count": 1, "languages": 1 }, { "order": 338, - "name": "lytsar", + "name": "romanocoder", "count": 1, "languages": 1 }, { "order": 339, - "name": "gerespinosa", + "name": "jd-gm", "count": 1, "languages": 1 }, { "order": 340, - "name": "diegoxxd", + "name": "maximotoro", "count": 1, "languages": 1 }, { "order": 341, - "name": "jacobrwx", + "name": "ronnieruuz", "count": 1, "languages": 1 }, { "order": 342, - "name": "joseperesini", + "name": "lytsar", "count": 1, "languages": 1 }, { "order": 343, - "name": "imista", + "name": "gerespinosa", "count": 1, "languages": 1 }, { "order": 344, - "name": "afl0r3s", + "name": "diegoxxd", "count": 1, "languages": 1 }, { "order": 345, - "name": "cliverjimny123", + "name": "jacobrwx", "count": 1, "languages": 1 }, { "order": 346, - "name": "walkerlyna", + "name": "joseperesini", "count": 1, "languages": 1 }, { "order": 347, - "name": "edgonzz", + "name": "imista", "count": 1, "languages": 1 }, { "order": 348, - "name": "mdemena", + "name": "afl0r3s", "count": 1, "languages": 1 }, { "order": 349, - "name": "yessikamichelle", + "name": "cliverjimny123", "count": 1, "languages": 1 }, { "order": 350, - "name": "lucianogriffa", + "name": "walkerlyna", "count": 1, "languages": 1 }, { "order": 351, - "name": "gustavoguerrero", + "name": "edgonzz", "count": 1, "languages": 1 }, { "order": 352, - "name": "fernandofl", + "name": "mdemena", "count": 1, "languages": 1 }, { "order": 353, - "name": "codejoss", + "name": "yessikamichelle", "count": 1, "languages": 1 }, { "order": 354, - "name": "javieradev", + "name": "francescoalterio", "count": 1, "languages": 1 }, { "order": 355, - "name": "kronomio", + "name": "lucianogriffa", "count": 1, "languages": 1 }, { "order": 356, - "name": "alvarommedia", + "name": "gustavoguerrero", "count": 1, "languages": 1 }, { "order": 357, - "name": "kenzambrano", + "name": "fernandofl", "count": 1, "languages": 1 }, { "order": 358, - "name": "lfam200", + "name": "codejoss", "count": 1, "languages": 1 }, { "order": 359, - "name": "nozodev", + "name": "javieradev", "count": 1, "languages": 1 }, { "order": 360, - "name": "gc796", + "name": "kronomio", "count": 1, "languages": 1 }, { "order": 361, - "name": "kevinramirez28", + "name": "alvarommedia", "count": 1, "languages": 1 }, { "order": 362, - "name": "vmga09", + "name": "kenzambrano", "count": 1, "languages": 1 }, { "order": 363, - "name": "aleclto7", + "name": "lfam200", "count": 1, "languages": 1 }, { "order": 364, - "name": "mvillegas18", + "name": "nozodev", "count": 1, "languages": 1 }, { "order": 365, - "name": "pierre-ol", + "name": "dmhenaopa", "count": 1, "languages": 1 }, { "order": 366, - "name": "jovany-java", + "name": "gc796", "count": 1, "languages": 1 }, { "order": 367, - "name": "dannymarperone", + "name": "kevinramirez28", "count": 1, "languages": 1 }, { "order": 368, - "name": "quirogapau", + "name": "vmga09", "count": 1, "languages": 1 }, { "order": 369, - "name": "deimoshall", + "name": "aleclto7", "count": 1, "languages": 1 }, { "order": 370, - "name": "kevin05m", + "name": "mvillegas18", "count": 1, "languages": 1 }, { "order": 371, - "name": "diegomm27", + "name": "pierre-ol", "count": 1, "languages": 1 }, { "order": 372, - "name": "fede6299", + "name": "jovany-java", "count": 1, "languages": 1 }, { "order": 373, - "name": "paluzz", + "name": "dannymarperone", "count": 1, "languages": 1 }, { "order": 374, - "name": "vinyoles", + "name": "quirogapau", "count": 1, "languages": 1 }, { "order": 375, - "name": "sergio-strazzacappa", + "name": "ca2puntosv", "count": 1, "languages": 1 }, { "order": 376, - "name": "arathhh8", + "name": "deimoshall", "count": 1, "languages": 1 }, { "order": 377, - "name": "omarroman29", + "name": "kevin05m", "count": 1, "languages": 1 }, { "order": 378, - "name": "lobogeekmx", + "name": "diegomm27", "count": 1, "languages": 1 }, { "order": 379, - "name": "miguelgargallo", + "name": "fede6299", "count": 1, "languages": 1 }, { "order": 380, - "name": "marqitos", + "name": "paluzz", "count": 1, "languages": 1 }, { "order": 381, - "name": "nunezlagos", + "name": "vinyoles", "count": 1, "languages": 1 }, { "order": 382, - "name": "ishimaku", + "name": "sergio-strazzacappa", "count": 1, "languages": 1 }, { "order": 383, - "name": "rootqui", + "name": "arathhh8", "count": 1, "languages": 1 }, { "order": 384, - "name": "afacorroloscos", + "name": "omarroman29", "count": 1, "languages": 1 }, { "order": 385, - "name": "jatomas", + "name": "lobogeekmx", "count": 1, "languages": 1 }, { "order": 386, - "name": "astriebeck", + "name": "chrisfelixgil", "count": 1, "languages": 1 }, { "order": 387, - "name": "marvinagui", + "name": "miguelgargallo", "count": 1, "languages": 1 }, { "order": 388, - "name": "adcarret", + "name": "marqitos", "count": 1, "languages": 1 }, { "order": 389, - "name": "geridage", + "name": "nunezlagos", "count": 1, "languages": 1 }, { "order": 390, - "name": "fergz1988", + "name": "ishimaku", "count": 1, "languages": 1 }, { "order": 391, - "name": "suescun845", + "name": "rootqui", "count": 1, "languages": 1 }, { "order": 392, - "name": "xalejandrow", + "name": "afacorroloscos", "count": 1, "languages": 1 }, { "order": 393, - "name": "vickalck", + "name": "jatomas", "count": 1, "languages": 1 }, { "order": 394, - "name": "and-y21", + "name": "astriebeck", "count": 1, "languages": 1 }, { "order": 395, - "name": "turudev1979", + "name": "marvinagui", "count": 1, "languages": 1 }, { "order": 396, - "name": "luceldasilva", + "name": "adcarret", "count": 1, "languages": 1 }, { "order": 397, - "name": "kshields51", + "name": "geridage", "count": 1, "languages": 1 }, { "order": 398, - "name": "dimanu-py", + "name": "fergz1988", "count": 1, "languages": 1 }, { "order": 399, - "name": "cisneros2404", + "name": "suescun845", "count": 1, "languages": 1 }, { "order": 400, - "name": "gmedinat911", + "name": "xalejandrow", "count": 1, "languages": 1 }, { "order": 401, - "name": "sherkla12e", + "name": "vickalck", "count": 1, "languages": 1 }, { "order": 402, - "name": "miguelmancebo", + "name": "and-y21", "count": 1, "languages": 1 }, { "order": 403, - "name": "judithernandez", + "name": "turudev1979", "count": 1, "languages": 1 }, { "order": 404, - "name": "davidgramiro", + "name": "luceldasilva", "count": 1, "languages": 1 }, { "order": 405, - "name": "johao23", + "name": "kshields51", "count": 1, "languages": 1 }, { "order": 406, - "name": "restevean", + "name": "dimanu-py", "count": 1, "languages": 1 }, { "order": 407, - "name": "salas89", + "name": "cisneros2404", "count": 1, "languages": 1 }, { "order": 408, - "name": "juanalbornoz32", + "name": "gmedinat911", "count": 1, "languages": 1 }, { "order": 409, - "name": "jadraz", + "name": "sherkla12e", "count": 1, "languages": 1 }, { "order": 410, - "name": "yamiyugi25", + "name": "miguelmancebo", "count": 1, "languages": 1 }, { "order": 411, - "name": "sbngl", + "name": "judithernandez", "count": 1, "languages": 1 }, { "order": 412, - "name": "jalonso76", + "name": "davidgramiro", "count": 1, "languages": 1 }, { "order": 413, - "name": "betulioo", + "name": "johao23", "count": 1, "languages": 1 }, { "order": 414, - "name": "mjordanaam", + "name": "restevean", "count": 1, "languages": 1 }, { "order": 415, - "name": "charly024", + "name": "salas89", "count": 1, "languages": 1 }, { "order": 416, - "name": "g4nd4lf", + "name": "juanalbornoz32", "count": 1, "languages": 1 }, { "order": 417, - "name": "dakkaj", + "name": "jadraz", "count": 1, "languages": 1 }, { "order": 418, - "name": "vmarialuzm", + "name": "yamiyugi25", "count": 1, "languages": 1 }, { "order": 419, - "name": "dacaldev", + "name": "sbngl", "count": 1, "languages": 1 }, { "order": 420, - "name": "demegorash", + "name": "jalonso76", "count": 1, "languages": 1 }, { "order": 421, - "name": "amitchellg", + "name": "betulioo", "count": 1, "languages": 1 }, { "order": 422, - "name": "90dread", + "name": "mjordanaam", "count": 1, "languages": 1 }, { "order": 423, - "name": "serg_pq", + "name": "charly024", "count": 1, "languages": 1 }, { "order": 424, - "name": "det3992", + "name": "g4nd4lf", "count": 1, "languages": 1 }, { "order": 425, - "name": "algeloro", + "name": "dakkaj", "count": 1, "languages": 1 }, { "order": 426, - "name": "deathbato", + "name": "vmarialuzm", "count": 1, "languages": 1 }, { "order": 427, - "name": "jony_english22", + "name": "dacaldev", "count": 1, "languages": 1 }, { "order": 428, - "name": "rumacar05", + "name": "demegorash", "count": 1, "languages": 1 }, { "order": 429, - "name": "jrgim", + "name": "amitchellg", "count": 1, "languages": 1 }, { "order": 430, - "name": "frankmon03", + "name": "90dread", "count": 1, "languages": 1 }, { "order": 431, - "name": "alvaropg15", + "name": "serg_pq", "count": 1, "languages": 1 }, { "order": 432, - "name": "chrystiancalderon", + "name": "det3992", "count": 1, "languages": 1 }, { "order": 433, - "name": "bycris13", + "name": "algeloro", "count": 1, "languages": 1 }, { "order": 434, - "name": "fredylopez01", + "name": "deathbato", "count": 1, "languages": 1 }, { "order": 435, - "name": "joseesmil04", + "name": "jony_english22", "count": 1, "languages": 1 }, { "order": 436, - "name": "mathiur", + "name": "rumacar05", "count": 1, "languages": 1 }, { "order": 437, - "name": "reneguzman7", + "name": "jrgim", "count": 1, "languages": 1 }, { "order": 438, - "name": "kingsaul22", + "name": "frankmon03", "count": 1, "languages": 1 }, { "order": 439, - "name": "antoniojzp86", + "name": "alvaropg15", "count": 1, "languages": 1 }, { "order": 440, - "name": "zyn7e", + "name": "chrystiancalderon", "count": 1, "languages": 1 }, { "order": 441, - "name": "pguillo", + "name": "bycris13", "count": 1, "languages": 1 }, { "order": 442, - "name": "adriangonzalezroble", + "name": "fredylopez01", "count": 1, "languages": 1 }, { "order": 443, - "name": "chalaito88", + "name": "mathiur", "count": 1, "languages": 1 }, { "order": 444, - "name": "lewisoneil", + "name": "reneguzman7", "count": 1, "languages": 1 }, { "order": 445, - "name": "daniel-cas", + "name": "antoniojzp86", "count": 1, "languages": 1 }, { "order": 446, - "name": "alvarominarro", + "name": "zyn7e", "count": 1, "languages": 1 }, { "order": 447, - "name": "davidcv-dev", + "name": "pguillo", "count": 1, "languages": 1 }, { "order": 448, - "name": "jaennova", + "name": "adriangonzalezroble", "count": 1, "languages": 1 }, { "order": 449, - "name": "deiiviitdev", + "name": "chalaito88", "count": 1, "languages": 1 }, { "order": 450, - "name": "luisalberto22", + "name": "lewisoneil", "count": 1, "languages": 1 }, { "order": 451, - "name": "palons29", + "name": "daniel-cas", "count": 1, "languages": 1 }, { "order": 452, - "name": "johannhsdev", + "name": "alvarominarro", "count": 1, "languages": 1 }, { "order": 453, - "name": "brunom-93", + "name": "davidcv-dev", "count": 1, "languages": 1 }, { "order": 454, - "name": "jarzatedev", + "name": "jaennova", "count": 1, "languages": 1 }, { "order": 455, - "name": "jaimesoftdev", + "name": "deiiviitdev", "count": 1, "languages": 1 }, { "order": 456, - "name": "charlerodriguez3", + "name": "luisalberto22", "count": 1, "languages": 1 }, { "order": 457, - "name": "devvdroid01", + "name": "palons29", "count": 1, "languages": 1 }, { "order": 458, - "name": "dgquintero", + "name": "johannhsdev", "count": 1, "languages": 1 }, { "order": 459, - "name": "torvicv", + "name": "brunom-93", "count": 1, "languages": 1 }, { "order": 460, - "name": "carlosmares", + "name": "jarzatedev", "count": 1, "languages": 1 }, { "order": 461, - "name": "713avo", + "name": "jaimesoftdev", "count": 1, "languages": 1 }, { "order": 462, - "name": "lordzzz", + "name": "charlerodriguez3", "count": 1, "languages": 1 }, { "order": 463, - "name": "alinares94", + "name": "devvdroid01", "count": 1, "languages": 1 }, { "order": 464, - "name": "jferchotorres", + "name": "dgquintero", "count": 1, "languages": 1 }, { "order": 465, - "name": "cuervo23alpha", + "name": "torvicv", "count": 1, "languages": 1 }, { "order": 466, - "name": "zonnen69", + "name": "carlosmares", "count": 1, "languages": 1 }, { "order": 467, - "name": "angel-agis", + "name": "713avo", "count": 1, "languages": 1 }, { "order": 468, - "name": "mauricioobgo", + "name": "lordzzz", "count": 1, "languages": 1 }, { "order": 469, - "name": "h4cker54n", + "name": "alinares94", "count": 1, "languages": 1 }, { "order": 470, - "name": "luisolivaresj", + "name": "jferchotorres", "count": 1, "languages": 1 }, { "order": 471, - "name": "ingjavierpinilla", + "name": "cuervo23alpha", "count": 1, "languages": 1 }, { "order": 472, - "name": "derobpe", + "name": "zonnen69", "count": 1, "languages": 1 }, { "order": 473, - "name": "lordzzz777", + "name": "angel-agis", "count": 1, "languages": 1 }, { "order": 474, - "name": "franespina", + "name": "mauricioobgo", "count": 1, "languages": 1 }, { "order": 475, - "name": "davidbastosg", + "name": "h4cker54n", "count": 1, "languages": 1 }, { "order": 476, - "name": "josephinoo", + "name": "luisolivaresj", "count": 1, "languages": 1 }, { "order": 477, - "name": "evilpodato04", + "name": "ingjavierpinilla", "count": 1, "languages": 1 }, { "order": 478, - "name": "anitandil", + "name": "derobpe", "count": 1, "languages": 1 }, { "order": 479, - "name": "miquelrr", + "name": "franespina", "count": 1, "languages": 1 }, { "order": 480, - "name": "gabriel-dangelo", + "name": "davidbastosg", "count": 1, "languages": 1 }, { "order": 481, - "name": "sve-nnn", + "name": "josephinoo", "count": 1, "languages": 1 }, { "order": 482, - "name": "emiliordev", + "name": "agustinfccll", "count": 1, "languages": 1 }, { "order": 483, - "name": "rafapg93", + "name": "evilpodato04", "count": 1, "languages": 1 }, { "order": 484, - "name": "vickalc", + "name": "anitandil", "count": 1, "languages": 1 }, { "order": 485, - "name": "rusian69", + "name": "miquelrr", "count": 1, "languages": 1 }, { "order": 486, - "name": "jony-english22", + "name": "gabriel-dangelo", "count": 1, "languages": 1 }, { "order": 487, - "name": "nicoloboo02", + "name": "sve-nnn", "count": 1, "languages": 1 }, { "order": 488, - "name": "angeloro", + "name": "emiliordev", "count": 1, "languages": 1 }, { "order": 489, - "name": "righelch", + "name": "rafapg93", "count": 1, "languages": 1 }, { "order": 490, - "name": "deathbat00", + "name": "vickalc", "count": 1, "languages": 1 }, { "order": 491, - "name": "orzefox", + "name": "rusian69", "count": 1, "languages": 1 }, { "order": 492, - "name": "willypaz243", + "name": "jony-english22", "count": 1, "languages": 1 }, { "order": 493, - "name": "c-blskv", + "name": "nicoloboo02", "count": 1, "languages": 1 }, { "order": 494, - "name": "emaerniquez", + "name": "angeloro", "count": 1, "languages": 1 }, { "order": 495, - "name": "leonardo-henao", + "name": "righelch", "count": 1, "languages": 1 }, { "order": 496, - "name": "bryanalzate007", + "name": "deathbat00", "count": 1, "languages": 1 }, { "order": 497, + "name": "orzefox", + "count": 1, + "languages": 1 + }, + { + "order": 498, + "name": "w00k", + "count": 1, + "languages": 1 + }, + { + "order": 499, + "name": "willypaz243", + "count": 1, + "languages": 1 + }, + { + "order": 500, + "name": "c-blskv", + "count": 1, + "languages": 1 + }, + { + "order": 501, + "name": "emaerniquez", + "count": 1, + "languages": 1 + }, + { + "order": 502, + "name": "leonardo-henao", + "count": 1, + "languages": 1 + }, + { + "order": 503, + "name": "bryanalzate007", + "count": 1, + "languages": 1 + }, + { + "order": 504, "name": "juancamilofvx", "count": 1, "languages": 1