From b6f6100f7337988e52a6bd897263e690caa0e732 Mon Sep 17 00:00:00 2001 From: Albert Mantaras <34039293+Mantaras96@users.noreply.github.com> Date: Sat, 24 Aug 2024 20:38:28 +0000 Subject: [PATCH 01/53] Solucion 34 Java --- .../java/Mantaras96.java" | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 "Roadmap/34 - \303\201RBOL GENEAL\303\223GICO LA CASA DEL DRAG\303\223N/java/Mantaras96.java" diff --git "a/Roadmap/34 - \303\201RBOL GENEAL\303\223GICO LA CASA DEL DRAG\303\223N/java/Mantaras96.java" "b/Roadmap/34 - \303\201RBOL GENEAL\303\223GICO LA CASA DEL DRAG\303\223N/java/Mantaras96.java" new file mode 100644 index 0000000000..95d9808817 --- /dev/null +++ "b/Roadmap/34 - \303\201RBOL GENEAL\303\223GICO LA CASA DEL DRAG\303\223N/java/Mantaras96.java" @@ -0,0 +1,110 @@ +package org.example; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public class Mantaras96 { + + public static void main(String[] args) { + + // Crear personas + Person person1 = new Person("Meri"); + Person person2 = new Person("John"); + Person child1 = new Person("Tom"); + Person child2 = new Person("Anna"); + + // Establecer relaciones + person1.setPartner(person2); + + // Añadir hijos + person1.addChild(child1); + person1.addChild(child2); + + // Imprimir la familia de person1 + printFamily(person1); + System.out.println("####################### Persona2 #######################"); + printFamily(person2); + + } + + public static class Person { + + private final String identifier; + private Person partner; + private final String name; + private List children; + + public Person(String name) { + this.identifier = UUID.randomUUID().toString(); + this.name = name; + this.children = new ArrayList(); // Initialize the list + } + + public String getIdentifier() { + return identifier; + } + + public Person getPartner() { + return partner; + } + + public void setPartner(Person partner) { + if (this.partner != partner) { + this.partner = partner; + if (partner != null && partner.getPartner() != this) { + partner.setPartner(this); + } + } + } + + public String getName() { + return name; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + public void addChild(Person child) { + if (!this.children.contains(child)) { + this.children.add(child); + if (this.partner != null && !this.partner.getChildren().contains(child)) { + this.partner.getChildren().add(child); + } + } + } + + @Override + public String toString() { + return "My name is " + this.name; + } + + } + + private static void printFamily(Person persona) { + String info = persona.toString(); + if (persona.getPartner() != null) { + info += " y mi pareja es " + persona.getPartner().getName(); + } else { + info += " y no tengo pareja"; + } + System.out.println(info); + + if (persona.getChildren().size() > 0) { + System.out.println("----------- Hijos ----------"); + for (Person child : persona.getChildren()) { + System.out.println("Soy el hijo de " + persona.getName() + " y mi nombre es " + child.getName()); + printFamily(child); + } + } else { + System.out.println(" No tengo hijos "); + } + } + + +} From 9dfa34093d7fcd0bf3e29257a66d398d44f45a37 Mon Sep 17 00:00:00 2001 From: clotrack Date: Thu, 5 Sep 2024 11:49:35 +0200 Subject: [PATCH 02/53] # 01 - Kotlin --- .../kotlin/Clotrack.kt | 121 ++ e | 1385 +++++++++++++++++ 2 files changed, 1506 insertions(+) create mode 100644 Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/kotlin/Clotrack.kt create mode 100644 e diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/kotlin/Clotrack.kt b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/kotlin/Clotrack.kt new file mode 100644 index 0000000000..fb3e89d3e1 --- /dev/null +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/kotlin/Clotrack.kt @@ -0,0 +1,121 @@ +// 01 OPERADORES Y ESTRUCTURAS DE CONTROL + // EJERCICIO: + /* 01-01 Crea ejemplos utilizando todos los tipos de operadores de tu lenguaje: + * Aritméticos, lógicos, de comparación, asignación, identidad, pertenencia, bits... + * (Ten en cuenta que cada lenguaje puede poseer unos diferentes) + */ + // Inicializo unas variables random para trabajar con ellas, para todos los ejercicios + var myOperator1 = 5 + var myOperator2 = 3 + var myProveOperator = 0 + var i = 0 + var myBooleanTrue = true + var myBooleanFalse = false + var rangeAlfabet = 'a'..'d' + var myCahr = 'b' + + // En kotlin tenemos 5 tipos de operadores aritmeticos [+] [-] [*] [/] [%] a continuacion unos ejemplos variados + myProveOperator = myOperator1 + myOperator2 ++ + println(myProveOperator) + myProveOperator = myOperator1 -- + println(myProveOperator) + println(myOperator1 * 9) + println((myProveOperator * myOperator1) / myOperator2) + if(myProveOperator % 2 == 0) { + println("El numero " + myProveOperator + " es par") + } + // En kotlin tenemos cuatro operadores logicos [|] = OR [&] = AND [.xor()] = XOR y Desigualdad [!] y a continuacion unos ejemplos + println("${myBooleanTrue || myBooleanFalse} \n${myBooleanTrue && myBooleanFalse} \n${myBooleanFalse.xor(myBooleanTrue)} \n${!myBooleanTrue}") + + // En Kotlin tenemos diferentes comparadores [>] mayor [<] menor y [=] que podemos jugar con ellos y mezclarlos con igualdad [>=] + if(myOperator1 > 20){ + println("El numero $myOperator1 es mayor que 20") + } else if(myOperator1 < 20){ + println("El numero $myOperator1 es menor que 20") + } else { + println("El numero $myOperator1 es igual a 20") + } + + // No podemos olvidarnos de los comparadores [==] de igualdad o el de [!=] diferencia + if(myOperator1 == myProveOperator){ + println("Te va a tocar la loteria") + } else if(myOperator1 != myProveOperator){ + println("No hay suerte colega, asi es la vida") + } else { + println("Esto no tendria que pasar colega!") + } + + //Ya por ultimo y para mi sorpresa se pueden utilizar comparaciones como [a..d] o [1..4] + if (myCahr in rangeAlfabet){ // este tipo de comparador [a..d] se debe usar dentro de una variable + println("El caracter $myCahr esta dentro del rango entre a y d") + } else{ + println("El caracter $myCahr esta fuera del rango entre a y d") + } + + if (myOperator2 !in 1..4){ + println("El numero $myOperator2 esta dentro del rango entre 1 y 4") + } else{ + println("El numero $myOperator2 esta fuera de rango entre el 1 y el 4") + } + + /* 01-02 Utilizando las operaciones con operadores que tú quieras, crea ejemplos + * que representen todos los tipos de estructuras de control que existan + * en tu lenguaje: Condicionales, iterativas, excepciones... + */ + // Me cae tanta gracia que dejadme repetir este ejemplo condicional de 'if, else if y else' ;) + if(myOperator1 == myProveOperator){ + println("Te va a tocar la loteria") + } else if(myOperator1 != myProveOperator){ + println("No hay suerte colega, asi es la vida") + } else { + println("Esto no tendria que pasar colega!") + } + + // No es el unico condicional tambien tenemos 'when' es en apariencia identico a un swithc + when (myProveOperator){ + myOperator1 -> println("Los espiritus estan de tu lado hoy") + myOperator2 -> println("Ten cuidado al salir dedida, ponte crema solar o arderas como un misto") + else -> { + println("Ten cuidado esta noche al salir con la luna llena") + } + } + + // Comencemos con los bucles en este caso con el 'while' quiero aclarar un concepto la condicion de cierre del + // bucle es hacer mientras la condicion se cumpla! en el ejemplo mientras myProbeOperator sea menor que 10 + while (myProveOperator < 10){ + println("El valor del operador de prueba es $myProveOperator ") + myProveOperator ++ + } + + //Sigamos con el bucle 'do-while que en este caso si o si almenos una vez debe ejecutarse el do manejar con cuidado! + do{ + println("Numero de veces que declare mi amor y me rompieron el corazon en mil trocitos $myProveOperator") + myProveOperator ++ + } while (myProveOperator < myOperator2) + + // Ya para finalizar el marabilloso y explendido bucle 'for' aclarar que la diferencia esque la condicion de + // cierre de este bucle es hacer asta que se cumpla la condicion! + for (myProveOperator in 5 downTo 1){ + println("Doy vuelta y vueltas sin parar, que mareo! Ya ne se cuanto tiempo llevo aqui!") + } + + // Ahora que tenemos la variable myProbeOperator en 0 y viendo lo extraño que es declarar 'for' en kotlin + // quiero imprimir una tabla de multiplicar del 5 ;) sin operaciones dentro del 'for' directamente en su condicion + // debo aclarar que no he podido crear las tipicas variables dentro del bucle como [i, j o k] sino fuera del bucle :( + for (myProveOperator in 0..50 step 5){ + println("$i x 5 = $myProveOperator") + i ++ + } + // 01-03 Debes hacer print por consola del resultado de todos los ejemplos. + // Todos los ejemplos/resultados anteriores ya han sido impresos por consola anteriormente!! + + /* 01-04 DIFICULTAD EXTRA (opcional): + * Crea un programa que imprima por consola todos los números comprendidos + * entre 10 y 55 (incluidos), pares, y que no son ni el 16 ni múltiplos de 3. + */ + i = 10 + for (i in 10..55) { + if (i % 2 == 0 && i != 16 && i % 3 != 0){ + println(i) + } + } \ No newline at end of file diff --git a/e b/e new file mode 100644 index 0000000000..9bd756e443 --- /dev/null +++ b/e @@ -0,0 +1,1385 @@ +commit db7fa5bc2dc7ba8171068f68cb815c2a332f4723 (HEAD -> main, origin/main, origin/HEAD) +Author: Clotrack +Date: Fri Aug 16 20:48:58 2024 +0200 + + #00 - kotlin + +commit 95993ab6ce339278d700d4e6bf7822a263d6e53d +Merge: 90b74284d 967955942 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Sun Jul 21 08:34:46 2024 -0300 + + Merge pull request #5003 from Nikorasu-d/main + + #29 - Python / #00 - Python + +commit 90b74284da3eee1fcd7d2e097e0c223d8828efb0 +Merge: 5980f2d97 56987945e +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Sun Jul 21 08:33:32 2024 -0300 + + Merge pull request #5002 from Hyromy/main + + #17 - Python + +commit 5980f2d97724cfe23ad046f1065f2f1d5c3707a5 +Merge: 8dbbd6b7f d91cf0576 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Sun Jul 21 08:32:35 2024 -0300 + + Merge pull request #5001 from jrgranadosb/patch-2 + + Create jrgranados.py + +commit d91cf0576920b83e911caf144236620687a5b218 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Sun Jul 21 08:31:52 2024 -0300 + + Rename jrgranados.py to jrgranadosb.py + +commit 8dbbd6b7fcbcd0b411008fcd733b96f12927cf21 +Merge: 8f6f0572c b9f2caef0 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Sun Jul 21 08:30:55 2024 -0300 + + Merge pull request #5013 from Sac-Corts/main + + #23, #24, #25, #26, #27, #28, #29 - Python + +commit 8f6f0572c35e775f12b8b5f775cef75d82044472 +Merge: 6ab30d47f 1962d9be2 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Sun Jul 21 08:30:01 2024 -0300 + + Merge pull request #5000 from santyjL/main + + #26 - python + +commit 6ab30d47f1f1c778c6ff20b4d5d2e8e4852ad995 +Merge: c25c1bf1f 5d099fdd1 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Sun Jul 21 08:28:08 2024 -0300 + + Merge pull request #4999 from RaulDoezon/24-JavaScript + + #24 - JavaScript + +commit c25c1bf1f0ec58f34c18e66f711632337a0320c6 +Merge: 5ca591a68 2dd41f3bc +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Sun Jul 21 08:27:34 2024 -0300 + + Merge pull request #4998 from Rikmij/main + + Roadmap #29 - Python y Kotlin + +commit 5ca591a68eb8c12b91cbed66b84015fda96b5c2f +Merge: 6a605856a 6901ee09b +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Sun Jul 21 08:26:01 2024 -0300 + + Merge pull request #4997 from cyberdidac/main + + #28 - Python + +commit 6a605856a2b97767812b3bdb9a507175fbaced4f (CursoAprendizajeC) +Merge: a9a8bb335 1201a09f8 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Sun Jul 21 00:01:24 2024 -0300 + + Merge pull request #5012 from Magupe09/main + + #00-javascript + +commit 1201a09f87951d43afe376c99e921514323b6b6f +Author: Mauro +Date: Sat Jul 20 20:48:13 2024 -0500 + + #01-javascript + +commit b9f2caef0468a73ee3a3e58dd8a172bc82126102 +Author: Isaac Cortés +Date: Sat Jul 20 19:30:49 2024 -0500 + + #29 - Python + +commit 0d0d296ef6610cf00dec6909a80aec94e06ae76d +Author: Isaac Cortés +Date: Sat Jul 20 19:30:32 2024 -0500 + + #28 - Python + +commit 491281383f117c27d66bc95fe63574129ecd35d2 +Author: Isaac Cortés +Date: Sat Jul 20 19:30:12 2024 -0500 + + #27 - Python + +commit fea8bfc4d4e88833d17434d4cb7771ea0fb23afe +Author: Isaac Cortés +Date: Sat Jul 20 19:29:52 2024 -0500 + + #26 - Python + +commit 733f5359ac3b3639b4125092a0ab4503487a52d1 +Author: Isaac Cortés +Date: Sat Jul 20 19:28:13 2024 -0500 + + #25 - Python + +commit fef17e472f5730429c153a25a2e7e761c942e7dc +Author: Isaac Cortés +Date: Sat Jul 20 19:27:51 2024 -0500 + + #24 - Python + +commit 1c35d7471b831a8209d80da15a1392152167484f +Author: Isaac Cortés +Date: Sat Jul 20 19:27:10 2024 -0500 + + #23 - Python + +commit a9a8bb33582370f0ab54b4aa55754598157567b3 +Author: mouredev +Date: Sun Jul 21 00:15:22 2024 +0000 + + Update stats + +commit 77375a6bbfff29f2b3a99aa1b6198345a1c05842 +Merge: d88f6aed4 398def93b +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Sat Jul 20 20:46:44 2024 -0300 + + Merge pull request #4996 from raulG91/raulG91 + + #28 - python + +commit d88f6aed400e24475e7db6b857f199d4017b6f04 +Merge: 8313509bc abfe3e6af +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Sat Jul 20 20:46:22 2024 -0300 + + Merge pull request #4995 from Vdroiid/main + + 03 - Python + +commit 8313509bcee750197e0acb5ef6156c22b8a05291 +Merge: e550e01c9 1fc6dd2ec +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Sat Jul 20 20:45:21 2024 -0300 + + Merge pull request #4994 from DaniBack95/main + + #01 - JavaScript + +commit e550e01c9b54de3cf244d036115ba407ff9bf523 +Merge: 672a29a67 510be5091 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Sat Jul 20 20:44:43 2024 -0300 + + Merge pull request #4993 from JesusAntonioEEscamilla/JesusAEE + + #29 - JavaScript + +commit 96795594248b5e16636c4c6e830506726407123e +Author: nikorasu-d +Date: Sat Jul 20 16:03:57 2024 -0400 + + #00 - Python + +commit e5b3052f75d2712739def5bd72da14b96840286f +Author: Mauro +Date: Sat Jul 20 09:59:58 2024 -0500 + + #00-javascript + +commit 510be5091048ec61286bcb5218800858d1abe8ab +Merge: 06612409a 672a29a67 +Author: Jesus Antonio Escamilla +Date: Sat Jul 20 02:35:59 2024 -0600 + + Merge branch 'main' of github.com:mouredev/roadmap-retos-programacion; branch 'JesusAEE' of github.com:JesusAntonioEEscamilla/roadmap-retos-programacion into JesusAEE + +commit b1b4833cf1ceb58a4e6468992e625efb6912ed9c +Author: nikorasu-d +Date: Sat Jul 20 00:00:43 2024 -0400 + + #29 - Python + +commit 56987945eb4979ab748bd5c05cf5f1e021ac77a4 +Author: Hyromy +Date: Fri Jul 19 20:35:59 2024 -0600 + + #17 - Python + +commit a700bd6d2d517189843017e9e0ea5186453e3ed8 +Author: jrgranadosb +Date: Fri Jul 19 18:35:18 2024 -0600 + + Create jrgranados.py + +commit 672a29a673de7ece67f251591ba5f8cc7631b2ec +Author: mouredev +Date: Sat Jul 20 00:13:22 2024 +0000 + + Update stats + +commit 122415580fef19d259614ff063d1cae076145c85 +Merge: d9f982c0b 804747918 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:08:50 2024 -0300 + + Merge pull request #4992 from noaregui/01-rama + + #01 - Python + +commit d9f982c0bb5df765a64afe1d6f617837432655c5 +Merge: aca73957c 9f53d5810 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:08:36 2024 -0300 + + Merge pull request #4991 from AbelPerezCollado/main + + #03-Python + +commit aca73957c8a41a7e2bb54e85e6ad7d8f691cae4e +Merge: e9ee20634 be27f3176 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:08:13 2024 -0300 + + Merge pull request #4990 from MiguelAngel861/patch-3 + + #00 - Python + +commit be27f3176d27f640f3402f17565669d991700a92 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:07:56 2024 -0300 + + Rename MiguelAngel861 to MiguelAngel861.py + + Se agrega extensión .py + +commit e9ee2063475f0aa074b10e32fae99b347d648251 +Merge: 3ca9bbbec a74808c49 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:07:15 2024 -0300 + + Merge pull request #4989 from Jairo-Alejandro/main + + #[29] - [Python] + +commit 3ca9bbbeccd121a2178472c78a87851d13fbe2c2 +Merge: 7e64ef3fb 829aab45f +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:07:02 2024 -0300 + + Merge pull request #4988 from hectorio23/hectorio23 + + #28 - C++ + +commit 7e64ef3fb03d637427888382ff078c6216821939 +Merge: f542adcf4 07af635b2 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:06:44 2024 -0300 + + Merge pull request #4987 from neslarra/patch-41 + + Reto# 29 - python + +commit f542adcf474c87d5a7fb07d3a6a17ed8e2136c10 +Merge: 817eec613 ee5e5f636 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:06:33 2024 -0300 + + Merge pull request #4986 from RaulDoezon/23-JavaScript + + #23 - JavaScript + +commit 817eec61315f0db55753fff840a01d68e85489e1 +Merge: 6768894b4 173ac8700 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:06:05 2024 -0300 + + Merge pull request #4985 from Jesusway69/main + + #28 - Java + +commit 1962d9be2cac269bc4e86e1e9eda025290f7df25 +Author: santyjL +Date: Fri Jul 19 18:05:58 2024 -0600 + + #26 - python + +commit 6768894b4f9e9828041a0136098187acc754b38b +Merge: ed3a2d200 2587a0e03 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:05:30 2024 -0300 + + Merge pull request #4984 from eamartin96/main + + #06 - Python + +commit ed3a2d2009b578d27fcc835fa4aef8dcb04d52c7 +Merge: bf15f3bb8 2527f55f1 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:05:16 2024 -0300 + + Merge pull request #4983 from Aldroide/main + + Modificación #28 python y Ejercicios #00, #01, #02 de Go + +commit bf15f3bb82cb8682f25173e952ef4dc46becaebd +Merge: 6d1b4cf16 9296b7c29 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:04:48 2024 -0300 + + Merge pull request #4982 from JosephFaster/solucion-reto-00 + + Solucion reto #00-Python + +commit 6d1b4cf16c67caec42c771a2c268e90e35d87923 +Merge: e28b05297 05d85a0e8 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:04:32 2024 -0300 + + Merge pull request #4981 from jcrodmir/main + + #01 - Java and #02 - Java + +commit e28b05297ed8016065c429b63668263b920196c2 +Merge: 180e17022 bbf0f1eec +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:04:11 2024 -0300 + + Merge pull request #4980 from noaregui/00-rama + + #00-Python + +commit 180e17022a64efaa21412d1ad42ea1feacfc861c +Merge: 8e71772d4 20786e822 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:03:54 2024 -0300 + + Merge pull request #4979 from victormugo/main + + 02 - C# + +commit 8e71772d44fe5b7c79148b9cfd6e525a059153b6 +Merge: 119718601 a34f33e0d +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:03:37 2024 -0300 + + Merge pull request #4978 from hozlucas28/Solution-29-Go + + #29 - Go + +commit 119718601f42fea8a23f8c946ffd461c939f2938 +Merge: f1bc60c3f aadaf3da8 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:03:25 2024 -0300 + + Merge pull request #4977 from hozlucas28/Solution-29-Python + + #29 - Python + +commit f1bc60c3fe645f7d4b3d1ea5f6ca5bb3e7f79a9c +Merge: a5ee6ebd9 e84053d79 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:03:11 2024 -0300 + + Merge pull request #4976 from hozlucas28/Solution-29-TypeScript + + #29 - TypeScript + +commit a5ee6ebd9b880b00d181aed9073f24bbd05ac7b5 +Merge: 966458d44 ba84e30ba +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:03:00 2024 -0300 + + Merge pull request #4975 from avcenal/main + + #28 - Python + +commit 966458d441cf61d21024da69a7c670826bc65d57 +Merge: 4046d4c0d 38f5522ac +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:02:49 2024 -0300 + + Merge pull request #4974 from Kenysdev/29.rs + + #29 - rust + +commit 4046d4c0d8e0ceded4c2b846c708a5c61667bee2 +Merge: e84f81658 f06fcf748 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:02:36 2024 -0300 + + Merge pull request #4973 from jcrobles99/main + + #00 - C# + +commit e84f816582a5988f84c51f8b1c42a86c97abc98c +Merge: 0f5cdd53b 07503a3e7 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:02:20 2024 -0300 + + Merge pull request #4970 from Qv1ko/main + + #00 - Java + +commit 0f5cdd53bef4c1b6db1d164044d052e257ea501f +Merge: b3cef7af0 db3ba95cf +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Fri Jul 19 21:01:58 2024 -0300 + + Merge pull request #4963 from EmmanuelMMontesinos/main + + 22 - Python + +commit ba84e30ba2e8df54726f9a0df2109f96330a439d +Merge: fd75787ce b3cef7af0 +Author: avcenal <134477562+avcenal@users.noreply.github.com> +Date: Sat Jul 20 00:11:28 2024 +0200 + + Merge branch 'mouredev:main' into main + +commit 2dd41f3bcdff505ef48761bc184ed37c335e36d1 +Author: Rick <135878591+Rikmij@users.noreply.github.com> +Date: Fri Jul 19 21:02:29 2024 +0200 + + Road #29 - Python + +commit 5d099fdd172512c5f0501a08474174030aa51fee +Author: Raúl Dóezon +Date: Fri Jul 19 13:01:56 2024 -0600 + + #24 - JavaScript + +commit b2db09b2a62cd8a576d66a0c669aee6c54f292f3 +Author: Rick <135878591+Rikmij@users.noreply.github.com> +Date: Fri Jul 19 21:01:28 2024 +0200 + + Road #29 - Kotlin + +commit 06612409a97a218226bc8c1f1bc55d933137c0e9 +Merge: 6e01b026d b3cef7af0 +Author: Jesus Antonio Escamilla +Date: Fri Jul 19 11:25:47 2024 -0600 + + Merge branch 'main' of github.com:mouredev/roadmap-retos-programacion into JesusAEE + +commit 6901ee09bc25964828e28638b258848d78fc8fd0 +Author: Diego Sánchez Escribano +Date: Fri Jul 19 17:27:57 2024 +0200 + + reto 28 python cyberdidac + +commit 398def93bd5ea77e06c5c04df564062c483470a5 +Author: raulG91 <=> +Date: Fri Jul 19 16:22:49 2024 +0200 + + #28 - python + +commit abfe3e6af6e6083075b1222785dc6b511840b019 +Author: vdroid +Date: Fri Jul 19 07:59:14 2024 -0600 + + 03 - Python + +commit 1fc6dd2eca6bbb08c6b891743c02e9fd69c8c4bf +Author: Daniel Baracaldo <77088158+DaniBack95@users.noreply.github.com> +Date: Fri Jul 19 07:33:07 2024 -0500 + + #01 - JavaScript + +commit b3cef7af055e216345da2dbf53e51fc7c1b0589c +Author: Brais Moure +Date: Fri Jul 19 14:16:47 2024 +0200 + + Cursos de lógica + +commit 05d85a0e8eb65527663f9cc4862e64c2cde38d56 +Author: JoanCharles +Date: Fri Jul 19 14:15:35 2024 +0200 + + #02 - Java + +commit 9f53d5810ee3b9cc042429748c2cd19cb1a89739 +Author: Abel Pérez +Date: Fri Jul 19 13:17:14 2024 +0200 + + #04-Python + +commit e8c7a96844d4ad73ab421768b7c0fcd50deb4650 +Merge: 60153a789 a70f4e4f4 +Author: Abel <95299501+AbelPerezCollado@users.noreply.github.com> +Date: Fri Jul 19 13:16:37 2024 +0200 + + Merge branch 'mouredev:main' into main + +commit a70f4e4f46f1b4f5f5aa27822095a6573e561fb1 +Merge: b8287f577 dd155dbfe +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Fri Jul 19 12:38:15 2024 +0200 + + Merge pull request #4969 from RaulDoezon/22-JavaScript + + #22 - JavaScript + +commit b8287f57740ed2991fe8ab8ea81e310207aac8c0 +Merge: d56cef473 d93c161a7 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Fri Jul 19 12:36:21 2024 +0200 + + Merge pull request #4968 from santyjL/main + + #23 - python + +commit d56cef47300172ac101dd616c08541d45bc8e778 +Merge: 80268a8f7 87a5512d7 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Fri Jul 19 12:24:50 2024 +0200 + + Merge pull request #4967 from chriszaldana/logica_js + + #00 - Javascript + +commit 80268a8f797a76e5dbbebd6523a5bae0ac90b4c4 +Merge: c5d0883f9 43ddf9288 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Fri Jul 19 12:22:37 2024 +0200 + + Merge pull request #4966 from kodenook/develop + + Reto #10 - go + +commit c5d0883f9a2b6c743a356ade016fc842409e62b1 +Merge: fbb22a0ef 2bb74a398 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Fri Jul 19 12:19:40 2024 +0200 + + Merge pull request #4965 from edalmava/pascal + + #06 - Pascal + +commit fbb22a0efe9d0be28cb1567eb8673c0b7216087a +Merge: 72e545c12 1f7c39c41 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Fri Jul 19 12:11:59 2024 +0200 + + Merge pull request #4964 from andresmendozaf/main + + #00 - JAVA + +commit 72e545c12c588e5e1e023096944216f9c2304ac6 +Merge: bb7d89dc8 faaaafff7 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Fri Jul 19 12:09:11 2024 +0200 + + Merge pull request #4960 from edalmava/erlang + + #06 - Erlang + +commit bb7d89dc837f14d1fd0c4b5853bfc551e43d0f2c +Merge: 737f80b71 5cf27027e +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Fri Jul 19 12:07:40 2024 +0200 + + Merge pull request #4955 from Markayala13/patch-2 + + Create Operadores + +commit 5cf27027e77f414ad1ad03e1c0dccff2696d538f +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Fri Jul 19 12:03:56 2024 +0200 + + Rename Markayala13.java to Markayala13.java + +commit 1f8ee0566453b664b04d40e44cb1fb47aa6a0a1d +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Fri Jul 19 12:01:59 2024 +0200 + + Rename Operadores.java to Markayala13.java + +commit b13549cfdd3b1a2f61c22493b4f749e51e708340 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Fri Jul 19 11:59:46 2024 +0200 + + Rename Operadores to Operadores.java + +commit 6e01b026d7338007a0dc449de79dfd909b10fc88 +Merge: b926fb56e 737f80b71 +Author: Jesus Antonio Escamilla +Date: Fri Jul 19 03:31:00 2024 -0600 + + Merge branch 'JesusAEE' of github.com:JesusAntonioEEscamilla/roadmap-retos-programacion; branch 'main' of github.com:mouredev/roadmap-retos-programacion into JesusAEE + +commit b926fb56e9b98dfc3b8ca32c732b16b4c370754b +Author: Jesus Antonio Escamilla +Date: Fri Jul 19 03:29:14 2024 -0600 + + #29 - JavaScript + +commit 804747918f24890d16400aa84514bf2e3241cfc0 +Author: Ainhoa +Date: Fri Jul 19 11:05:51 2024 +0200 + + 01-rama + +commit 60153a7894f8d50174731dfb2f4952c13c56d1db +Author: Abel Pérez +Date: Fri Jul 19 09:07:04 2024 +0200 + + #03-Python + +commit 737f80b710279dc2313a5fc64d96d575d3700197 +Author: mouredev +Date: Fri Jul 19 00:13:53 2024 +0000 + + Update stats + +commit 109fff74b1beda707a9063093b4fc7db2c0da827 +Merge: 09bbf3403 e7133a6e2 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Thu Jul 18 20:44:49 2024 -0300 + + Merge pull request #4959 from Chrisdev00/Chrisdev00-branch + + #29 - python y javascript + +commit 09bbf340393546dec76576459b67ce8e70987bd8 +Merge: e4b5971d6 2302b7977 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Thu Jul 18 20:44:06 2024 -0300 + + Merge pull request #4958 from Rodrigoghr/main + + #00 - Python + +commit e4b5971d61d9224ef05762b6a2a6fda6f628e22f +Merge: 32a8eee0d 10c4eef71 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Thu Jul 18 20:43:26 2024 -0300 + + Merge pull request #4957 from SooHav/main + + "#29 - Python" + +commit 32a8eee0d6e96aae3133cfef2ae866f95d1b1305 +Merge: c20f2a610 e36e4fb51 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Thu Jul 18 20:41:45 2024 -0300 + + Merge pull request #4954 from julian98789/patch-15 + + #11 - java + +commit c20f2a610931881c70287f5c3db1c020c4caad90 +Merge: e8cfc1a44 11a283e72 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Thu Jul 18 20:40:34 2024 -0300 + + Merge pull request #4961 from Kenysdev/27.rs + + #27 - rust -fix + +commit 1309339911fb0f8436a7287a432852ce09c5df4c +Merge: cbb2bd127 e8cfc1a44 +Author: Jesus Antonio Escamilla +Date: Thu Jul 18 16:47:10 2024 -0600 + + Merge branch 'main' of github.com:mouredev/roadmap-retos-programacion into JesusAEE + +commit 7214da979a7385d154e1697d94bcd48f08a02a16 +Author: MiguelAngel861 <97812660+MiguelAngel861@users.noreply.github.com> +Date: Thu Jul 18 16:02:43 2024 -0600 + + #00 - Python + +commit a74808c49eee326c571aad257ab609f46bf8b16a +Author: Alejandro +Date: Thu Jul 18 16:28:05 2024 -0500 + + #[29] - [Python] + +commit 829aab45f2b91c8032dc4f52a872b09a2552e8a0 +Author: Héctor Adán +Date: Thu Jul 18 15:25:03 2024 -0600 + + #28 - C++ + +commit 07503a3e7973acbaea55802aa6ecfada3a7e4bf6 +Author: Qv1ko +Date: Thu Jul 18 23:12:16 2024 +0200 + + #00 - PHP + +commit 07af635b2f58a95b0d976bb08a4efca0a6dc138e +Author: neslarra <31991788+neslarra@users.noreply.github.com> +Date: Thu Jul 18 17:59:54 2024 -0300 + + Reto# 29 - python + +commit ee5e5f6360610c08b9cdcd698d1741ec89393145 +Author: Raúl Dóezon +Date: Thu Jul 18 12:08:32 2024 -0600 + + #23 - JavaScript + +commit d93c161a78d4f7ba232e0c0166d4eb647078c722 +Merge: 125e7107d e8cfc1a44 +Author: Santiago López <68027908+santyjL@users.noreply.github.com> +Date: Thu Jul 18 12:02:20 2024 -0600 + + Merge branch 'mouredev:main' into main + +commit 125e7107db3060b83067de5ebe3b345907ca3212 +Author: santyjL +Date: Thu Jul 18 12:00:12 2024 -0600 + + #25 - python + +commit 173ac8700485dafb6e55678b3a8904b0378c5ee0 +Author: JesusWay69 HP elitebook +Date: Thu Jul 18 19:52:46 2024 +0200 + + #28 - Java + +commit 2587a0e03bb61892907a216cdbe5814f2e02b7e0 +Author: Edgar Martinez +Date: Thu Jul 18 09:06:14 2024 -0600 + + Reto#06 - Python + +commit 2527f55f16aedbeee14b31cdc2c7e5a2fc79958b +Author: Aldroide +Date: Thu Jul 18 07:14:56 2024 -0600 + + Modificación #28 python y Ejercicios #00, #01, #02 de Go + +commit db3ba95cf8cab8ea04f90e4ac1e5aec11defc6d2 +Merge: 258c86ef8 e8cfc1a44 +Author: Emmanuel M Montesinos <97795200+EmmanuelMMontesinos@users.noreply.github.com> +Date: Thu Jul 18 15:10:42 2024 +0200 + + Merge branch 'mouredev:main' into main + +commit 258c86ef8212c4447a82c93fadd4c476f7232dbc +Author: Emmanuel +Date: Thu Jul 18 15:10:06 2024 +0200 + + 23 - Python + +commit 9296b7c292980842b4ad6b27103da9629d9ee197 +Author: JosephFaster +Date: Thu Jul 18 05:20:50 2024 -0600 + + Borre hola mundo + +commit f4ad09bd95036c0133c55c5980a4a14bf69a7089 +Author: JosephFaster +Date: Thu Jul 18 05:16:20 2024 -0600 + + ultimo cambio + +commit c93a736c3cbb3d1095cb377312d219397e531aa0 +Author: JosephFaster +Date: Thu Jul 18 05:13:47 2024 -0600 + + Ya está el primer ejercicio + +commit 6c0718c57816056b7e690226558daf95d88ff78b +Author: JoanCharles +Date: Thu Jul 18 11:56:05 2024 +0200 + + #01 - Java + +commit 1952d82fc03898e3d47679e5bbc9c8a0cba1afed +Author: JoanCharles +Date: Thu Jul 18 11:53:32 2024 +0200 + + #01 - Java + +commit e8cfc1a4436694072af75cdce88f4a70cac0b4c9 +Merge: 279cf546d ff2160f2f +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Thu Jul 18 10:05:34 2024 +0200 + + Merge pull request #4938 from Kenysdev/29.py + + #29 - python + +commit 279cf546dbcfc9ab206583711291cea3411e693a +Merge: 1e368a92c f2c822662 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Thu Jul 18 10:04:11 2024 +0200 + + Merge pull request #4936 from eamartin96/main + + #05 - Python + +commit 1e368a92c309642ae5e80c01a4d9a36a25d3e07a +Merge: 8d6e7e5c6 c747556f6 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Thu Jul 18 10:03:05 2024 +0200 + + Merge pull request #4941 from DaniBack95/main + + #00 - JavaScript + +commit 8d6e7e5c62960fc8c2408f1f0426aae5ee965808 +Merge: af7da7295 afc6ee8f9 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Thu Jul 18 10:02:39 2024 +0200 + + Merge pull request #4943 from Vdroiid/main + + #02 - Python + +commit af7da72953c986aa01fb5d28d7f800592dc0b921 +Merge: ddb9eb923 8bbb719a7 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Thu Jul 18 10:02:20 2024 +0200 + + Merge pull request #4944 from edalmava/javascript + + #06 - Javascript + +commit ddb9eb923e6b00b3501e47704d3923ceabbd40ac +Merge: cdb00c4e5 bcb44f0d8 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Thu Jul 18 10:01:59 2024 +0200 + + Merge pull request #4945 from Trufoplus/Solutions + + #29 - Python + +commit cdb00c4e554c012543c6c24a0210526ea4877359 +Merge: afe34569d 410c48554 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Thu Jul 18 10:01:38 2024 +0200 + + Merge pull request #4948 from SnowAle/main + + #00 - Python + +commit afe34569dbfd9e7c40c8439cf103e2e260f3223f +Merge: 85b820cae a6a85a646 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Thu Jul 18 10:01:13 2024 +0200 + + Merge pull request #4949 from CaveroBrandon/25#Python + + #25 - Python + +commit 85b820caeaed7fc9c13f1cb4425e7c34f87ff4a7 +Merge: 2a7f88c4d 9a59910e7 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Thu Jul 18 09:59:40 2024 +0200 + + Merge pull request #4950 from JesusAntonioEEscamilla/JesusAEE + + #28 - JavaScript "Corrección" + +commit 2a7f88c4ddca5322c1b0de8ab459a5778823a369 +Merge: a78c6296e b12b3aea2 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Thu Jul 18 09:59:21 2024 +0200 + + Merge pull request #4934 from rigo93acosta/main + + #23 - Python + +commit a78c6296eafe0e1f8c9a8a06dcd22710a9950d57 +Merge: 7a548c712 1c09b00a9 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Thu Jul 18 09:58:59 2024 +0200 + + Merge pull request #4933 from facundorsabia/mybranch + + #00 - Python + +commit 7a548c7128a9b3c921e88f805c730405b30b44ab +Merge: 5b84162fd a597e1467 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Thu Jul 18 09:58:24 2024 +0200 + + Merge pull request #4932 from agusrosero/develop + + #26 - Javascript + +commit bbf0f1eecc891cd132c195caaa7a0fcb00d27162 +Author: Ainhoa +Date: Thu Jul 18 09:40:55 2024 +0200 + + 00 - Python + +commit e3a308017a7b43cbe0772a9549bd78153badd793 +Author: Ainhoa +Date: Thu Jul 18 09:29:36 2024 +0200 + + 00 - Python + +commit 20786e822210a93bbf6a81b0f29776de94edfd29 +Author: Victor +Date: Thu Jul 18 08:57:13 2024 +0200 + + 02 - C# + +commit a34f33e0de8a4b80d459ca52ee9d5dfd39a15c8a +Author: hozlucas28 +Date: Thu Jul 18 03:26:03 2024 -0300 + + Solution 29 - Go + +commit aadaf3da8db786450e8b38f891da77b93beb47b2 +Author: hozlucas28 +Date: Thu Jul 18 02:51:20 2024 -0300 + + Solution 29 - Python + +commit e84053d79021a1472753d097951ae5f405581a49 +Author: hozlucas28 +Date: Thu Jul 18 02:19:46 2024 -0300 + + Solution 29 - TypeScript + +commit 5b84162fdb4891cc988da6613debf2ae2bcfb40a +Author: mouredev +Date: Thu Jul 18 00:13:38 2024 +0000 + + Update stats + +commit fd75787ceb3c5c87bd127a2a1ce04f3a0ccd8608 +Author: avcenal <134477562+avcenal@users.noreply.github.com> +Date: Wed Jul 17 23:53:12 2024 +0200 + + #28 - Python + + ejercicio #28 del roadmap 2024 + +commit 38f5522ac31cf10d9389a6473d52f4b7895fd7da +Author: kenysdev +Date: Wed Jul 17 16:01:16 2024 -0500 + + 29-rust-SOLID-ISP + +commit a597e1467fa4afa8c50e29931847242bfc1daf5b +Author: agusrosero +Date: Wed Jul 17 16:59:52 2024 -0300 + + #29 - Python + +commit a503cfe56afed0354266e251f77b2959703f48d0 +Merge: 2b8e25684 929ba3832 +Author: Hernan +Date: Wed Jul 17 16:58:33 2024 -0300 + + Merge branch 'mouredev:main' into develop + +commit f06fcf748ddedf3e8271a981798596b05f1de23c +Merge: 3eafc0649 929ba3832 +Author: Juan Robles +Date: Wed Jul 17 13:25:21 2024 -0600 + + Merge branch 'mouredev:main' into main + +commit 3eafc0649d8f66724e8b37969da75bd3d68b86e5 +Author: Juan Robles +Date: Wed Jul 17 13:17:37 2024 -0600 + + #00-C# + +commit ea7cf3579798652b3e92df3c27b3f2471062710b +Author: Qv1ko +Date: Wed Jul 17 21:06:02 2024 +0200 + + #00 - Java + +commit af49315cc5a704367df0e77020446082af1ab8bf +Author: Juan Robles +Date: Wed Jul 17 13:05:45 2024 -0600 + + Finalizacion + +commit 76aa09c6f10cb780c2a6826c91ec44241786f730 +Author: santyjL +Date: Wed Jul 17 12:50:23 2024 -0600 + + #24 - python + +commit dd155dbfe136e1c7cf12a2b256ec7318c27d7716 +Author: Raúl Dóezon +Date: Wed Jul 17 12:48:34 2024 -0600 + + #22 - JavaScript + +commit ed463d9fdfb6d730acab999b86d84747cdc7ca07 +Author: santyjL +Date: Wed Jul 17 11:57:03 2024 -0600 + + #23 - python + +commit 87a5512d7915f93e3f56868a816cf7335b522e3a +Author: Christian Zaldaña +Date: Wed Jul 17 10:57:03 2024 -0600 + + #00 - Javascript + +commit 43ddf9288450eca90a13e28cdc62ab8cc413ae6a +Author: kodenook +Date: Wed Jul 17 11:46:44 2024 -0400 + + Reto #10 - go + +commit 2bb74a39818ddf7006f74f54debb6a147d9f5943 +Author: edalmava +Date: Wed Jul 17 09:54:57 2024 -0500 + + #06 - Pascal + +commit afc6ee8f9543c4daaae0c03e685847a15d52d7bf +Merge: 2a5a4cc17 929ba3832 +Author: Santos C <156567388+Vdroiid@users.noreply.github.com> +Date: Wed Jul 17 08:50:22 2024 -0600 + + Merge branch 'mouredev:main' into main + +commit 8bbb719a7e4feb8da8912aaef61ba574c864f095 +Merge: c7f7069bb 929ba3832 +Author: edalmava +Date: Wed Jul 17 09:33:26 2024 -0500 + + Merge branch 'mouredev:main' into javascript + +commit f1fce3f7855b0bb02f5881343d71b92820491994 +Merge: c1cf9ba50 929ba3832 +Author: Emmanuel M Montesinos <97795200+EmmanuelMMontesinos@users.noreply.github.com> +Date: Wed Jul 17 15:27:39 2024 +0200 + + Merge branch 'mouredev:main' into main + +commit c1cf9ba50a2360507be5ceca882286462d00825e +Author: Emmanuel +Date: Wed Jul 17 15:26:26 2024 +0200 + + 22 - Python + +commit 1f7c39c41be38cc9935304695bf129304ff0dd99 +Merge: 049b82416 929ba3832 +Author: amendozaf +Date: Wed Jul 17 09:18:01 2024 -0400 + + Merge branch 'main' of https://github.com/andresmendozaf/roadmap-retos-programacion + +commit 049b8241614e03d284ab123e27b01c38210ed678 +Author: amendozaf +Date: Wed Jul 17 09:15:00 2024 -0400 + + #00 - JAVA + +commit cbb2bd127f2269736d8771e6fecc15b798dab082 +Merge: 9a59910e7 929ba3832 +Author: Jesus Antonio Escamilla +Date: Wed Jul 17 03:33:22 2024 -0600 + + Merge branch 'main' of github.com:mouredev/roadmap-retos-programacion into JesusAEE + +commit 929ba38325ba96951f1abc9d7d323066d6cd7db6 +Merge: a667af0ee 518037217 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Wed Jul 17 10:47:46 2024 +0200 + + Merge pull request #4931 from EmmanuelMMontesinos/main + + 18 - Python + +commit a667af0ee605966db34e49f23f7f9790b09e0a8e +Merge: a4facda4e fad7c0ab5 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Wed Jul 17 10:46:35 2024 +0200 + + Merge pull request #4929 from julian98789/patch-13 + + #10 - java + +commit a4facda4e8671b84455ea748fd08eb2e0c81f83e +Merge: 9503fe416 f32df5bba +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Wed Jul 17 10:46:09 2024 +0200 + + Merge pull request #4928 from avcenal/main + + #27 - Python + +commit 9503fe4163431251d10a48c89b55fa3185ad3cd0 +Merge: 99cab58ff 5db7392b5 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Wed Jul 17 10:29:53 2024 +0200 + + Merge pull request #4927 from RaulDoezon/21-JavaScript + + #21 - JavaScript + +commit 99cab58ff07f3e21b17e48efe98e999ff8ee9e96 +Merge: 97a95d217 28de425a7 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Wed Jul 17 10:29:31 2024 +0200 + + Merge pull request #4925 from kodenook/develop + + Reto #9 - go + +commit 97a95d217f576340b8a235ae4ee2ed01967cc7b2 +Merge: 6c1668ee5 fe272cfb9 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Wed Jul 17 10:16:34 2024 +0200 + + Merge pull request #4923 from jcrodmir/main + + #00 - Java + +commit 6c1668ee56ce1c3baf0d1c06a161db8873bca1bc +Merge: ed69ab428 82e81c6f9 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Wed Jul 17 10:14:35 2024 +0200 + + Merge pull request #4921 from RicJDev/main + + #05 - TypeScript + +commit ed69ab428f7caa055f1da5d5f780f53c2c3c28d0 +Merge: a5196d536 3281ef2a5 +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Wed Jul 17 10:10:59 2024 +0200 + + Merge pull request #4920 from VolumiDev/main + + #03 - Javascript + +commit a5196d5362fd7390a296072566d28173d05978fe +Merge: ebe897bc6 a23fdb1bb +Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> +Date: Wed Jul 17 10:10:30 2024 +0200 + + Merge pull request #4919 from AbelPerezCollado/main + + #02-Python + +commit 5180372176e691111c5d93fa8ec6731b488a21d0 +Author: Emmanuel +Date: Wed Jul 17 09:45:51 2024 +0200 + + threading.Thread correcion al ver otros ejercicios + +commit 2bbf933386e1dc69a19a512e6db03470ef7415a0 +Merge: 334412dd6 b296098b6 +Author: Emmanuel +Date: Wed Jul 17 09:37:33 2024 +0200 + + Merge branch 'main' of https://github.com/EmmanuelMMontesinos/roadmap-retos-programacion + +commit 334412dd6bec954a41a79de251dc16c23bb956c3 +Author: Emmanuel +Date: Wed Jul 17 09:37:26 2024 +0200 + + 21 - Python + +commit b296098b6cb99579b12a3a901a80efe524923669 +Merge: 1164e0a14 ebe897bc6 +Author: Emmanuel M Montesinos <97795200+EmmanuelMMontesinos@users.noreply.github.com> +Date: Wed Jul 17 09:37:03 2024 +0200 + + Merge branch 'mouredev:main' into main + +commit a23fdb1bb6a2ee5b2ae20aef372dad6d25a2f379 +Merge: 038a67b5f ebe897bc6 +Author: Abel <95299501+AbelPerezCollado@users.noreply.github.com> +Date: Wed Jul 17 08:36:20 2024 +0200 + + Merge branch 'mouredev:main' into main + +commit 11a283e727da7b6333bf71d0c4ee5818b0e69c8f +Author: kenysdev +Date: Wed Jul 17 01:14:56 2024 -0500 + + fix 27-rust-SOLID-OCP + +commit faaaafff7a7d3765f53e8f1af2fd8802e82f3d7a +Author: edalmava +Date: Tue Jul 16 22:24:17 2024 -0500 + + #06 - Erlang + +commit 6920191a315ae6348782286ccd9ba76e655816a0 +Author: Juan Robles +Date: Tue Jul 16 18:16:15 2024 -0600 + + variables enteras + +commit ebe897bc652de7df9ea629c519dba2054855b728 +Author: mouredev +Date: Wed Jul 17 00:14:00 2024 +0000 + + Update stats + +commit e7133a6e2114a01189fb470710b7acf8362526ee +Author: Chrisdev00 <134344269+Chrisdev00@users.noreply.github.com> +Date: Tue Jul 16 19:59:51 2024 -0400 + + #29 - python y javascript + +commit 2302b79778c3aab736516e18df6d94a4c735dfa6 +Author: = +Date: Tue Jul 16 18:38:31 2024 -0500 + + #00 - Python + +commit 10c4eef71975365729b5d92acea83524859da270 +Author: SooHav +Date: Tue Jul 16 20:37:55 2024 -0300 + + 29 - python + +commit dab162a097398a84a21faf825479c396bc43e4ae +Author: SooHav +Date: Tue Jul 16 20:20:48 2024 -0300 + + 28 - python + +commit ff2160f2f1756fcb2a354de4bc0d8bf3be4f0dd4 +Author: kenysdev +Date: Tue Jul 16 17:56:02 2024 -0500 + + 29-py-SOLID-ISP + +commit 5b55baf46444ee5b10612055a4b4c1f5daa63ca9 +Author: Markayala13 <149205675+Markayala13@users.noreply.github.com> +Date: Tue Jul 16 17:09:26 2024 -0500 + + Create Operadores + +commit e36e4fb51d81f2af01c620f1d33d58a04a27c8e0 +Author: Julian Gomez <132085190+julian98789@users.noreply.github.com> +Date: Tue Jul 16 17:07:22 2024 -0500 + + julian98789.java + +commit 5d9bcbb9d3ed3cbb815022173e373156467a0a31 +Merge: e08435d17 e6cf641d6 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Tue Jul 16 18:34:15 2024 -0300 + + Merge pull request #4952 from ElHacedorDeCosas/ElHacedorDeCosas + + ##01 - GDScript + +commit e08435d177763513ffaccc0c5e7afd07d569e67c +Merge: 9c294fa48 2f37d4596 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Tue Jul 16 18:33:33 2024 -0300 + + Merge pull request #4946 from Kenysdev/29.cs + + #29 - c# + +commit 9c294fa48e58eabc37e794fb80e068d52e33a334 +Merge: 7aa27a6a1 ca94f23a6 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Tue Jul 16 18:33:21 2024 -0300 + + Merge pull request #4947 from ASJordi/main + + #29 - Java + +commit 7aa27a6a12d3297d9d8dd9a22cb189b486caf883 +Merge: 6abfe9018 bbdd1e490 +Author: Bruce <88008233+Roswell468@users.noreply.github.com> +Date: Tue Jul 16 18:33:10 2024 -0300 + + Merge pull request #4951 from Kenysdev/29.vb + + #29 - vb.net + +commit bbdd1e4905352fef0d3f182655d186280fba167f +Author: kenysdev +Date: Tue Jul 16 16:13:35 2024 -0500 + + 29-vb.net-SOLID-ISP + +commit 1164e0a143a88d11eaaec88632626855b66954d1 +Merge: ea75d5268 8104ec022 +Author: Emmanuel +Date: Tue Jul 16 22:51:59 2024 +0200 + + Merge branch 'main' of https://github.com/EmmanuelMMontesinos/roadmap-retos-programacion + +commit ea75d5268692e1564b504080c05a998f886dbb3a +Author: Emmanuel +Date: Tue Jul 16 22:51:55 2024 +0200 + + #20 - Python + +commit 8104ec0226badea453cb27b127e410f763c095a7 +Merge: d6108fb12 6abfe9018 +Author: Emmanuel M Montesinos <97795200+EmmanuelMMontesinos@users.noreply.github.com> +Date: Tue Jul 16 22:50:46 2024 +0200 + + Merge branch 'mouredev:main' into main + +commit e6cf641d65eb8162ec7fce76a451f5b5d215225b +Author: ElHacedorDeCosas +Date: Tue Jul 16 17:47:49 2024 -0300 + + Create ElHacedorDeCosas.gd + +commit 9a59910e7e574863944cb0e895c763c8c1c001e5 +Merge: 46976e0a3 6abfe9018 +Author: Jesus Antonio Escamilla +Date: Tue Jul 16 14:06:34 2024 -0600 + + Merge branch 'main' of github.com:mouredev/roadmap-retos-programacion into JesusAEE + +commit 46976e0a3d8581685ddf15230e3519dbf7ec641a +Author: Jesus Antonio Escamilla +Date: Tue Jul 16 14:04:50 2024 -0600 + + #28 - JavaScript "Corrección" + +commit a6a85a646ed9f8c1e1c13b5198bb3adbd89a3a8e +Author: CaveroBrandon +Date: Tue Jul 16 15:39:44 2024 -0400 + + #25 - Python + +commit 410c48554b5d694d10cd887f78bd6fda499ace3b +Author: SnowAle +Date: Tue Jul 16 18:53:25 2024 +0000 + + SnowAle #00 - Python + +commit 2f37d4596231a5b0521d78536f072ac40b4d9026 +Author: kenysdev +Date: Tue Jul 16 11:43:01 2024 -0500 + + 29-c#-SOLID-ISP + +commit ca94f23a6eb10d75ad88345681c05c097f0de25d +Author: Jordi Ayala +Date: Tue Jul 16 10:20:34 2024 -0600 + + #29 - Java + +commit bcb44f0d850bdebf1dc0583def95a352a2e87f17 +Author: Daniel Galvan +Date: Tue Jul 16 16:28:48 2024 +0100 + + #29 - Python + +commit c7f7069bb2ca8b609dc99da5ee52d37f77fcab75 +Author: edalmava +Date: Tue Jul 16 09:38:03 2024 -0500 + + #06 - Javascript + + \ No newline at end of file From dd7a37dd28c3e6af30497a864f22b6f1efd47154 Mon Sep 17 00:00:00 2001 From: Niko Zen Date: Fri, 6 Sep 2024 06:08:29 -0430 Subject: [PATCH 03/53] #01 - javascript --- .../javascript/duendeintemporal.js | 675 ++++++++++++++++++ 1 file changed, 675 insertions(+) create mode 100644 Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/javascript/duendeintemporal.js diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/javascript/duendeintemporal.js b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/javascript/duendeintemporal.js new file mode 100644 index 0000000000..78aee7cfb0 --- /dev/null +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/javascript/duendeintemporal.js @@ -0,0 +1,675 @@ +/* { RETOS DE PROGRAMACIÓN } #1 OPERADORES Y ESTRUCTURAS DE CONTROL */ +//Note: I use Matt Frisbie book "Professional JavaScript for Web Developers" as a reference to give accurate additional information about the use of some operantors +//I also serch some tips in JavaScript Notes for Professionals from the beautiful people of StackOverflow. You can get it for free in GoalKicker.com + +//short for console.log +let log = console.log.bind(console); + +/* OPERATORS */ +//Unary Operators + + //Unary Plus and Minus +/* When the unary plus is applied to a nonnumeric value, it performs the same conversion as the +Number() casting function: the Boolean values of false and true are converted to 0 and 1, string +values are parsed according to a set of specific rules, and objects have their valueOf() and/or +toString() method called to get a value to convert. */ + + let str1 = "03"; + str1 = +str1; + log(str1) // value becomes numeric 3 + + let str2 = "1.4"; + log(str1 + +str2)// 4.4 + + str2 = +str2; + log(str2) // value becomes numeric 1.4 + + let str3 = "zaz"; + str3 = +str3; + log(str3) // value becomes NaN + + let bool = true; + bool = +bool; + log(bool) // value becomes numeric 1 + + let f_num = 2.8; + f_num = +f_num; + log(f_num) // no change, still 2.8 + + let obj = { + valueOf() { + return -5; + } + }; + obj = +obj; + log(obj) // value becomes numeric -5 + +/* The unary minus operator’s primary use is to negate a numeric value, such as converting 1 into –1. The simple case is illustrated here: */ + + let g_actions=50; + g_actions= -g_actions; + log(g_actions) // value becomes -50 + +/* When used on a numeric value, the unary minus simply negates the value. When used on non numeric values, unary minus applies all of the same rules as unary plus and then negates the result */ + + str1 = -str1; + log(str1) // value becomes numeric -3 + + str2 = -str2; + log(str2) // value becomes numeric -1.4 + + str3 = -str3; + log(str3) // value becomes NaN + + bool = -bool; + log(bool) // value becomes numeric -1 + + f_num = -f_num; + log(f_num) // no change, still -2.8 + + obj = -obj; + log(obj) // value becomes numeric 5 + + + //Increment/Decrement ++ -- + let num1 = 10, num2 = 5, num3, num4; + num3 = num1++; + log(num3); // 10 + log(num1); // 11 + num3 = ++num1; + log(num3); // 12 + log(num1); // 12 + num4 = num2--; + log(num4); // 5 + log(num2); // 4 + num4 = --num2; + log(num4); // 3 + log(num2); // 3 + num4++; + log(num4); // 4 + + + //Bitwise Operators +/* The next set of operators works with numbers at their very base level, with the bits that represent them in memory. +When you apply bitwise operators to numbers in ECMAScript, a conversion takes place behind the scenes: the 64-bit number is converted into a 32-bit number, the operation is performed, and then the 32-bit result is stored back into a 64-bit number. */ + +//Bitwise NOT ~ +//The bitwise NOT is represented by a tilde (~) and simply returns the one’s complement of the number. +let n1 = 25; // binary 00000000000000000000000000011001 +let n2 = ~n1; // binary 11111111111111111111111111100110 +log(n2); // -26 it negates the number and subtracts 1 +//same to say +n2 = -n1 -1; +//but bitwise operation performs faster cause it works at the lowest lavel of numeric representation. + +//Bitwise AND & +//A bitwise AND operation returns 1 if both bits are 1. It returns 0 if any bits are 0. + +let n3 = 25 & 3; +log(n3) /* logs: 1 cause the comparation of both binary codes is : + 25 = 0000 0000 0000 0000 0000 0000 0001 1001 + 3 = 0000 0000 0000 0000 0000 0000 0000 0011 + --------------------------------------------- + AND = 0000 0000 0000 0000 0000 0000 0000 0001 */ + +//Bitwise OR | +//A bitwise OR operation returns 1 if at least one bit is 1. It returns 0 only if both bits are 0. + +n3 = 25 | 3; +log(n3) /* Logs: 27 cause the comparation of both binary codes is : + 25 = 0000 0000 0000 0000 0000 0000 0001 1001 + 3 = 0000 0000 0000 0000 0000 0000 0000 0011 + --------------------------------------------- + OR = 0000 0000 0000 0000 0000 0000 0001 1011 */ + +//Bitwise XOR +//Bitwise XOR is different from bitwise OR in that it returns 1 only when exactly one bit has a value of 1 (if both bits contain 1, it returns 0). + +n3 = 25 ^ 3; +log(n3); /* Logs: 26 cause the comparation of both binary codes is : + 25 = 0000 0000 0000 0000 0000 0000 0001 1001 + 3 = 0000 0000 0000 0000 0000 0000 0000 0011 + --------------------------------------------- + XOR = 0000 0000 0000 0000 0000 0000 0001 1010 */ + +//Left Shift +//The left shift is represented by two less-than signs (<<) and shifts all bits in a number to the left by the number of positions given + +let number = 2; // 10 in binary code +let new_number = number << 6; // 10000000 in binary code wich is decimal 128 +log(new_number)// 128 + +/* |1| |0| |0| |0| |0| |0| |0| |0| +(2^7x1) + (2^6x0) + (2^5x0) + (2^4x0) + (2^3x0) + (2^2x0) + (2^1x0) + (2^0x0) //here ^ is a powder + 128 + 0 + 0 + 0 + 0 + 0 + 0 + 0 = 128 */ + +//Signed Right Shift +//The signed right shift is represented by two greater-than signs (>>) and shifts all bits in a 32-bitnumber to the right while preserving the sign (positive or negative). + +number = 128; // 10000000 in binary code +new_number = number >> 6 // 10 in binary code wich is decimal 2 +log(new_number)// 2 + + +//Unsigned Right Shift +/* The unsigned right shift is represented by three greater-than signs (>>>) and shifts all bits in a 32-bit number to the right. For numbers that are positive, the effect is the same as a signed right shift. For negative numbers unlike signed right shift, the empty bits get filled with zeros regardless of the sign of the number.*/ + +number = -64; // equal to binary 11111111111111111111111111000000 +new_number = number >>> 5; // equal to decimal 134217726 +log(new_number)// 134217726 +/* because the unsigned right shift treats this as a positive number, it considers the value to be +4294967232. When this value is shifted to the right by five bits, it becomes 00000111111111111111 +111111111110, which is 134217726. */ + + +/* Boolean operators */ +//Logical NOT ! +//can be used in any value. This operator always returns a Boolean value, regardless of the data type it’s used on. The logical NOT operator first converts the operand to a Boolean value and then negates it, + +log(!false); // true +log(!"shadow"); // false +log(!0); // true +log(!NaN); // true +log(!""); // true +log(!57344); // false +log(!null) // true +log(!undefined) // true + +//it can be used to transform a value into it's boolean equivalent by using two NOT operators in a row + +let name = 'Angy'; +//name = !!name; +//log(name); // Logs: true + +//Note: see that the first negate the value after covert it, the second just convert it to boolean. + +//Logical ADN && +//it operates over two values and return true if both values are true, false otherwise +log(true && name)// Angy +log(false && 'Angy')// false +log(4 < 5 && 8 >6)// true +/* Logical AND can be used with any type of operand, not just Boolean values. When either operand is +not a primitive Boolean, logical AND does not always return a Boolean value; instead, it does one of the following: +➤➤ If the first operand is an object, then the second operand is always returned. +➤➤ If the second operand is an object, then the object is returned only if the first operand evalu- +ates to true. +➤➤ If both operands are objects, then the second operand is returned. +➤➤ If either operand is null, then null is returned. +➤➤ If either operand is NaN, then NaN is returned. +➤➤ If either operand is undefined, then undefined is returned. */ + + + +//Logical OR || +//it operates over two values and return true if both or one of both values are true, false other wise +let empty = ''; +log(false || empty)// Logs: +log(name || empty)// Angy +log(4 >= 5 || 8 >6)// true + +/* Just like logical AND, if either operand is not a Boolean, logical OR will not always return a Boolean value; instead, it does one of the following: +➤➤ If the first operand is an object, then the first operand is returned. +➤➤ If the first operand evaluates to false, then the second operand is returned. +➤➤ If both operands are objects, then the first operand is returned. +➤➤ If both operands are null, then null is returned. +➤➤ If both operands are NaN, then NaN is returned. +➤➤ If both operands are undefined, then undefined is returned. */ + +//Note: Both AND and OR are short-circuit operants, this means sometimes only the first operator is evaluated + +//Multiplicative Operators +/* There are three multiplicative operators in ECMAScript: multiply, divide, and modulus. These operators work in a manner similar to their counterparts in languages such as Java, C, and Perl, but they also include some automatic type conversions when dealing with nonnumeric values. */ + +//Multiple Operator * +number = 4 * '8'; +log(number)// Logs: 32 cause the above explanation + +//Divide Operator / +number = 10 / 5; +log(number)// Logs: 2 +number = 4 / 40; +log(number)// Logs: 0.1 + +//Modulus (remainder) Operator % +number = 41 % 5; +log(number)// Logs: 1 + +//Exponentiation Operator ** +number = 4 ** 2; +log(number)// Logs: 16 +//same as +log(Math.pow(4,2))// 16 + +//Add Operator + +number = 76 + 78; +log(number)// 154 +log('76' + '78')// 7678 on strings performs as a concatenator + +number = BigInt(767867686876876) + BigInt(6757575755); +log(number)// 767874444452631n + +//Subtract - +number = 48 - 3; +log(number)// 45 + +//Note: These operators has a particulary behavior in some cases when are used with Infinity, 0, NaN or a non numeric values, you should search if you want more information. + + +/* Relatioanl Operators */ +/* The less-than (<), greater-than (>), less-than-or-equal-to (<=), and greater-than-or-equal-to (>=) relational operators perform comparisons between values in the same way that you learned in math class. */ +let computation = 76 < 4; +log(computation)// false +computation = 87 > 32; +log(computation)// true +computation = 43 <= 43; +log(computation)// true +computation = 44 >= 85; +log(computation)// false + +let user ={ + name: 'Clavin & Hobbes' +} + +log(user <= 4)// false + +log("43" < "8")// true +log("43" < 8)// false + +log('DeepState' < 'real people')// true not only cause are more real people, but when we talk about strings the upper characters has lower codes than the regulars ones +console.log('DeepState'.toLowerCase() < 'real people'.toLocaleLowerCase())// true again ... well ummm sometimes we win + +/* As with other operators in ECMAScript, there are some conversions and other oddities that happen +when using different data types. They are as follows: +➤➤ If the operands are numbers, perform a numeric comparison. +➤➤ If the operands are strings, compare the character codes of each corresponding character in +the string. +➤➤ If one operand is a number, convert the other operand to a number and perform a numeric +comparison. +➤➤ If an operand is an object, call valueOf() and use its result to perform the comparison +according to the previous rules. If valueOf() is not available, call toString() and use that +value according to the previous rules. +➤➤ If an operand is a Boolean, convert it to a number and perform the comparison */ + +//Equality operators +//Determining whether two variables are equivalent is one of the most important operations in programming. + +//equal or Equality Operator == +log(2 == '2')// true +//deep comparation, also comapare types. identically equal or Strict Equality Operator === +log(2 === '2')// false +//not-equal or Inequality Operator != +log(2 != '2')// false +//deep comparation, also compare types. identically not-equal or Strict Inequality Operator !== +log(2 !== '2')// true + +/* When performing conversions, the equal and not-equal operators follow these basic rules: +➤➤ If an operand is a Boolean value, convert it into a numeric value before checking for +equality. A value of false converts to 0, whereas a value of true converts to 1. +➤➤ If one operand is a string and the other is a number, attempt to convert the string into a +number before checking for equality. +➤➤ If one of the operands is an object and the other is not, the valueOf() method is called on +the object to retrieve a primitive value to compare according to the previous rules. + +The operators also follow these rules when making comparisons: +➤➤ Values of null and undefined are equal. +➤➤ Values of null and undefined cannot be converted into any other values for +equality checking. +➤➤ If either operand is NaN, the equal operator returns false and the not-equal operator +returns true. Important note: even if both operands are NaN, the equal operator returns +false because, by rule, NaN is not equal to NaN. +➤➤ If both operands are objects, then they are compared to see if they are the same object. If +both operands point to the same object, then the equal operator returns true. Otherwise, +the two are not equal. */ + +log(NaN != NaN)// true +log(true == 1)// true +log(null==undefined)// true +log(null===undefined)// false + +//Conditional Operator (condition)? true : false; +/* This basically allows a conditional assignment to a variable depending on the evaluation of the +boolean_expression. If it’s true, then true_value is assigned to the variable; if it’s false, then +false_value is assigned to the variabl */ + + +let login = (user.name == 'Nixon')? `Succesfull login, Wellcome ${user.name}` : "Sorry we don't have any user with that name"; +log(login)// Sorry we don't have any user with that name + +//Assignment Operators + +let a = 'a'; +a = a + a; +log(a)// aa + +number = 8; + +/* Compound assignment is done with one of the multiplicative, additive, or bitwise–shift operators +followed by an equal sign (=). These assignments are designed as shorthand for such common situa- +tions as: */ + +number *= number; +log(number)// 64 + +number -= 4; +log(number)// 60 + +/* Compound-assignment operators exist for each of the major mathematical operations and a few +others as well. They are as follows: +➤➤ Multiply/assign (*=) +➤➤ Divide/assign (/=) +➤➤ Modulus/assign (%=) +➤➤ Add/assign (+=) +➤➤ Subtract/assign (-=) +➤➤ Left shift/assign (<<=) +➤➤ Signed right shift/assign (>>=) +➤➤ Unsigned right shift/assign (>>>=) +These operators are designed specifically as shorthand ways of achieving operations. They do not +represent any performance improvement. */ + +// Membership Operators +// the in operator +let Crows = { + description: "Mutant fat man lives beyond the margins of the known universe...", + age: 600, +} + +log('description' in Crows)// true +log('location' in Crows)// false + +// instanceof operator + +class User { + constructor(name, age, email) { + this.name = name; + this.age = age; + this.email = email; + } + + greeting() { + return `Hi ${this.name}. Wellcome to Roadmap Exercise #01.`; + } +} + +const niko_zen = new User('Niko', 41, 'duendeintemporal@hotmail.com'); +log(niko_zen.greeting())// 'Hi Niko. Wellcome to Roadmap Exercise #01'; + +log(niko_zen instanceof User) // true +log(niko_zen instanceof Object) // true +log(4 instanceof Number) // false cause 4 is a primitive value +let four = new Number(4) +log( four instanceof Number)// true + +// Type Operators +// we can use instanceof or typeof +log(typeof true)// boolean +log(typeof NaN)// number +log(typeof niko_zen)// object + +//Destructuring Operatorations spread operator ... +// on arrays +let books = ['Dune', 'Shibumi', 'El Maestro de Esgrima', 'El Perfume']; +let books2 = ['Elocuent javascript', 'You Don’t Know JS ES6 Beyond', 'Linux Command Line An Admin Beginners Guide', 'Learn Bash the Hard Way', 'Programming Algorithms', 'MATLAB Notes for Professionals'] +const mix_books = [...books, ...books2]; +const [frank_herbert, trevanian] = books; +log(trevanian)//Logs: Shibumi + +// on objects +const { email } = niko_zen; +log(email)// duendeintemporal@hotmail.com + +const niko_zen_settings ={ + mode: 'dark', + avatar: 'moebius.svg', + interfaz: 'compact', +} + +const niko_zen_data = { ...niko_zen, ...niko_zen_settings }; +log(niko_zen_data)//Logs both objects niko_zen instance and niko_zen_settings + +function showUser({name, age, email}){ + log(`User name: ${name}, age: ${age}, email: ${email}`); +} + +showUser(niko_zen)// Logs: User name: Niko, age: 41, email: duendeintemporal@hotmail.com + +// we can also asign default values in destructuring + +const config = { font: 'monospace' }; +const { font, mode = 'dark' } = config; + +log(font, mode)// monospace dark + +//you can use destructuring for exchange values on two or more variables +let ninja1 = 'Hiroshi'; +let ninja2 = 'Neko'; +let ninja3 = 'Kage'; + +[ninja1, ninja2, ninja3] = [ninja2, ninja3, ninja1]; +log(ninja1)// Neko + +// you can copy objects or arrays without modifing the original +const shinobi = { + skills: ['fast', 'quick', 'precise', 'lethal', 'computational thinking'], + location: 'no found', +} + +const trix = { ...shinobi }; +trix.location = 'Bangkok, Thailand'; + +log(shinobi.location)// no found +log(trix.location)// Bangkok, Thailand + +// you can also use spread operator to pass array elements as arguments in functions or methods +nums = [1,3,4,5,6,] +log(Math.max(...nums))// logs: 6 + +// or to create an array of arguments +const calculateAverage = (...numbers)=> { + const total = numbers.reduce((sum, num) => sum + num, 0); + return total / numbers.length; +} + +// see that when we call the function all the arguments get holded in numbers +const average = calculateAverage(90, 76, 45, 23, 67); +console.log(average); // 60.2 + +// you can also use it to convert a string into an array of its individual characters + +let maximum = 'in a society that has abolish every kind of adventure, the only adventure that remains is abolish the society' + +let maxim_arr = [...maximum]; +log(maxim_arr)// [ "i", "n", " ", "a", " ", "s", "o", "c", "i", "e", … ] + +//Comma Operator +//The comma operator allows execution of more than one operation in a single statement, as illustrated here: + +let number1 = 1, number2 = 2, number3 = 3, number4; +log(number1, number2, number3, number4)// 1 2 3 undefined + +/*Most often, the comma operator is used in the declaration of variables; however, it can also be used to assign values. When used in this way, the comma operator always returns the last item in the +expression, as in the following example: */ +number = (225, 14, 40, 8, 220); // num becomes 220 +log(number)// 220 +/*There aren’t many times when commas are used in this way; however, it is helpful to understand that this behavior exists. */ + +//Flow Control Statements +//the if statement +if(number){ + number+=4; + log(number)// 224 +} + +//the else statement +if(number){ + number+=4; + log(number)// 228 +}else{ + // what ever +} + +//the else if statement +if(number > 300){ + number+=4; + log(number) +}else if(number > 200){ + number+=4; + log(number)// Logs: 232 +} +else{ + //do something +} + +// the do-while statement +/* The do-while statement is a post-test loop, meaning that the escape condition is evaluated only after the code inside the loop has been executed. */ +let count = 0; +do { + log("I'm learning a lot in this roadmap for coders, even with these basic exercises") + count++; +} while (count < 1); + +// the while statement +//while(true){ + //do something + //create an infinite loop cause always evaluate to true +//} + +// the for statement +number = 0; +for(let i = 1; i <= 100; i++){ + number += i; +} +log(number)// Logs: 5050 + +//Nothing can be done with a for loop that can’t be done using a while loop. The for loop simply encapsulates the loop-related code into a single location. + +// the for-in statement +// let us iterate over the properties of object elements +let user2 = { + name: 'Nikita', + age: 32, + location: 'No Found', +} + +for(let data in user2){ + log(data) // logs only the property + log(data, user2[data]) // logs the property and the value + log(data, eval('user2.' + data)) // the same as before +} + +/* Object properties in ECMAScript are unordered, so the order in which property names are returned +in a for-in statement cannot necessarily be predicted. All enumerable properties will be returned +once, but the order may differ across browsers. */ + +// the for-of statement +// is thinked to iterate over array elements +let oddNums = [1,3,5,7,9] + +for(let num of oddNums){ + log(num)// logs each num +} + +/* we can use Object.entries(), Object.keys(), Object.values() to iterate over object f. e. + +Object.entries(user2) result in: + [ + [ "name", "Nikita" ] + [ "age", 32 ] + [ "location", "No Found" ] + ] */ +// so we can just +for(let [key, val] of Object.entries(user2)){ + log(`${key}: ${val}`); +} + +// Label statements +outer_loop:for(let i = 0; i <= 10; i++){ + inner_loop:for(let y = 0; y < 5; y++){ + if((i==2) && (y == 4)) break outer_loop; + if(y==3) break inner_loop; + log('Is there anybody outthere?') + } +} + +// break and continue statements +/* The break and continue statements provide stricter control over the execution of code in a loop. +The break statement exits the loop immediately, forcing execution to continue with the next state- +ment after the loop. The continue statement, on the other hand, exits the loop immediately, but +execution continues from the top of the loop. Here’s an example: */ +number = 0; +while(number < 5){ + if(number == 3) break; + log(number); + number++; +}// Logs: number value three times: 0 1 2 + +number = 0; +while(number < 5){ + if(number == 3){ + number++; + continue; + } + log(number); + number++; +}// Logs: number value four times: 0 1 2 4 + +//The with Statement + +/* The with statement was created as a convenience for times when a single object was being coded to over and over again, as in this example: + +let qs = location.search.substring(1); +let hostName = location.hostname; +let url = location.href; + +Here, the location object is used on every line. This code can be rewritten using the with statement +as follows: + +with(location) { +let qs = search.substring(1); +let hostName = hostname; +let url = href; +} */ + +//example +with(user){ + log(name)// Clavin & Hobbes +// log(age)// thow an error cause age is undefined +} + +//Note: the with statement is generally discouraged in modern JavaScript because it can lead to code that is difficult to read and maintain, and it can also cause performance issues. + +// The Switch Statement + +switch(user.name){ + case 'Nikita': + log('Wellcome agent'); + break; + case 'Calvin &' + 'Hobbes': + log('Bring me some cookies'); + break; + default: + log('Turn off that TV'); //log this cause is missing and space in the second case +} + +//we can also use an expression that evaluates a string concatenation in a case. The ability to have case expressions also allows you to do things like this: +/* +let num = 25; +switch (true) { + case num < 0: + console.log("Less than 0."); + break; + case num >= 0 && num <= 10: + console.log("Between 0 and 10."); + break; + case num > 10 && num <= 20: + console.log("Between 10 and 20."); + break; + default: + console.log("More than 20."); +} */ + +// Extra dificulty: Write a code that prints all the even numbers between 10 and 55 inclusive, and if the number are 2 or 16 dont't print them + +for(let i = 10; i <= 55; i++ ){ + if(i % 3 == 0 || i == 16) continue; + if(i % 2 == 0) log(i); +} \ No newline at end of file From 8eca38bca393c38ccf51bd344d6e4911838a0a66 Mon Sep 17 00:00:00 2001 From: Clotrack Date: Fri, 6 Sep 2024 18:20:28 +0200 Subject: [PATCH 04/53] Delete e --- e | 1385 ------------------------------------------------------------- 1 file changed, 1385 deletions(-) delete mode 100644 e diff --git a/e b/e deleted file mode 100644 index 9bd756e443..0000000000 --- a/e +++ /dev/null @@ -1,1385 +0,0 @@ -commit db7fa5bc2dc7ba8171068f68cb815c2a332f4723 (HEAD -> main, origin/main, origin/HEAD) -Author: Clotrack -Date: Fri Aug 16 20:48:58 2024 +0200 - - #00 - kotlin - -commit 95993ab6ce339278d700d4e6bf7822a263d6e53d -Merge: 90b74284d 967955942 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Sun Jul 21 08:34:46 2024 -0300 - - Merge pull request #5003 from Nikorasu-d/main - - #29 - Python / #00 - Python - -commit 90b74284da3eee1fcd7d2e097e0c223d8828efb0 -Merge: 5980f2d97 56987945e -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Sun Jul 21 08:33:32 2024 -0300 - - Merge pull request #5002 from Hyromy/main - - #17 - Python - -commit 5980f2d97724cfe23ad046f1065f2f1d5c3707a5 -Merge: 8dbbd6b7f d91cf0576 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Sun Jul 21 08:32:35 2024 -0300 - - Merge pull request #5001 from jrgranadosb/patch-2 - - Create jrgranados.py - -commit d91cf0576920b83e911caf144236620687a5b218 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Sun Jul 21 08:31:52 2024 -0300 - - Rename jrgranados.py to jrgranadosb.py - -commit 8dbbd6b7fcbcd0b411008fcd733b96f12927cf21 -Merge: 8f6f0572c b9f2caef0 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Sun Jul 21 08:30:55 2024 -0300 - - Merge pull request #5013 from Sac-Corts/main - - #23, #24, #25, #26, #27, #28, #29 - Python - -commit 8f6f0572c35e775f12b8b5f775cef75d82044472 -Merge: 6ab30d47f 1962d9be2 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Sun Jul 21 08:30:01 2024 -0300 - - Merge pull request #5000 from santyjL/main - - #26 - python - -commit 6ab30d47f1f1c778c6ff20b4d5d2e8e4852ad995 -Merge: c25c1bf1f 5d099fdd1 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Sun Jul 21 08:28:08 2024 -0300 - - Merge pull request #4999 from RaulDoezon/24-JavaScript - - #24 - JavaScript - -commit c25c1bf1f0ec58f34c18e66f711632337a0320c6 -Merge: 5ca591a68 2dd41f3bc -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Sun Jul 21 08:27:34 2024 -0300 - - Merge pull request #4998 from Rikmij/main - - Roadmap #29 - Python y Kotlin - -commit 5ca591a68eb8c12b91cbed66b84015fda96b5c2f -Merge: 6a605856a 6901ee09b -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Sun Jul 21 08:26:01 2024 -0300 - - Merge pull request #4997 from cyberdidac/main - - #28 - Python - -commit 6a605856a2b97767812b3bdb9a507175fbaced4f (CursoAprendizajeC) -Merge: a9a8bb335 1201a09f8 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Sun Jul 21 00:01:24 2024 -0300 - - Merge pull request #5012 from Magupe09/main - - #00-javascript - -commit 1201a09f87951d43afe376c99e921514323b6b6f -Author: Mauro -Date: Sat Jul 20 20:48:13 2024 -0500 - - #01-javascript - -commit b9f2caef0468a73ee3a3e58dd8a172bc82126102 -Author: Isaac Cortés -Date: Sat Jul 20 19:30:49 2024 -0500 - - #29 - Python - -commit 0d0d296ef6610cf00dec6909a80aec94e06ae76d -Author: Isaac Cortés -Date: Sat Jul 20 19:30:32 2024 -0500 - - #28 - Python - -commit 491281383f117c27d66bc95fe63574129ecd35d2 -Author: Isaac Cortés -Date: Sat Jul 20 19:30:12 2024 -0500 - - #27 - Python - -commit fea8bfc4d4e88833d17434d4cb7771ea0fb23afe -Author: Isaac Cortés -Date: Sat Jul 20 19:29:52 2024 -0500 - - #26 - Python - -commit 733f5359ac3b3639b4125092a0ab4503487a52d1 -Author: Isaac Cortés -Date: Sat Jul 20 19:28:13 2024 -0500 - - #25 - Python - -commit fef17e472f5730429c153a25a2e7e761c942e7dc -Author: Isaac Cortés -Date: Sat Jul 20 19:27:51 2024 -0500 - - #24 - Python - -commit 1c35d7471b831a8209d80da15a1392152167484f -Author: Isaac Cortés -Date: Sat Jul 20 19:27:10 2024 -0500 - - #23 - Python - -commit a9a8bb33582370f0ab54b4aa55754598157567b3 -Author: mouredev -Date: Sun Jul 21 00:15:22 2024 +0000 - - Update stats - -commit 77375a6bbfff29f2b3a99aa1b6198345a1c05842 -Merge: d88f6aed4 398def93b -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Sat Jul 20 20:46:44 2024 -0300 - - Merge pull request #4996 from raulG91/raulG91 - - #28 - python - -commit d88f6aed400e24475e7db6b857f199d4017b6f04 -Merge: 8313509bc abfe3e6af -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Sat Jul 20 20:46:22 2024 -0300 - - Merge pull request #4995 from Vdroiid/main - - 03 - Python - -commit 8313509bcee750197e0acb5ef6156c22b8a05291 -Merge: e550e01c9 1fc6dd2ec -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Sat Jul 20 20:45:21 2024 -0300 - - Merge pull request #4994 from DaniBack95/main - - #01 - JavaScript - -commit e550e01c9b54de3cf244d036115ba407ff9bf523 -Merge: 672a29a67 510be5091 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Sat Jul 20 20:44:43 2024 -0300 - - Merge pull request #4993 from JesusAntonioEEscamilla/JesusAEE - - #29 - JavaScript - -commit 96795594248b5e16636c4c6e830506726407123e -Author: nikorasu-d -Date: Sat Jul 20 16:03:57 2024 -0400 - - #00 - Python - -commit e5b3052f75d2712739def5bd72da14b96840286f -Author: Mauro -Date: Sat Jul 20 09:59:58 2024 -0500 - - #00-javascript - -commit 510be5091048ec61286bcb5218800858d1abe8ab -Merge: 06612409a 672a29a67 -Author: Jesus Antonio Escamilla -Date: Sat Jul 20 02:35:59 2024 -0600 - - Merge branch 'main' of github.com:mouredev/roadmap-retos-programacion; branch 'JesusAEE' of github.com:JesusAntonioEEscamilla/roadmap-retos-programacion into JesusAEE - -commit b1b4833cf1ceb58a4e6468992e625efb6912ed9c -Author: nikorasu-d -Date: Sat Jul 20 00:00:43 2024 -0400 - - #29 - Python - -commit 56987945eb4979ab748bd5c05cf5f1e021ac77a4 -Author: Hyromy -Date: Fri Jul 19 20:35:59 2024 -0600 - - #17 - Python - -commit a700bd6d2d517189843017e9e0ea5186453e3ed8 -Author: jrgranadosb -Date: Fri Jul 19 18:35:18 2024 -0600 - - Create jrgranados.py - -commit 672a29a673de7ece67f251591ba5f8cc7631b2ec -Author: mouredev -Date: Sat Jul 20 00:13:22 2024 +0000 - - Update stats - -commit 122415580fef19d259614ff063d1cae076145c85 -Merge: d9f982c0b 804747918 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:08:50 2024 -0300 - - Merge pull request #4992 from noaregui/01-rama - - #01 - Python - -commit d9f982c0bb5df765a64afe1d6f617837432655c5 -Merge: aca73957c 9f53d5810 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:08:36 2024 -0300 - - Merge pull request #4991 from AbelPerezCollado/main - - #03-Python - -commit aca73957c8a41a7e2bb54e85e6ad7d8f691cae4e -Merge: e9ee20634 be27f3176 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:08:13 2024 -0300 - - Merge pull request #4990 from MiguelAngel861/patch-3 - - #00 - Python - -commit be27f3176d27f640f3402f17565669d991700a92 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:07:56 2024 -0300 - - Rename MiguelAngel861 to MiguelAngel861.py - - Se agrega extensión .py - -commit e9ee2063475f0aa074b10e32fae99b347d648251 -Merge: 3ca9bbbec a74808c49 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:07:15 2024 -0300 - - Merge pull request #4989 from Jairo-Alejandro/main - - #[29] - [Python] - -commit 3ca9bbbeccd121a2178472c78a87851d13fbe2c2 -Merge: 7e64ef3fb 829aab45f -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:07:02 2024 -0300 - - Merge pull request #4988 from hectorio23/hectorio23 - - #28 - C++ - -commit 7e64ef3fb03d637427888382ff078c6216821939 -Merge: f542adcf4 07af635b2 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:06:44 2024 -0300 - - Merge pull request #4987 from neslarra/patch-41 - - Reto# 29 - python - -commit f542adcf474c87d5a7fb07d3a6a17ed8e2136c10 -Merge: 817eec613 ee5e5f636 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:06:33 2024 -0300 - - Merge pull request #4986 from RaulDoezon/23-JavaScript - - #23 - JavaScript - -commit 817eec61315f0db55753fff840a01d68e85489e1 -Merge: 6768894b4 173ac8700 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:06:05 2024 -0300 - - Merge pull request #4985 from Jesusway69/main - - #28 - Java - -commit 1962d9be2cac269bc4e86e1e9eda025290f7df25 -Author: santyjL -Date: Fri Jul 19 18:05:58 2024 -0600 - - #26 - python - -commit 6768894b4f9e9828041a0136098187acc754b38b -Merge: ed3a2d200 2587a0e03 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:05:30 2024 -0300 - - Merge pull request #4984 from eamartin96/main - - #06 - Python - -commit ed3a2d2009b578d27fcc835fa4aef8dcb04d52c7 -Merge: bf15f3bb8 2527f55f1 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:05:16 2024 -0300 - - Merge pull request #4983 from Aldroide/main - - Modificación #28 python y Ejercicios #00, #01, #02 de Go - -commit bf15f3bb82cb8682f25173e952ef4dc46becaebd -Merge: 6d1b4cf16 9296b7c29 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:04:48 2024 -0300 - - Merge pull request #4982 from JosephFaster/solucion-reto-00 - - Solucion reto #00-Python - -commit 6d1b4cf16c67caec42c771a2c268e90e35d87923 -Merge: e28b05297 05d85a0e8 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:04:32 2024 -0300 - - Merge pull request #4981 from jcrodmir/main - - #01 - Java and #02 - Java - -commit e28b05297ed8016065c429b63668263b920196c2 -Merge: 180e17022 bbf0f1eec -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:04:11 2024 -0300 - - Merge pull request #4980 from noaregui/00-rama - - #00-Python - -commit 180e17022a64efaa21412d1ad42ea1feacfc861c -Merge: 8e71772d4 20786e822 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:03:54 2024 -0300 - - Merge pull request #4979 from victormugo/main - - 02 - C# - -commit 8e71772d44fe5b7c79148b9cfd6e525a059153b6 -Merge: 119718601 a34f33e0d -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:03:37 2024 -0300 - - Merge pull request #4978 from hozlucas28/Solution-29-Go - - #29 - Go - -commit 119718601f42fea8a23f8c946ffd461c939f2938 -Merge: f1bc60c3f aadaf3da8 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:03:25 2024 -0300 - - Merge pull request #4977 from hozlucas28/Solution-29-Python - - #29 - Python - -commit f1bc60c3fe645f7d4b3d1ea5f6ca5bb3e7f79a9c -Merge: a5ee6ebd9 e84053d79 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:03:11 2024 -0300 - - Merge pull request #4976 from hozlucas28/Solution-29-TypeScript - - #29 - TypeScript - -commit a5ee6ebd9b880b00d181aed9073f24bbd05ac7b5 -Merge: 966458d44 ba84e30ba -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:03:00 2024 -0300 - - Merge pull request #4975 from avcenal/main - - #28 - Python - -commit 966458d441cf61d21024da69a7c670826bc65d57 -Merge: 4046d4c0d 38f5522ac -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:02:49 2024 -0300 - - Merge pull request #4974 from Kenysdev/29.rs - - #29 - rust - -commit 4046d4c0d8e0ceded4c2b846c708a5c61667bee2 -Merge: e84f81658 f06fcf748 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:02:36 2024 -0300 - - Merge pull request #4973 from jcrobles99/main - - #00 - C# - -commit e84f816582a5988f84c51f8b1c42a86c97abc98c -Merge: 0f5cdd53b 07503a3e7 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:02:20 2024 -0300 - - Merge pull request #4970 from Qv1ko/main - - #00 - Java - -commit 0f5cdd53bef4c1b6db1d164044d052e257ea501f -Merge: b3cef7af0 db3ba95cf -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Fri Jul 19 21:01:58 2024 -0300 - - Merge pull request #4963 from EmmanuelMMontesinos/main - - 22 - Python - -commit ba84e30ba2e8df54726f9a0df2109f96330a439d -Merge: fd75787ce b3cef7af0 -Author: avcenal <134477562+avcenal@users.noreply.github.com> -Date: Sat Jul 20 00:11:28 2024 +0200 - - Merge branch 'mouredev:main' into main - -commit 2dd41f3bcdff505ef48761bc184ed37c335e36d1 -Author: Rick <135878591+Rikmij@users.noreply.github.com> -Date: Fri Jul 19 21:02:29 2024 +0200 - - Road #29 - Python - -commit 5d099fdd172512c5f0501a08474174030aa51fee -Author: Raúl Dóezon -Date: Fri Jul 19 13:01:56 2024 -0600 - - #24 - JavaScript - -commit b2db09b2a62cd8a576d66a0c669aee6c54f292f3 -Author: Rick <135878591+Rikmij@users.noreply.github.com> -Date: Fri Jul 19 21:01:28 2024 +0200 - - Road #29 - Kotlin - -commit 06612409a97a218226bc8c1f1bc55d933137c0e9 -Merge: 6e01b026d b3cef7af0 -Author: Jesus Antonio Escamilla -Date: Fri Jul 19 11:25:47 2024 -0600 - - Merge branch 'main' of github.com:mouredev/roadmap-retos-programacion into JesusAEE - -commit 6901ee09bc25964828e28638b258848d78fc8fd0 -Author: Diego Sánchez Escribano -Date: Fri Jul 19 17:27:57 2024 +0200 - - reto 28 python cyberdidac - -commit 398def93bd5ea77e06c5c04df564062c483470a5 -Author: raulG91 <=> -Date: Fri Jul 19 16:22:49 2024 +0200 - - #28 - python - -commit abfe3e6af6e6083075b1222785dc6b511840b019 -Author: vdroid -Date: Fri Jul 19 07:59:14 2024 -0600 - - 03 - Python - -commit 1fc6dd2eca6bbb08c6b891743c02e9fd69c8c4bf -Author: Daniel Baracaldo <77088158+DaniBack95@users.noreply.github.com> -Date: Fri Jul 19 07:33:07 2024 -0500 - - #01 - JavaScript - -commit b3cef7af055e216345da2dbf53e51fc7c1b0589c -Author: Brais Moure -Date: Fri Jul 19 14:16:47 2024 +0200 - - Cursos de lógica - -commit 05d85a0e8eb65527663f9cc4862e64c2cde38d56 -Author: JoanCharles -Date: Fri Jul 19 14:15:35 2024 +0200 - - #02 - Java - -commit 9f53d5810ee3b9cc042429748c2cd19cb1a89739 -Author: Abel Pérez -Date: Fri Jul 19 13:17:14 2024 +0200 - - #04-Python - -commit e8c7a96844d4ad73ab421768b7c0fcd50deb4650 -Merge: 60153a789 a70f4e4f4 -Author: Abel <95299501+AbelPerezCollado@users.noreply.github.com> -Date: Fri Jul 19 13:16:37 2024 +0200 - - Merge branch 'mouredev:main' into main - -commit a70f4e4f46f1b4f5f5aa27822095a6573e561fb1 -Merge: b8287f577 dd155dbfe -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Fri Jul 19 12:38:15 2024 +0200 - - Merge pull request #4969 from RaulDoezon/22-JavaScript - - #22 - JavaScript - -commit b8287f57740ed2991fe8ab8ea81e310207aac8c0 -Merge: d56cef473 d93c161a7 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Fri Jul 19 12:36:21 2024 +0200 - - Merge pull request #4968 from santyjL/main - - #23 - python - -commit d56cef47300172ac101dd616c08541d45bc8e778 -Merge: 80268a8f7 87a5512d7 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Fri Jul 19 12:24:50 2024 +0200 - - Merge pull request #4967 from chriszaldana/logica_js - - #00 - Javascript - -commit 80268a8f797a76e5dbbebd6523a5bae0ac90b4c4 -Merge: c5d0883f9 43ddf9288 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Fri Jul 19 12:22:37 2024 +0200 - - Merge pull request #4966 from kodenook/develop - - Reto #10 - go - -commit c5d0883f9a2b6c743a356ade016fc842409e62b1 -Merge: fbb22a0ef 2bb74a398 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Fri Jul 19 12:19:40 2024 +0200 - - Merge pull request #4965 from edalmava/pascal - - #06 - Pascal - -commit fbb22a0efe9d0be28cb1567eb8673c0b7216087a -Merge: 72e545c12 1f7c39c41 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Fri Jul 19 12:11:59 2024 +0200 - - Merge pull request #4964 from andresmendozaf/main - - #00 - JAVA - -commit 72e545c12c588e5e1e023096944216f9c2304ac6 -Merge: bb7d89dc8 faaaafff7 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Fri Jul 19 12:09:11 2024 +0200 - - Merge pull request #4960 from edalmava/erlang - - #06 - Erlang - -commit bb7d89dc837f14d1fd0c4b5853bfc551e43d0f2c -Merge: 737f80b71 5cf27027e -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Fri Jul 19 12:07:40 2024 +0200 - - Merge pull request #4955 from Markayala13/patch-2 - - Create Operadores - -commit 5cf27027e77f414ad1ad03e1c0dccff2696d538f -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Fri Jul 19 12:03:56 2024 +0200 - - Rename Markayala13.java to Markayala13.java - -commit 1f8ee0566453b664b04d40e44cb1fb47aa6a0a1d -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Fri Jul 19 12:01:59 2024 +0200 - - Rename Operadores.java to Markayala13.java - -commit b13549cfdd3b1a2f61c22493b4f749e51e708340 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Fri Jul 19 11:59:46 2024 +0200 - - Rename Operadores to Operadores.java - -commit 6e01b026d7338007a0dc449de79dfd909b10fc88 -Merge: b926fb56e 737f80b71 -Author: Jesus Antonio Escamilla -Date: Fri Jul 19 03:31:00 2024 -0600 - - Merge branch 'JesusAEE' of github.com:JesusAntonioEEscamilla/roadmap-retos-programacion; branch 'main' of github.com:mouredev/roadmap-retos-programacion into JesusAEE - -commit b926fb56e9b98dfc3b8ca32c732b16b4c370754b -Author: Jesus Antonio Escamilla -Date: Fri Jul 19 03:29:14 2024 -0600 - - #29 - JavaScript - -commit 804747918f24890d16400aa84514bf2e3241cfc0 -Author: Ainhoa -Date: Fri Jul 19 11:05:51 2024 +0200 - - 01-rama - -commit 60153a7894f8d50174731dfb2f4952c13c56d1db -Author: Abel Pérez -Date: Fri Jul 19 09:07:04 2024 +0200 - - #03-Python - -commit 737f80b710279dc2313a5fc64d96d575d3700197 -Author: mouredev -Date: Fri Jul 19 00:13:53 2024 +0000 - - Update stats - -commit 109fff74b1beda707a9063093b4fc7db2c0da827 -Merge: 09bbf3403 e7133a6e2 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Thu Jul 18 20:44:49 2024 -0300 - - Merge pull request #4959 from Chrisdev00/Chrisdev00-branch - - #29 - python y javascript - -commit 09bbf340393546dec76576459b67ce8e70987bd8 -Merge: e4b5971d6 2302b7977 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Thu Jul 18 20:44:06 2024 -0300 - - Merge pull request #4958 from Rodrigoghr/main - - #00 - Python - -commit e4b5971d61d9224ef05762b6a2a6fda6f628e22f -Merge: 32a8eee0d 10c4eef71 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Thu Jul 18 20:43:26 2024 -0300 - - Merge pull request #4957 from SooHav/main - - "#29 - Python" - -commit 32a8eee0d6e96aae3133cfef2ae866f95d1b1305 -Merge: c20f2a610 e36e4fb51 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Thu Jul 18 20:41:45 2024 -0300 - - Merge pull request #4954 from julian98789/patch-15 - - #11 - java - -commit c20f2a610931881c70287f5c3db1c020c4caad90 -Merge: e8cfc1a44 11a283e72 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Thu Jul 18 20:40:34 2024 -0300 - - Merge pull request #4961 from Kenysdev/27.rs - - #27 - rust -fix - -commit 1309339911fb0f8436a7287a432852ce09c5df4c -Merge: cbb2bd127 e8cfc1a44 -Author: Jesus Antonio Escamilla -Date: Thu Jul 18 16:47:10 2024 -0600 - - Merge branch 'main' of github.com:mouredev/roadmap-retos-programacion into JesusAEE - -commit 7214da979a7385d154e1697d94bcd48f08a02a16 -Author: MiguelAngel861 <97812660+MiguelAngel861@users.noreply.github.com> -Date: Thu Jul 18 16:02:43 2024 -0600 - - #00 - Python - -commit a74808c49eee326c571aad257ab609f46bf8b16a -Author: Alejandro -Date: Thu Jul 18 16:28:05 2024 -0500 - - #[29] - [Python] - -commit 829aab45f2b91c8032dc4f52a872b09a2552e8a0 -Author: Héctor Adán -Date: Thu Jul 18 15:25:03 2024 -0600 - - #28 - C++ - -commit 07503a3e7973acbaea55802aa6ecfada3a7e4bf6 -Author: Qv1ko -Date: Thu Jul 18 23:12:16 2024 +0200 - - #00 - PHP - -commit 07af635b2f58a95b0d976bb08a4efca0a6dc138e -Author: neslarra <31991788+neslarra@users.noreply.github.com> -Date: Thu Jul 18 17:59:54 2024 -0300 - - Reto# 29 - python - -commit ee5e5f6360610c08b9cdcd698d1741ec89393145 -Author: Raúl Dóezon -Date: Thu Jul 18 12:08:32 2024 -0600 - - #23 - JavaScript - -commit d93c161a78d4f7ba232e0c0166d4eb647078c722 -Merge: 125e7107d e8cfc1a44 -Author: Santiago López <68027908+santyjL@users.noreply.github.com> -Date: Thu Jul 18 12:02:20 2024 -0600 - - Merge branch 'mouredev:main' into main - -commit 125e7107db3060b83067de5ebe3b345907ca3212 -Author: santyjL -Date: Thu Jul 18 12:00:12 2024 -0600 - - #25 - python - -commit 173ac8700485dafb6e55678b3a8904b0378c5ee0 -Author: JesusWay69 HP elitebook -Date: Thu Jul 18 19:52:46 2024 +0200 - - #28 - Java - -commit 2587a0e03bb61892907a216cdbe5814f2e02b7e0 -Author: Edgar Martinez -Date: Thu Jul 18 09:06:14 2024 -0600 - - Reto#06 - Python - -commit 2527f55f16aedbeee14b31cdc2c7e5a2fc79958b -Author: Aldroide -Date: Thu Jul 18 07:14:56 2024 -0600 - - Modificación #28 python y Ejercicios #00, #01, #02 de Go - -commit db3ba95cf8cab8ea04f90e4ac1e5aec11defc6d2 -Merge: 258c86ef8 e8cfc1a44 -Author: Emmanuel M Montesinos <97795200+EmmanuelMMontesinos@users.noreply.github.com> -Date: Thu Jul 18 15:10:42 2024 +0200 - - Merge branch 'mouredev:main' into main - -commit 258c86ef8212c4447a82c93fadd4c476f7232dbc -Author: Emmanuel -Date: Thu Jul 18 15:10:06 2024 +0200 - - 23 - Python - -commit 9296b7c292980842b4ad6b27103da9629d9ee197 -Author: JosephFaster -Date: Thu Jul 18 05:20:50 2024 -0600 - - Borre hola mundo - -commit f4ad09bd95036c0133c55c5980a4a14bf69a7089 -Author: JosephFaster -Date: Thu Jul 18 05:16:20 2024 -0600 - - ultimo cambio - -commit c93a736c3cbb3d1095cb377312d219397e531aa0 -Author: JosephFaster -Date: Thu Jul 18 05:13:47 2024 -0600 - - Ya está el primer ejercicio - -commit 6c0718c57816056b7e690226558daf95d88ff78b -Author: JoanCharles -Date: Thu Jul 18 11:56:05 2024 +0200 - - #01 - Java - -commit 1952d82fc03898e3d47679e5bbc9c8a0cba1afed -Author: JoanCharles -Date: Thu Jul 18 11:53:32 2024 +0200 - - #01 - Java - -commit e8cfc1a4436694072af75cdce88f4a70cac0b4c9 -Merge: 279cf546d ff2160f2f -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Thu Jul 18 10:05:34 2024 +0200 - - Merge pull request #4938 from Kenysdev/29.py - - #29 - python - -commit 279cf546dbcfc9ab206583711291cea3411e693a -Merge: 1e368a92c f2c822662 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Thu Jul 18 10:04:11 2024 +0200 - - Merge pull request #4936 from eamartin96/main - - #05 - Python - -commit 1e368a92c309642ae5e80c01a4d9a36a25d3e07a -Merge: 8d6e7e5c6 c747556f6 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Thu Jul 18 10:03:05 2024 +0200 - - Merge pull request #4941 from DaniBack95/main - - #00 - JavaScript - -commit 8d6e7e5c62960fc8c2408f1f0426aae5ee965808 -Merge: af7da7295 afc6ee8f9 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Thu Jul 18 10:02:39 2024 +0200 - - Merge pull request #4943 from Vdroiid/main - - #02 - Python - -commit af7da72953c986aa01fb5d28d7f800592dc0b921 -Merge: ddb9eb923 8bbb719a7 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Thu Jul 18 10:02:20 2024 +0200 - - Merge pull request #4944 from edalmava/javascript - - #06 - Javascript - -commit ddb9eb923e6b00b3501e47704d3923ceabbd40ac -Merge: cdb00c4e5 bcb44f0d8 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Thu Jul 18 10:01:59 2024 +0200 - - Merge pull request #4945 from Trufoplus/Solutions - - #29 - Python - -commit cdb00c4e554c012543c6c24a0210526ea4877359 -Merge: afe34569d 410c48554 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Thu Jul 18 10:01:38 2024 +0200 - - Merge pull request #4948 from SnowAle/main - - #00 - Python - -commit afe34569dbfd9e7c40c8439cf103e2e260f3223f -Merge: 85b820cae a6a85a646 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Thu Jul 18 10:01:13 2024 +0200 - - Merge pull request #4949 from CaveroBrandon/25#Python - - #25 - Python - -commit 85b820caeaed7fc9c13f1cb4425e7c34f87ff4a7 -Merge: 2a7f88c4d 9a59910e7 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Thu Jul 18 09:59:40 2024 +0200 - - Merge pull request #4950 from JesusAntonioEEscamilla/JesusAEE - - #28 - JavaScript "Corrección" - -commit 2a7f88c4ddca5322c1b0de8ab459a5778823a369 -Merge: a78c6296e b12b3aea2 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Thu Jul 18 09:59:21 2024 +0200 - - Merge pull request #4934 from rigo93acosta/main - - #23 - Python - -commit a78c6296eafe0e1f8c9a8a06dcd22710a9950d57 -Merge: 7a548c712 1c09b00a9 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Thu Jul 18 09:58:59 2024 +0200 - - Merge pull request #4933 from facundorsabia/mybranch - - #00 - Python - -commit 7a548c7128a9b3c921e88f805c730405b30b44ab -Merge: 5b84162fd a597e1467 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Thu Jul 18 09:58:24 2024 +0200 - - Merge pull request #4932 from agusrosero/develop - - #26 - Javascript - -commit bbf0f1eecc891cd132c195caaa7a0fcb00d27162 -Author: Ainhoa -Date: Thu Jul 18 09:40:55 2024 +0200 - - 00 - Python - -commit e3a308017a7b43cbe0772a9549bd78153badd793 -Author: Ainhoa -Date: Thu Jul 18 09:29:36 2024 +0200 - - 00 - Python - -commit 20786e822210a93bbf6a81b0f29776de94edfd29 -Author: Victor -Date: Thu Jul 18 08:57:13 2024 +0200 - - 02 - C# - -commit a34f33e0de8a4b80d459ca52ee9d5dfd39a15c8a -Author: hozlucas28 -Date: Thu Jul 18 03:26:03 2024 -0300 - - Solution 29 - Go - -commit aadaf3da8db786450e8b38f891da77b93beb47b2 -Author: hozlucas28 -Date: Thu Jul 18 02:51:20 2024 -0300 - - Solution 29 - Python - -commit e84053d79021a1472753d097951ae5f405581a49 -Author: hozlucas28 -Date: Thu Jul 18 02:19:46 2024 -0300 - - Solution 29 - TypeScript - -commit 5b84162fdb4891cc988da6613debf2ae2bcfb40a -Author: mouredev -Date: Thu Jul 18 00:13:38 2024 +0000 - - Update stats - -commit fd75787ceb3c5c87bd127a2a1ce04f3a0ccd8608 -Author: avcenal <134477562+avcenal@users.noreply.github.com> -Date: Wed Jul 17 23:53:12 2024 +0200 - - #28 - Python - - ejercicio #28 del roadmap 2024 - -commit 38f5522ac31cf10d9389a6473d52f4b7895fd7da -Author: kenysdev -Date: Wed Jul 17 16:01:16 2024 -0500 - - 29-rust-SOLID-ISP - -commit a597e1467fa4afa8c50e29931847242bfc1daf5b -Author: agusrosero -Date: Wed Jul 17 16:59:52 2024 -0300 - - #29 - Python - -commit a503cfe56afed0354266e251f77b2959703f48d0 -Merge: 2b8e25684 929ba3832 -Author: Hernan -Date: Wed Jul 17 16:58:33 2024 -0300 - - Merge branch 'mouredev:main' into develop - -commit f06fcf748ddedf3e8271a981798596b05f1de23c -Merge: 3eafc0649 929ba3832 -Author: Juan Robles -Date: Wed Jul 17 13:25:21 2024 -0600 - - Merge branch 'mouredev:main' into main - -commit 3eafc0649d8f66724e8b37969da75bd3d68b86e5 -Author: Juan Robles -Date: Wed Jul 17 13:17:37 2024 -0600 - - #00-C# - -commit ea7cf3579798652b3e92df3c27b3f2471062710b -Author: Qv1ko -Date: Wed Jul 17 21:06:02 2024 +0200 - - #00 - Java - -commit af49315cc5a704367df0e77020446082af1ab8bf -Author: Juan Robles -Date: Wed Jul 17 13:05:45 2024 -0600 - - Finalizacion - -commit 76aa09c6f10cb780c2a6826c91ec44241786f730 -Author: santyjL -Date: Wed Jul 17 12:50:23 2024 -0600 - - #24 - python - -commit dd155dbfe136e1c7cf12a2b256ec7318c27d7716 -Author: Raúl Dóezon -Date: Wed Jul 17 12:48:34 2024 -0600 - - #22 - JavaScript - -commit ed463d9fdfb6d730acab999b86d84747cdc7ca07 -Author: santyjL -Date: Wed Jul 17 11:57:03 2024 -0600 - - #23 - python - -commit 87a5512d7915f93e3f56868a816cf7335b522e3a -Author: Christian Zaldaña -Date: Wed Jul 17 10:57:03 2024 -0600 - - #00 - Javascript - -commit 43ddf9288450eca90a13e28cdc62ab8cc413ae6a -Author: kodenook -Date: Wed Jul 17 11:46:44 2024 -0400 - - Reto #10 - go - -commit 2bb74a39818ddf7006f74f54debb6a147d9f5943 -Author: edalmava -Date: Wed Jul 17 09:54:57 2024 -0500 - - #06 - Pascal - -commit afc6ee8f9543c4daaae0c03e685847a15d52d7bf -Merge: 2a5a4cc17 929ba3832 -Author: Santos C <156567388+Vdroiid@users.noreply.github.com> -Date: Wed Jul 17 08:50:22 2024 -0600 - - Merge branch 'mouredev:main' into main - -commit 8bbb719a7e4feb8da8912aaef61ba574c864f095 -Merge: c7f7069bb 929ba3832 -Author: edalmava -Date: Wed Jul 17 09:33:26 2024 -0500 - - Merge branch 'mouredev:main' into javascript - -commit f1fce3f7855b0bb02f5881343d71b92820491994 -Merge: c1cf9ba50 929ba3832 -Author: Emmanuel M Montesinos <97795200+EmmanuelMMontesinos@users.noreply.github.com> -Date: Wed Jul 17 15:27:39 2024 +0200 - - Merge branch 'mouredev:main' into main - -commit c1cf9ba50a2360507be5ceca882286462d00825e -Author: Emmanuel -Date: Wed Jul 17 15:26:26 2024 +0200 - - 22 - Python - -commit 1f7c39c41be38cc9935304695bf129304ff0dd99 -Merge: 049b82416 929ba3832 -Author: amendozaf -Date: Wed Jul 17 09:18:01 2024 -0400 - - Merge branch 'main' of https://github.com/andresmendozaf/roadmap-retos-programacion - -commit 049b8241614e03d284ab123e27b01c38210ed678 -Author: amendozaf -Date: Wed Jul 17 09:15:00 2024 -0400 - - #00 - JAVA - -commit cbb2bd127f2269736d8771e6fecc15b798dab082 -Merge: 9a59910e7 929ba3832 -Author: Jesus Antonio Escamilla -Date: Wed Jul 17 03:33:22 2024 -0600 - - Merge branch 'main' of github.com:mouredev/roadmap-retos-programacion into JesusAEE - -commit 929ba38325ba96951f1abc9d7d323066d6cd7db6 -Merge: a667af0ee 518037217 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Wed Jul 17 10:47:46 2024 +0200 - - Merge pull request #4931 from EmmanuelMMontesinos/main - - 18 - Python - -commit a667af0ee605966db34e49f23f7f9790b09e0a8e -Merge: a4facda4e fad7c0ab5 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Wed Jul 17 10:46:35 2024 +0200 - - Merge pull request #4929 from julian98789/patch-13 - - #10 - java - -commit a4facda4e8671b84455ea748fd08eb2e0c81f83e -Merge: 9503fe416 f32df5bba -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Wed Jul 17 10:46:09 2024 +0200 - - Merge pull request #4928 from avcenal/main - - #27 - Python - -commit 9503fe4163431251d10a48c89b55fa3185ad3cd0 -Merge: 99cab58ff 5db7392b5 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Wed Jul 17 10:29:53 2024 +0200 - - Merge pull request #4927 from RaulDoezon/21-JavaScript - - #21 - JavaScript - -commit 99cab58ff07f3e21b17e48efe98e999ff8ee9e96 -Merge: 97a95d217 28de425a7 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Wed Jul 17 10:29:31 2024 +0200 - - Merge pull request #4925 from kodenook/develop - - Reto #9 - go - -commit 97a95d217f576340b8a235ae4ee2ed01967cc7b2 -Merge: 6c1668ee5 fe272cfb9 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Wed Jul 17 10:16:34 2024 +0200 - - Merge pull request #4923 from jcrodmir/main - - #00 - Java - -commit 6c1668ee56ce1c3baf0d1c06a161db8873bca1bc -Merge: ed69ab428 82e81c6f9 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Wed Jul 17 10:14:35 2024 +0200 - - Merge pull request #4921 from RicJDev/main - - #05 - TypeScript - -commit ed69ab428f7caa055f1da5d5f780f53c2c3c28d0 -Merge: a5196d536 3281ef2a5 -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Wed Jul 17 10:10:59 2024 +0200 - - Merge pull request #4920 from VolumiDev/main - - #03 - Javascript - -commit a5196d5362fd7390a296072566d28173d05978fe -Merge: ebe897bc6 a23fdb1bb -Author: Raúl Gallego <75795616+kontroldev@users.noreply.github.com> -Date: Wed Jul 17 10:10:30 2024 +0200 - - Merge pull request #4919 from AbelPerezCollado/main - - #02-Python - -commit 5180372176e691111c5d93fa8ec6731b488a21d0 -Author: Emmanuel -Date: Wed Jul 17 09:45:51 2024 +0200 - - threading.Thread correcion al ver otros ejercicios - -commit 2bbf933386e1dc69a19a512e6db03470ef7415a0 -Merge: 334412dd6 b296098b6 -Author: Emmanuel -Date: Wed Jul 17 09:37:33 2024 +0200 - - Merge branch 'main' of https://github.com/EmmanuelMMontesinos/roadmap-retos-programacion - -commit 334412dd6bec954a41a79de251dc16c23bb956c3 -Author: Emmanuel -Date: Wed Jul 17 09:37:26 2024 +0200 - - 21 - Python - -commit b296098b6cb99579b12a3a901a80efe524923669 -Merge: 1164e0a14 ebe897bc6 -Author: Emmanuel M Montesinos <97795200+EmmanuelMMontesinos@users.noreply.github.com> -Date: Wed Jul 17 09:37:03 2024 +0200 - - Merge branch 'mouredev:main' into main - -commit a23fdb1bb6a2ee5b2ae20aef372dad6d25a2f379 -Merge: 038a67b5f ebe897bc6 -Author: Abel <95299501+AbelPerezCollado@users.noreply.github.com> -Date: Wed Jul 17 08:36:20 2024 +0200 - - Merge branch 'mouredev:main' into main - -commit 11a283e727da7b6333bf71d0c4ee5818b0e69c8f -Author: kenysdev -Date: Wed Jul 17 01:14:56 2024 -0500 - - fix 27-rust-SOLID-OCP - -commit faaaafff7a7d3765f53e8f1af2fd8802e82f3d7a -Author: edalmava -Date: Tue Jul 16 22:24:17 2024 -0500 - - #06 - Erlang - -commit 6920191a315ae6348782286ccd9ba76e655816a0 -Author: Juan Robles -Date: Tue Jul 16 18:16:15 2024 -0600 - - variables enteras - -commit ebe897bc652de7df9ea629c519dba2054855b728 -Author: mouredev -Date: Wed Jul 17 00:14:00 2024 +0000 - - Update stats - -commit e7133a6e2114a01189fb470710b7acf8362526ee -Author: Chrisdev00 <134344269+Chrisdev00@users.noreply.github.com> -Date: Tue Jul 16 19:59:51 2024 -0400 - - #29 - python y javascript - -commit 2302b79778c3aab736516e18df6d94a4c735dfa6 -Author: = -Date: Tue Jul 16 18:38:31 2024 -0500 - - #00 - Python - -commit 10c4eef71975365729b5d92acea83524859da270 -Author: SooHav -Date: Tue Jul 16 20:37:55 2024 -0300 - - 29 - python - -commit dab162a097398a84a21faf825479c396bc43e4ae -Author: SooHav -Date: Tue Jul 16 20:20:48 2024 -0300 - - 28 - python - -commit ff2160f2f1756fcb2a354de4bc0d8bf3be4f0dd4 -Author: kenysdev -Date: Tue Jul 16 17:56:02 2024 -0500 - - 29-py-SOLID-ISP - -commit 5b55baf46444ee5b10612055a4b4c1f5daa63ca9 -Author: Markayala13 <149205675+Markayala13@users.noreply.github.com> -Date: Tue Jul 16 17:09:26 2024 -0500 - - Create Operadores - -commit e36e4fb51d81f2af01c620f1d33d58a04a27c8e0 -Author: Julian Gomez <132085190+julian98789@users.noreply.github.com> -Date: Tue Jul 16 17:07:22 2024 -0500 - - julian98789.java - -commit 5d9bcbb9d3ed3cbb815022173e373156467a0a31 -Merge: e08435d17 e6cf641d6 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Tue Jul 16 18:34:15 2024 -0300 - - Merge pull request #4952 from ElHacedorDeCosas/ElHacedorDeCosas - - ##01 - GDScript - -commit e08435d177763513ffaccc0c5e7afd07d569e67c -Merge: 9c294fa48 2f37d4596 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Tue Jul 16 18:33:33 2024 -0300 - - Merge pull request #4946 from Kenysdev/29.cs - - #29 - c# - -commit 9c294fa48e58eabc37e794fb80e068d52e33a334 -Merge: 7aa27a6a1 ca94f23a6 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Tue Jul 16 18:33:21 2024 -0300 - - Merge pull request #4947 from ASJordi/main - - #29 - Java - -commit 7aa27a6a12d3297d9d8dd9a22cb189b486caf883 -Merge: 6abfe9018 bbdd1e490 -Author: Bruce <88008233+Roswell468@users.noreply.github.com> -Date: Tue Jul 16 18:33:10 2024 -0300 - - Merge pull request #4951 from Kenysdev/29.vb - - #29 - vb.net - -commit bbdd1e4905352fef0d3f182655d186280fba167f -Author: kenysdev -Date: Tue Jul 16 16:13:35 2024 -0500 - - 29-vb.net-SOLID-ISP - -commit 1164e0a143a88d11eaaec88632626855b66954d1 -Merge: ea75d5268 8104ec022 -Author: Emmanuel -Date: Tue Jul 16 22:51:59 2024 +0200 - - Merge branch 'main' of https://github.com/EmmanuelMMontesinos/roadmap-retos-programacion - -commit ea75d5268692e1564b504080c05a998f886dbb3a -Author: Emmanuel -Date: Tue Jul 16 22:51:55 2024 +0200 - - #20 - Python - -commit 8104ec0226badea453cb27b127e410f763c095a7 -Merge: d6108fb12 6abfe9018 -Author: Emmanuel M Montesinos <97795200+EmmanuelMMontesinos@users.noreply.github.com> -Date: Tue Jul 16 22:50:46 2024 +0200 - - Merge branch 'mouredev:main' into main - -commit e6cf641d65eb8162ec7fce76a451f5b5d215225b -Author: ElHacedorDeCosas -Date: Tue Jul 16 17:47:49 2024 -0300 - - Create ElHacedorDeCosas.gd - -commit 9a59910e7e574863944cb0e895c763c8c1c001e5 -Merge: 46976e0a3 6abfe9018 -Author: Jesus Antonio Escamilla -Date: Tue Jul 16 14:06:34 2024 -0600 - - Merge branch 'main' of github.com:mouredev/roadmap-retos-programacion into JesusAEE - -commit 46976e0a3d8581685ddf15230e3519dbf7ec641a -Author: Jesus Antonio Escamilla -Date: Tue Jul 16 14:04:50 2024 -0600 - - #28 - JavaScript "Corrección" - -commit a6a85a646ed9f8c1e1c13b5198bb3adbd89a3a8e -Author: CaveroBrandon -Date: Tue Jul 16 15:39:44 2024 -0400 - - #25 - Python - -commit 410c48554b5d694d10cd887f78bd6fda499ace3b -Author: SnowAle -Date: Tue Jul 16 18:53:25 2024 +0000 - - SnowAle #00 - Python - -commit 2f37d4596231a5b0521d78536f072ac40b4d9026 -Author: kenysdev -Date: Tue Jul 16 11:43:01 2024 -0500 - - 29-c#-SOLID-ISP - -commit ca94f23a6eb10d75ad88345681c05c097f0de25d -Author: Jordi Ayala -Date: Tue Jul 16 10:20:34 2024 -0600 - - #29 - Java - -commit bcb44f0d850bdebf1dc0583def95a352a2e87f17 -Author: Daniel Galvan -Date: Tue Jul 16 16:28:48 2024 +0100 - - #29 - Python - -commit c7f7069bb2ca8b609dc99da5ee52d37f77fcab75 -Author: edalmava -Date: Tue Jul 16 09:38:03 2024 -0500 - - #06 - Javascript - - \ No newline at end of file From 1056aa279dc1643544d035bf05a9a46b71655bbc Mon Sep 17 00:00:00 2001 From: Niko Zen Date: Fri, 6 Sep 2024 14:50:32 -0430 Subject: [PATCH 05/53] #01 - javascript --- .../javascript/duendeintemporal.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/javascript/duendeintemporal.js b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/javascript/duendeintemporal.js index 78aee7cfb0..5e4194c903 100644 --- a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/javascript/duendeintemporal.js +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/javascript/duendeintemporal.js @@ -667,7 +667,7 @@ switch (true) { console.log("More than 20."); } */ -// Extra dificulty: Write a code that prints all the even numbers between 10 and 55 inclusive, and if the number are 2 or 16 dont't print them +// Extra dificulty: Create a program that prints the even numbers from 10 to 55 inclusive and avoids printing the numbers if they are equal to 16 or multiples of 3 for(let i = 10; i <= 55; i++ ){ if(i % 3 == 0 || i == 16) continue; From f7fbaf1c43bbfc453947b3fc93ad41dab46c321d Mon Sep 17 00:00:00 2001 From: hozlucas28 Date: Fri, 6 Sep 2024 22:43:09 -0300 Subject: [PATCH 06/53] Solution 36 - Python --- .../python/hozlucas28.py | 227 ++++++++++++++++++ 1 file changed, 227 insertions(+) create mode 100644 Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/hozlucas28.py diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/hozlucas28.py b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/hozlucas28.py new file mode 100644 index 0000000000..23c5a92e82 --- /dev/null +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/hozlucas28.py @@ -0,0 +1,227 @@ +# pylint: disable=missing-module-docstring,missing-class-docstring,missing-function-docstring,redefined-outer-name + +from typing import TypedDict, TypeVar, Literal, Any +from random import choice + + +# ---------------------------------------------------------------------------- # +# TYPES # +# ---------------------------------------------------------------------------- # + +T = TypeVar("T", bound=str) + + +class Question[T](TypedDict): + correct_answer: T + options: list[T] + points: float + question: str + + +QuestionsPerHouse = TypedDict( + "QuestionsPerHouse", + { + "backend": tuple[ + Question[Literal["Java", "JavaScript", "Python", "Ruby"]], + Question[Literal["MySQL", "MongoDB", "PostgreSQL", "SQLite"]], + ], + "data": tuple[ + Question[ + Literal[ + "Data analysis", + "Data visualization", + "Data mining", + "Data modeling", + ] + ], + Question[Literal["Python", "R", "SQL", "Julia"]], + ], + "frontend": tuple[ + Question[Literal["HTML", "CSS", "JavaScript", "Python"]], + Question[Literal["React", "Angular", "Vue", "Ember"]], + ], + "mobile": tuple[ + Question[Literal["iOS", "Android", "React Native", "Flutter"]], + Question[Literal["Swift", "Kotlin", "Java", "Objective-C"]], + ], + }, +) + + +# ---------------------------------------------------------------------------- # +# UTILS # +# ---------------------------------------------------------------------------- # + + +def list_to_long_disjunction(*, _list: list[T]) -> str: + rtn: str = str(object=_list[0]) + + for element in _list[1 : len(_list) - 1]: + rtn += f", {element}" + + if len(_list) > 1: + rtn += f", and {str(object=_list[-1])}" + + return rtn + + +def make_question(question: Question[T]) -> float: + user_answer: str = ( + input( + f"> {question.get('question')} " + f"({list_to_long_disjunction(_list=question.get('options'))}): " + ) + .strip() + .upper() + ) + + uppercased_options: list[str] = [ + str(object=opt).upper() for opt in question.get("options") + ] + + while user_answer not in uppercased_options: + print("\n> Invalid option! Try again...") + + user_answer: str = ( + input( + f"\n> {question.get('question')} " + f"({list_to_long_disjunction(_list=question.get('options'))}): " + ) + .strip() + .upper() + ) + + return ( + question.get("points") + if user_answer == str(object=question.get("correct_answer")).upper() + else 0 + ) + + +# ---------------------------------------------------------------------------- # +# MAIN # +# ---------------------------------------------------------------------------- # + +questions_per_house: QuestionsPerHouse = { + "backend": ( + { + "correct_answer": "JavaScript", + "options": ["Java", "JavaScript", "Python", "Ruby"], + "question": "What is the primary language used in backend development?", + "points": 5, + }, + { + "correct_answer": "PostgreSQL", + "options": ["MySQL", "MongoDB", "PostgreSQL", "SQLite"], + "points": 5, + "question": "Which database is commonly used for storing data in backend applications?", + }, + ), + "data": ( + { + "correct_answer": "Data analysis", + "options": [ + "Data analysis", + "Data visualization", + "Data mining", + "Data modeling", + ], + "points": 5, + "question": "What is the process of analyzing and interpreting data called?", + }, + { + "correct_answer": "Julia", + "options": ["Python", "R", "SQL", "Julia"], + "points": 5, + "question": "Which programming language is commonly used for data analysis?", + }, + ), + "frontend": ( + { + "correct_answer": "JavaScript", + "options": ["HTML", "CSS", "JavaScript", "Python"], + "points": 5, + "question": "What is the primary language used in frontend development?", + }, + { + "correct_answer": "Angular", + "options": ["React", "Angular", "Vue", "Ember"], + "points": 5, + "question": "Which framework is commonly used for building user interfaces?", + }, + ), + "mobile": ( + { + "correct_answer": "Flutter", + "options": ["iOS", "Android", "React Native", "Flutter"], + "points": 5, + "question": "Which platform is commonly used for developing mobile applications?", + }, + { + "correct_answer": "Objective-C", + "options": ["Swift", "Kotlin", "Java", "Objective-C"], + "points": 5, + "question": "What is the primary language used in mobile app development?", + }, + ), +} + +user_name: str = input("> Enter your name: ").strip() + +points: list[list[Any]] = [ + ["backend", 0], + ["data", 0], + ["frontend", 0], + ["mobile", 0], +] + +print() +points[0][1] += make_question(question=questions_per_house.get("backend")[0]) + +print() +points[0][1] += make_question(question=questions_per_house.get("backend")[1]) + +print() +points[1][1] += make_question(question=questions_per_house.get("data")[0]) + +print() +points[1][1] += make_question(question=questions_per_house.get("data")[1]) + +print() +points[2][1] += make_question(question=questions_per_house.get("frontend")[0]) + +print() +points[2][1] += make_question(question=questions_per_house.get("frontend")[1]) + +print() +points[3][1] += make_question(question=questions_per_house.get("mobile")[0]) + +print() +points[3][1] += make_question(question=questions_per_house.get("mobile")[1]) + +max_points: list[list[Any]] = [] + +for [house, housePoints] in points: + if len(max_points) == 0: + max_points.append([house, housePoints]) + continue + + if max_points[0][1] > housePoints: + continue + + if max_points[0][1] == housePoints: + max_points.append([house, housePoints]) + else: + max_points[0] = [house, housePoints] + + +if len(max_points) == 1: + print(f"\n> {user_name} will be part of the {max_points[0][0]} house!") +else: + print(max_points) + rnd_choice: list[Any] = choice(seq=max_points) + + print( + f"\n> The decision has been complicated," + f" but {user_name} will be part of the {rnd_choice[0]} house!" + ) From 13d2b317fa76b533f2b13c9bf504a1aad9d80e32 Mon Sep 17 00:00:00 2001 From: hozlucas28 Date: Sat, 7 Sep 2024 03:55:58 -0300 Subject: [PATCH 07/53] Solution 36 - Go --- .../go/hozlucas28.go | 250 ++++++++++++++++++ 1 file changed, 250 insertions(+) create mode 100644 Roadmap/36 - EL SOMBRERO SELECCIONADOR/go/hozlucas28.go diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/go/hozlucas28.go b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/go/hozlucas28.go new file mode 100644 index 0000000000..29adf378b8 --- /dev/null +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/go/hozlucas28.go @@ -0,0 +1,250 @@ +package main + +import ( + "bufio" + "fmt" + "maps" + rand "math/rand/v2" + "os" + "slices" + "strings" +) + +/* -------------------------------------------------------------------------- */ +/* STRUCTS */ +/* -------------------------------------------------------------------------- */ + +type Question struct { + CorrectAnswer string + Options []string + Points float32 + Question string + _ struct{} +} + +type QuestionsPerHouse struct { + Backend [2]Question + Data [2]Question + Frontend [2]Question + Mobile [2]Question + _ struct{} +} + +/* -------------------------------------------------------------------------- */ +/* UTILS */ +/* -------------------------------------------------------------------------- */ + +func toLongDisjunction[T string](slice []T) string { + var arrayLength int = len(slice) + + if arrayLength == 0 { + panic("slice empty") + } + + var rtn string = string(slice[0]) + + if arrayLength == 1 { + return rtn + } + + for _, element := range slice[1 : arrayLength-1] { + rtn += fmt.Sprintf(", %s", element) + } + + rtn += fmt.Sprintf(", and %s", slice[arrayLength-1]) + + return rtn +} + +func rndChoice[T string](choices []T) T { + var choicesLength int = len(choices) + + if choicesLength == 0 { + panic("slice of choices empty") + } + + if choicesLength == 1 { + return choices[0] + } + + var rndIndex int = rand.IntN(choicesLength - 1) + + return choices[rndIndex] +} + +func makeQuestion[T string](question *Question) float32 { + var reader *bufio.Reader = bufio.NewReader(os.Stdin) + + var questionMsg string = fmt.Sprintf("> %s (%s): ", question.Question, toLongDisjunction(question.Options)) + + fmt.Print(questionMsg) + userAnswer, err := reader.ReadString('\n') + if err == nil { + userAnswer = strings.ToUpper(strings.TrimSpace(userAnswer)) + } + + var exit bool = slices.ContainsFunc(question.Options, func(opt string) bool { + return strings.Compare(userAnswer, strings.ToUpper(opt)) == 0 + }) + + for !exit { + fmt.Printf("\n> Invalid option! Try again...\n\n") + + fmt.Print(questionMsg) + userAnswer, err := reader.ReadString('\n') + if err == nil { + userAnswer = strings.ToUpper(strings.TrimSpace(userAnswer)) + } + + exit = slices.ContainsFunc(question.Options, func(opt string) bool { + return strings.Compare(userAnswer, strings.ToUpper(opt)) == 0 + }) + } + + if strings.Compare(userAnswer, strings.ToUpper(question.CorrectAnswer)) == 0 { + return question.Points + } else { + return 0 + } + +} + +/* -------------------------------------------------------------------------- */ +/* MAIN */ +/* -------------------------------------------------------------------------- */ + +func main() { + var reader *bufio.Reader = bufio.NewReader(os.Stdin) + + var questionsPerHouse QuestionsPerHouse = QuestionsPerHouse{ + Backend: [2]Question{ + { + CorrectAnswer: "JavaScript", + Options: []string{"Java", "JavaScript", "Python", "Ruby"}, + Question: "What is the primary language used in backend development?", + Points: 5, + }, + { + CorrectAnswer: "PostgreSQL", + Options: []string{"MySQL", "MongoDB", "PostgreSQL", "SQLite"}, + Points: 5, + Question: "Which database is commonly used for storing data in backend applications?", + }, + }, + Data: [2]Question{ + { + CorrectAnswer: "Data analysis", + Options: []string{"Data analysis", "Data visualization", "Data mining", "Data modeling"}, + Points: 5, + Question: "What is the process of analyzing and interpreting data called?", + }, + { + CorrectAnswer: "Julia", + Options: []string{"Python", "R", "SQL", "Julia"}, + Points: 5, + Question: "Which programming language is commonly used for data analysis?", + }, + }, + Frontend: [2]Question{ + { + CorrectAnswer: "JavaScript", + Options: []string{"HTML", "CSS", "JavaScript", "Python"}, + Points: 5, + Question: "What is the primary language used in frontend development?", + }, + { + CorrectAnswer: "Angular", + Options: []string{"React", "Angular", "Vue", "Ember"}, + Points: 5, + Question: "Which framework is commonly used for building user interfaces?", + }, + }, + Mobile: [2]Question{ + { + CorrectAnswer: "Flutter", + Options: []string{"iOS", "Android", "React Native", "Flutter"}, + Points: 5, + Question: "Which platform is commonly used for developing mobile applications?", + }, + { + CorrectAnswer: "Objective-C", + Options: []string{"Swift", "Kotlin", "Java", "Objective-C"}, + Points: 5, + Question: "What is the primary language used in mobile app development?", + }, + }, + } + + fmt.Print("> Enter your name: ") + userName, err := reader.ReadString('\n') + if err != nil { + panic(err) + } + userName = strings.TrimSpace(userName) + + var pointsPerHouse map[string]float32 = map[string]float32{ + "backend": 0, + "data": 0, + "frontend": 0, + "mobile": 0, + } + + fmt.Println() + pointsPerHouse["backend"] += makeQuestion(&questionsPerHouse.Backend[0]) + + fmt.Println() + pointsPerHouse["backend"] += makeQuestion(&questionsPerHouse.Backend[1]) + + fmt.Println() + pointsPerHouse["data"] += makeQuestion(&questionsPerHouse.Data[0]) + + fmt.Println() + pointsPerHouse["data"] += makeQuestion(&questionsPerHouse.Data[1]) + + fmt.Println() + pointsPerHouse["frontend"] += makeQuestion(&questionsPerHouse.Frontend[0]) + + fmt.Println() + pointsPerHouse["frontend"] += makeQuestion(&questionsPerHouse.Frontend[1]) + + fmt.Println() + pointsPerHouse["mobile"] += makeQuestion(&questionsPerHouse.Mobile[0]) + + fmt.Println() + pointsPerHouse["mobile"] += makeQuestion(&questionsPerHouse.Mobile[1]) + + var maxPoint float32 = max( + pointsPerHouse["backend"], + pointsPerHouse["data"], + pointsPerHouse["frontend"], + pointsPerHouse["mobile"], + ) + + var maxPoints map[string]float32 = map[string]float32{ + "backend": pointsPerHouse["backend"], + "data": pointsPerHouse["data"], + "frontend": pointsPerHouse["frontend"], + "mobile": pointsPerHouse["mobile"], + } + + maps.DeleteFunc(maxPoints, func(key string, value float32) bool { + return value != maxPoint + }) + + if len(maxPoints) == 1 { + for house := range maxPoints { + fmt.Printf("\n> %s will be part of the %s house!", userName, house) + break + } + return + } + + var houses []string + for house := range maxPoints { + houses = append(houses, house) + } + + var rndHouse string = rndChoice(houses) + + fmt.Printf("\n> The decision has been complicated, but %s will be part of the %s house!", userName, rndHouse) +} From d5daad86e2c05f2ac85ac8e92ffacfb8e679dd43 Mon Sep 17 00:00:00 2001 From: Isaac Morcillo Garcia Date: Sat, 7 Sep 2024 12:20:23 +0200 Subject: [PATCH 08/53] #32 - Javascript --- .../javascript/isaacus98.js | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 Roadmap/32 - BATALLA DEADPOOL Y WOLVERINE/javascript/isaacus98.js diff --git a/Roadmap/32 - BATALLA DEADPOOL Y WOLVERINE/javascript/isaacus98.js b/Roadmap/32 - BATALLA DEADPOOL Y WOLVERINE/javascript/isaacus98.js new file mode 100644 index 0000000000..457f23f44f --- /dev/null +++ b/Roadmap/32 - BATALLA DEADPOOL Y WOLVERINE/javascript/isaacus98.js @@ -0,0 +1,147 @@ +/* + * EJERCICIO: + * ¡Deadpool y Wolverine se enfrentan en una batalla épica! + * Crea un programa que simule la pelea y determine un ganador. + * El programa simula un combate por turnos, donde cada protagonista posee unos + * puntos de vida iniciales, un daño de ataque variable y diferentes cualidades + * de regeneración y evasión de ataques. + * Requisitos: + * 1. El usuario debe determinar la vida inicial de cada protagonista. + * 2. Cada personaje puede impartir un daño aleatorio: + * - Deadpool: Entre 10 y 100. + * - Wolverine: Entre 10 y 120. + * 3. Si el daño es el máximo, el personaje que lo recibe no ataca en el + * siguiente turno, ya que tiene que regenerarse (pero no aumenta vida). + * 4. Cada personaje puede evitar el ataque contrario: + * - Deadpool: 25% de posibilidades. + * - Wolverine: 20% de posibilidades. + * 5. Un personaje pierde si sus puntos de vida llegan a cero o menos. + * Acciones: + * 1. Simula una batalla. + * 2. Muestra el número del turno (pausa de 1 segundo entre turnos). + * 3. Muestra qué pasa en cada turno. + * 4. Muestra la vida en cada turno. + * 5. Muestra el resultado final. + */ + +class Character { + constructor(name, health, minDamage, maxDamage, evasion) { + this.name = name + this.health = health + this.minDamage = minDamage + this.maxDamage = maxDamage + this.evasion = evasion + } + + // Devuelve el numero de daño generado + attack() { + return Math.floor(Math.random() * this.maxDamage) + this.minDamage + } + + // Devuelve true si esquiva el ataque, false si no lo esquiva y le resta puntos de vida + dodge(damage) { + let isEvasion = Math.floor(Math.random() * 100) + 1 + + // Ha evadido el ataque + if (isEvasion <= this.evasion) { + return true + } else { + if ((this.health - damage) < 0) { + this.health = 0 + } else { + this.health -= damage + } + + return false + } + } +} + +const rl = require('readline-sync'); + +// Pide los puntos de vida que tendra Deadpool +let health = rl.question("Inserte la cantidad de vida que tendra Deadpool? ") +let deadpool = new Character("Deadpool", parseInt(health), 10, 100, 25) + +// Pide los puntos de vida que tendra Wolverine +health = rl.question("Inserte la cantidad de vida que tendra Wolverine? ") +let wolverine = new Character("Wolverine", parseInt(health), 10, 120, 20) + +console.log("Estadisticas Deadpool") +console.table(deadpool) + +console.log("Estadisticas Wolverine") +console.table(wolverine) + +battle() + +async function battle() { + let alternate = true + let evasion = false + let damage = 0 + let wolverineInitialHealth = wolverine.health + let deadpoolInitialHealth = deadpool.health + + do { + + // Deadpool + if (alternate) { + console.log("Turno de Deadpool") + + // Realizar ataque + damage = deadpool.attack() + console.log(`Deadpool hace un ataque de ${damage} puntos de daño`) + + // Evasión + evasion = wolverine.dodge(damage) + if (evasion) { + console.log("Wolverine ha esquivado el ataque") + } else { + console.log(`Wolverine a recibido un ataque de ${damage} puntos de daño`) + } + + // Comprovar si el turno canvia + if (damage == deadpool.maxDamage & !evasion) { + console.log("Wolverine entra en modo de regeneración") + alternate = true + } else { + alternate = false + } + } else { // Wolverine + console.log("Turno de Wolverine") + + // Realizar ataque + damage = wolverine.attack() + console.log(`Wolverine hace un ataque de ${damage} puntos de daño`) + + // Evasión + evasion = deadpool.dodge(damage) + if (evasion) { + console.log("Deadpool ha esquivado el ataque") + } else { + console.log(`Deadpool a recibido un ataque de ${damage} puntos de daño`) + } + + // Comprovar si el turno canvia + if (damage == wolverine.maxDamage & !evasion) { + console.log("Deadpool entra en modo de regeneración") + alternate = false + } else { + alternate = true + } + } + + // Mostrar vida de los personajes a final de turno + console.log(`Deadpool: ${deadpool.health}/${deadpoolInitialHealth}`) + console.log(`Wolverine: ${wolverine.health}/${wolverineInitialHealth}`) + + // Pausa de 1 segundo + await new Promise(r => setTimeout(r, 1000)); + } while(deadpool.health > 0 & wolverine.health > 0) + + if (deadpool.health == 0) { + console.log("Wolverine ha ganado la pelea") + } else { + console.log("Deadpool ha ganado la pelea") + } +} \ No newline at end of file From deaddf0ed9a5e98c191ffe2b0dc118a6f26bbea6 Mon Sep 17 00:00:00 2001 From: jandortiz Date: Sat, 7 Sep 2024 14:10:13 +0200 Subject: [PATCH 09/53] #00 - Python --- .../python/jandortiz.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jandortiz.py diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jandortiz.py b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jandortiz.py new file mode 100644 index 0000000000..c2ffe8b5d2 --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jandortiz.py @@ -0,0 +1,23 @@ +# Parte 1. +# https://www.python.org/ + +# Parte 2. +# Esto es un primer comentario. + +""" +Otra forma de realizar +comentarios de varias líneas. +""" + +# Parte 3. +mi_primera_variable = 3 +HORAS_DIA = 24 + +# Parte 4. +numero_entero = 54 +numero_decimal = 43.2 +cadena_texto = "Hola mundo" +variable_booleana = True +variable_none = None + +print("¡Hola, Python!") \ No newline at end of file From a523f2ce129372ac6022d35bdf61226ac08a4f04 Mon Sep 17 00:00:00 2001 From: riacosta Date: Sat, 7 Sep 2024 10:54:05 -0300 Subject: [PATCH 10/53] Init Reto --- .../python/rigo93acosta.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Roadmap/35 - REPARTIENDO LOS ANILLOS DE PODER/python/rigo93acosta.py diff --git a/Roadmap/35 - REPARTIENDO LOS ANILLOS DE PODER/python/rigo93acosta.py b/Roadmap/35 - REPARTIENDO LOS ANILLOS DE PODER/python/rigo93acosta.py new file mode 100644 index 0000000000..0391bcd585 --- /dev/null +++ b/Roadmap/35 - REPARTIENDO LOS ANILLOS DE PODER/python/rigo93acosta.py @@ -0,0 +1,19 @@ +''' +/* + * EJERCICIO: + * ¡La temporada 2 de "Los Anillos de Poder" está a punto de estrenarse! + * ¿Qué pasaría si tuvieras que encargarte de repartir los anillos + * entre las razas de la Tierra Media? + * Desarrolla un programa que se encargue de distribuirlos. + * Requisitos: + * 1. Los Elfos recibirán un número impar. + * 2. Los Enanos un número primo. + * 3. Los Hombres un número par. + * 4. Sauron siempre uno. + * Acciones: + * 1. Crea un programa que reciba el número total de anillos + * y busque una posible combinación para repartirlos. + * 2. Muestra el reparto final o el error al realizarlo. + */ +''' + From 0b98cfd35daa1873ae3f999daedaeee146e73222 Mon Sep 17 00:00:00 2001 From: riacosta Date: Sat, 7 Sep 2024 11:17:18 -0300 Subject: [PATCH 11/53] First Part --- .../python/rigo93acosta.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/Roadmap/35 - REPARTIENDO LOS ANILLOS DE PODER/python/rigo93acosta.py b/Roadmap/35 - REPARTIENDO LOS ANILLOS DE PODER/python/rigo93acosta.py index 0391bcd585..9640decd55 100644 --- a/Roadmap/35 - REPARTIENDO LOS ANILLOS DE PODER/python/rigo93acosta.py +++ b/Roadmap/35 - REPARTIENDO LOS ANILLOS DE PODER/python/rigo93acosta.py @@ -17,3 +17,51 @@ */ ''' +def is_prime(number: int) -> bool: + if number < 2: + return False + for i in range(2, int((number ** 0.5)+1)): + if number % i == 0: + return False + return True + + +def distribute_rings(total_rings: int): + + sauron = 1 + total_rings -= sauron + + for men in range(2, total_rings, 2): + for elves in range(1, total_rings, 2): + + dwarves = total_rings - elves - men + + if dwarves > 0 and is_prime(dwarves): + return { + "Hombres": men, + "Elfos": elves, + "Enanos": dwarves, + "Sauron": sauron + } + + return "Error: No es posible repartir los anillos." + + + +if __name__ == '__main__': + + try: + total_rings = int( + input('Introduce el número de anillos a repartir: ') + ) + + distributed_rings = distribute_rings(total_rings) + + if isinstance(distributed_rings, dict): + print("Posibles distribuciones de los anillos de poder:\n") + print(distributed_rings) + + else: + print(distributed_rings) + except ValueError: + print('Error, el número debe ser un entero.') From 65c1cd8e97c8511f8abf42644cc439bef1388322 Mon Sep 17 00:00:00 2001 From: riacosta Date: Sat, 7 Sep 2024 12:04:05 -0300 Subject: [PATCH 12/53] End_Reto --- .../python/rigo93acosta.py | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Roadmap/35 - REPARTIENDO LOS ANILLOS DE PODER/python/rigo93acosta.py b/Roadmap/35 - REPARTIENDO LOS ANILLOS DE PODER/python/rigo93acosta.py index 9640decd55..8112901480 100644 --- a/Roadmap/35 - REPARTIENDO LOS ANILLOS DE PODER/python/rigo93acosta.py +++ b/Roadmap/35 - REPARTIENDO LOS ANILLOS DE PODER/python/rigo93acosta.py @@ -26,8 +26,11 @@ def is_prime(number: int) -> bool: return True + def distribute_rings(total_rings: int): + distributed_rings = [] + sauron = 1 total_rings -= sauron @@ -37,17 +40,18 @@ def distribute_rings(total_rings: int): dwarves = total_rings - elves - men if dwarves > 0 and is_prime(dwarves): - return { + + distributed_rings.append({ "Hombres": men, "Elfos": elves, "Enanos": dwarves, "Sauron": sauron - } + }) + if distributed_rings: + return distributed_rings return "Error: No es posible repartir los anillos." - - if __name__ == '__main__': try: @@ -57,10 +61,12 @@ def distribute_rings(total_rings: int): distributed_rings = distribute_rings(total_rings) - if isinstance(distributed_rings, dict): + if isinstance(distributed_rings, list): print("Posibles distribuciones de los anillos de poder:\n") - print(distributed_rings) - + for distribution in enumerate(distributed_rings): + print(f"{distribution[0] + 1}. {distribution[1]}") + + print(f"\nDistribución media: {distributed_rings[int(len(distributed_rings) / 2)]}") else: print(distributed_rings) except ValueError: From f7d8c179ccf1ce195c2c38d78b5c66c1d33af82a Mon Sep 17 00:00:00 2001 From: Lance <155090153+1ceL4nc3@users.noreply.github.com> Date: Sat, 7 Sep 2024 19:47:00 +0100 Subject: [PATCH 13/53] L4nce.c --- .../c/L4nce.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/c/L4nce.c diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/c/L4nce.c b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/c/L4nce.c new file mode 100644 index 0000000000..db635c0b9c --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/c/L4nce.c @@ -0,0 +1,13 @@ +https://www.cprogramming.com/ + +Types of comments +"// //" = // comment // +"/* */" = /*comment*/ + +integer +int a = 2; +constant value = const + type of variable + name of variable +const int n = 5; + +char x = 'c'; +float y = 2.35*32; From 49f00b72729824d038f07df8175f33efcd27c6ba Mon Sep 17 00:00:00 2001 From: Lance <155090153+1ceL4nc3@users.noreply.github.com> Date: Sat, 7 Sep 2024 21:17:03 +0100 Subject: [PATCH 14/53] Update L4nce.c --- .../c/L4nce.c | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/c/L4nce.c b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/c/L4nce.c index db635c0b9c..e404897e1b 100644 --- a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/c/L4nce.c +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/c/L4nce.c @@ -1,13 +1,29 @@ -https://www.cprogramming.com/ +https://www.cprogramming.com Types of comments -"// //" = // comment // -"/* */" = /*comment*/ +// // = // comment // +/* */ = /* comment */ -integer -int a = 2; -constant value = const + type of variable + name of variable +// constant value = const + type of variable + name of variable // const int n = 5; -char x = 'c'; -float y = 2.35*32; +//Data types // +char character = 'a'; // Single character, 1 byte // +int integer = 9; // Signed integer in base 10, 4 bytes// +float decimal = 1.5; // Floating point number with six digits of precision, 4 bytes // +double decimalDouble = -2456.4452; // Hold about 15 to 16 digits after and before any given decimal point, 8 bytes // +long longinteger = 132344546L; // Signed long integer, 4 bytes // +short shortinteger = 128; // Short signed integer, 2 bytes // +unsigned unsignedinteger = 50; // Unsigned integer in base 10, 4 bytes // +unsigned long unsignedlonginteger = 451345245UL; // Unsigned long long integer, 8 bytes // +unsigned short unsignedshortinteger = 256; // Short unsigned integer, 2 bytes // + +#include // header function + +int main() // main function +{ // indicates the beginning and end of functions and other code blocks // + char l_name = 'C'; // create a variable named l_name and assign it the character C // + + printf("!Hola %c!\n", l_name); // print the string !Hola + variable l_name// // %c indicates that the funtion is printing a character// // \n print another line// + +} From 7c281bf383bd0e0fc1a48853d62541ff79e1bc30 Mon Sep 17 00:00:00 2001 From: David Sabater Date: Sun, 8 Sep 2024 00:43:05 +0200 Subject: [PATCH 15/53] #01 - C++ --- .../c++/oixild.cpp | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/c++/oixild.cpp diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/c++/oixild.cpp b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/c++/oixild.cpp new file mode 100644 index 0000000000..4371e59852 --- /dev/null +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/c++/oixild.cpp @@ -0,0 +1,136 @@ +/* + * EJERCICIO: + * - Crea ejemplos utilizando todos los tipos de operadores de tu lenguaje: + * Aritmticos, lgicos, de comparacin, asignacin, identidad, pertenencia, bits... + * (Ten en cuenta que cada lenguaje puede poseer unos diferentes) + * - Utilizando las operaciones con operadores que t quieras, crea ejemplos + * que representen todos los tipos de estructuras de control que existan + * en tu lenguaje: + * Condicionales, iterativas, excepciones... + * - Debes hacer print por consola del resultado de todos los ejemplos. + + * + * Seguro que al revisar detenidamente las posibilidades has descubierto algo nuevo. + */ + + +#include +#include +#include // Para manejo de excepciones + +using namespace std; + +int main() { + // ** Operadores aritmticos ** + int a = 10; + int b = 3; + + cout << "Operadores aritmticos:" << endl; + cout << "Suma: " << a + b << endl; // Suma + cout << "Resta: " << a - b << endl; // Resta + cout << "Multiplicacin: " << a * b << endl; // Multiplicacin + cout << "Divisin: " << a / b << endl; // Divisin + cout << "Mdulo: " << a % b << endl; // Mdulo + cout << "Incremento: " << ++a << endl; // Incremento + cout << "Decremento: " << --b << endl; // Decremento + + // ** Operadores de asignacin ** + cout << "\nOperadores de asignacin:" << endl; + a = 5; + cout << "a = 5 -> " << a << endl; + a += 2; + cout << "a += 2 -> " << a << endl; + a -= 1; + cout << "a -= 1 -> " << a << endl; + a *= 3; + cout << "a *= 3 -> " << a << endl; + a /= 2; + cout << "a /= 2 -> " << a << endl; + a %= 3; + cout << "a %= 3 -> " << a << endl; + + // ** Operadores de comparacin ** + cout << "\nOperadores de comparacin:" << endl; + cout << "a == b: " << (a == b) << endl; // Igualdad + cout << "a != b: " << (a != b) << endl; // Diferente + cout << "a < b: " << (a < b) << endl; // Menor que + cout << "a > b: " << (a > b) << endl; // Mayor que + cout << "a <= b: " << (a <= b) << endl; // Menor o igual que + cout << "a >= b: " << (a >= b) << endl; // Mayor o igual que + + // ** Operadores lgicos ** + cout << "\nOperadores lgicos:" << endl; + bool x = true; + bool y = false; + cout << "x && y: " << (x && y) << endl; // AND lgico + cout << "x || y: " << (x || y) << endl; // OR lgico + cout << "!x: " << !x << endl; // NOT lgico + + // ** Operadores de bits ** + cout << "\nOperadores de bits:" << endl; + int c = 5; // 0101 en binario + int d = 9; // 1001 en binario + cout << "c & d: " << (c & d) << endl; // AND a nivel de bits + cout << "c | d: " << (c | d) << endl; // OR a nivel de bits + cout << "c ^ d: " << (c ^ d) << endl; // XOR a nivel de bits + cout << "~c: " << ~c << endl; // NOT a nivel de bits + cout << "c << 1: " << (c << 1) << endl; // Desplazamiento a la izquierda + cout << "c >> 1: " << (c >> 1) << endl; // Desplazamiento a la derecha + + // ** Estructuras de control: Condicionales ** + cout << "\nEstructuras de control - Condicionales:" << endl; + if (a > b) { + cout << "a es mayor que b" << endl; + } + else { + cout << "a no es mayor que b" << endl; + } + + // ** Estructuras de control: Iterativas ** + cout << "\nEstructuras de control - Iterativas:" << endl; + cout << "Bucle for:" << endl; + for (int i = 0; i < 3; i++) { + cout << "i = " << i << endl; + } + + cout << "Bucle while:" << endl; + int i = 0; + while (i < 3) { + cout << "i = " << i << endl; + i++; + } + + cout << "Bucle do-while:" << endl; + i = 0; + do { + cout << "i = " << i << endl; + i++; + } while (i < 3); + + // ** Estructuras de control: Manejo de excepciones ** + cout << "\nEstructuras de control - Excepciones:" << endl; + try { + int divisor = 0; + if (divisor == 0) { + throw runtime_error("Error: Divisin entre cero"); + } + int resultado = 10 / divisor; + cout << "Resultado: " << resultado << endl; + } + catch (const exception& e) { + cout << e.what() << endl; + } + + // ** Dificultad Extra ** + cout << "\nDificultad Extra:" << endl; + + int num = 10; + while (num <= 55) { + if (num % 2 == 0 && num % 3 != 0 && num % 16 != 0) { + cout << num << " " << endl; + num++; + } + num++; + } + return 0; +} From 2f987780f1030f8deef62b971cf65b8def32092d Mon Sep 17 00:00:00 2001 From: Jesus Antonio Escamilla Date: Sat, 7 Sep 2024 18:02:46 -0600 Subject: [PATCH 16/53] 08 - Java & Python --- .../java/JesusAntonioEEscamilla.java | 44 +++++++++++++++++++ .../python/JesusAntonioEEscamilla.py | 28 ++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 Roadmap/08 - CLASES/java/JesusAntonioEEscamilla.java create mode 100644 Roadmap/08 - CLASES/python/JesusAntonioEEscamilla.py diff --git a/Roadmap/08 - CLASES/java/JesusAntonioEEscamilla.java b/Roadmap/08 - CLASES/java/JesusAntonioEEscamilla.java new file mode 100644 index 0000000000..771fc9d9d3 --- /dev/null +++ b/Roadmap/08 - CLASES/java/JesusAntonioEEscamilla.java @@ -0,0 +1,44 @@ + + +/** #07 - Java -> Jesus Antonio Escamilla */ + +public class JesusAntonioEEscamilla { + public static void main(String[] args) { + //---EJERCIÓ--- + Persona persona = new Persona("Jesus Antonio", 24, "Programador"); + persona.imprimirDetalles(); + //---EXTRA--- + + } + + //---EJERCIÓ--- + // Definición de la clase Persona + static class Persona { + // Atributos de la clase + private String nombre; + private int edad; + private String ocupacion; + + // Constructor de la clase Persona + public Persona(String nombre, int edad, String ocupacion) { + this.nombre = nombre; // Inicializa el atributo nombre + this.edad = edad; // Inicializa el atributo edad + this.ocupacion = ocupacion; // Inicializa el atributo ocupacion + } + + // Método para imprimir los atributos de la clase + public void imprimirDetalles() { + System.out.println("Nombre: " + nombre); + System.out.println("Edad: " + edad); + System.out.println("Profesión: " + ocupacion); + } + } + + + + /**-----DIFICULTAD EXTRA-----*/ + + // Pendiente + + /**-----DIFICULTAD EXTRA-----*/ +} \ No newline at end of file diff --git a/Roadmap/08 - CLASES/python/JesusAntonioEEscamilla.py b/Roadmap/08 - CLASES/python/JesusAntonioEEscamilla.py new file mode 100644 index 0000000000..3fbb235ef6 --- /dev/null +++ b/Roadmap/08 - CLASES/python/JesusAntonioEEscamilla.py @@ -0,0 +1,28 @@ +# #08 - Python -> Jesus Antonio Escamilla + +""" +EJERCIÓ +""" +# Definición de la clase Persona +class Persona: + # Inicializador con atributos nombre y edad + def __init__(self, nombre, edad, ocupacion): + self.nombre = nombre + self.edad = edad + self.ocupacion = ocupacion + + # Método para imprimir los atributos + def imprimir_informacion(self): + print(f"Nombre: {self.nombre}, Edad: {self.edad}, Ocupación: {self.ocupacion}") + +# Crear una instancia de la clase Persona +persona1 = Persona("Jesus Antonio", 30, "Programador") + +persona1.imprimir_informacion() + + + +""" +EXTRA +""" +# Pendientes \ No newline at end of file From 5175f452bc531fec46c18a453664fba9703f4dea Mon Sep 17 00:00:00 2001 From: JheisonQuiroga Date: Sat, 7 Sep 2024 21:55:42 -0500 Subject: [PATCH 17/53] Agregar jheisonquiroga.py en la rama main --- .../python/jheisonquiroga.py | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jheisonquiroga.py diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jheisonquiroga.py b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jheisonquiroga.py new file mode 100644 index 0000000000..7a6a10f2d1 --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jheisonquiroga.py @@ -0,0 +1,29 @@ +#https://www.python.org/ +#1. Sintaxis de creacion de comentarios +#1.1. Para una sola linea se utilizan los numerales (#) +""" +1.2. Comentar varias lineas: Se utilizan las comillas dobles o simples triples +""" +''' +1.2. Comentar varias lineas: Se utilizan las comillas dobles o simples triples +''' +#2. Crea una variable y una constante si el lenguaje lo soporta +mi_variable = 69 + +#2.1. Costante +PI = 3.1416 + +#3. Tipos de datos + +cadena = "string" #Cadena de texto (str) +numero_entero = 10 # Numero entero (int) +numero_flotante = 3.5 # Numero flotante (float) +booleano = True # Valor booleano (bool) +lista = [1,2,3] # Lista (list) +tupla = (1,2,3) # tupla (tuple) +diccionario = {"clave" : "valor"} #Diccionario (dict) + +nombre_lenguaje = "Python" +print(f"¡Hola, {nombre_lenguaje}!") + + From 836061def064b2782b69c1c07c56b1bd2a3d84b8 Mon Sep 17 00:00:00 2001 From: Dkp Date: Sat, 7 Sep 2024 23:16:37 -0600 Subject: [PATCH 18/53] #00-Python --- .../python/Dkp-Dev.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Dkp-Dev.py diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Dkp-Dev.py b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Dkp-Dev.py new file mode 100644 index 0000000000..717db2b4fb --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Dkp-Dev.py @@ -0,0 +1,28 @@ +# 1.Crea un comentario en el código y coloca la URL del sitio web oficial del lenguaje de programación que has seleccionado. +# Empezamos de cero! + +# https://www.python.org + +""" + Este es + un comentario + en 3 lineas +""" +# 2.Crea una variable (y una constante si el lenguaje lo soporta). +variable = "Mi Variable" +MY_CONSTANT = "Constante" # Esta constante puede mutar, pero al estar en mayusculas, por convencion nadie la deberia de cambiar + +# 3.Crea variables representando todos los tipos de datos primitivos +int_var = 7 +float_var = 2.5 +bool_var = True +bool2_var = False +string_var = "Cadena de texto" +string2_var = 'Cadena de texto con comilla simple' + +# 4.Imprime por terminal el texto: "¡Hola, [y el nombre de tu lenguaje]!" + +YO = "Dkp-Dev!!" +PYTHON = "Python!!" + +print("Hola", PYTHON, "soy ",YO) From da089555eb7fbfa4a1c792c5d64a4b9c166d2636 Mon Sep 17 00:00:00 2001 From: Eulogio Enamorado Pallares Date: Sun, 8 Sep 2024 07:48:05 +0200 Subject: [PATCH 19/53] #26 - Kotlin --- Roadmap/26 - SOLID SRP/kotlin/eulogioep.kt | 130 +++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 Roadmap/26 - SOLID SRP/kotlin/eulogioep.kt diff --git a/Roadmap/26 - SOLID SRP/kotlin/eulogioep.kt b/Roadmap/26 - SOLID SRP/kotlin/eulogioep.kt new file mode 100644 index 0000000000..1ad0fb4cec --- /dev/null +++ b/Roadmap/26 - SOLID SRP/kotlin/eulogioep.kt @@ -0,0 +1,130 @@ +/* + * Principio de Responsabilidad Única (SRP) + * + * El Principio de Responsabilidad Única es el primer principio de SOLID y establece que una clase + * debe tener una, y solo una, razón para cambiar. En otras palabras, una clase debe tener una + * única responsabilidad bien definida. + * + * Este principio promueve la modularidad, facilita el mantenimiento y mejora la legibilidad del código. + * Cuando una clase tiene múltiples responsabilidades, se vuelve más difícil de entender, modificar y probar. + */ + +// Definiciones de datos comunes +data class Book(val title: String, val author: String, var availableCopies: Int) +data class User(val name: String, val id: String, val email: String) +data class Loan(val user: User, val book: Book) + +// Versión que no cumple con SRP +class LibraryWithoutSRP { + private val books = mutableListOf() + private val users = mutableListOf() + private val loans = mutableListOf() + + fun addBook(title: String, author: String, copies: Int) { + books.add(Book(title, author, copies)) + } + + fun registerUser(name: String, id: String, email: String) { + users.add(User(name, id, email)) + } + + fun loanBook(userId: String, bookTitle: String) { + val user = users.find { it.id == userId } + val book = books.find { it.title == bookTitle } + if (user != null && book != null && book.availableCopies > 0) { + loans.add(Loan(user, book)) + book.availableCopies-- + } + } + + fun returnBook(userId: String, bookTitle: String) { + val loan = loans.find { it.user.id == userId && it.book.title == bookTitle } + if (loan != null) { + loans.remove(loan) + loan.book.availableCopies++ + } + } +} + +// Versión refactorizada que cumple con SRP +class BookManager { + private val books = mutableListOf() + + fun addBook(title: String, author: String, copies: Int) { + books.add(Book(title, author, copies)) + } + + fun findBook(title: String): Book? = books.find { it.title == title } +} + +class UserManager { + private val users = mutableListOf() + + fun registerUser(name: String, id: String, email: String) { + users.add(User(name, id, email)) + } + + fun findUser(id: String): User? = users.find { it.id == id } +} + +class LoanManager { + private val loans = mutableListOf() + + fun loanBook(user: User, book: Book) { + if (book.availableCopies > 0) { + loans.add(Loan(user, book)) + book.availableCopies-- + } + } + + fun returnBook(user: User, book: Book) { + val loan = loans.find { it.user == user && it.book == book } + if (loan != null) { + loans.remove(loan) + book.availableCopies++ + } + } +} + +class Library( + private val bookManager: BookManager, + private val userManager: UserManager, + private val loanManager: LoanManager +) { + fun addBook(title: String, author: String, copies: Int) { + bookManager.addBook(title, author, copies) + } + + fun registerUser(name: String, id: String, email: String) { + userManager.registerUser(name, id, email) + } + + fun loanBook(userId: String, bookTitle: String) { + val user = userManager.findUser(userId) + val book = bookManager.findBook(bookTitle) + if (user != null && book != null) { + loanManager.loanBook(user, book) + } + } + + fun returnBook(userId: String, bookTitle: String) { + val user = userManager.findUser(userId) + val book = bookManager.findBook(bookTitle) + if (user != null && book != null) { + loanManager.returnBook(user, book) + } + } +} + +// Uso del sistema refactorizado +fun main() { + val bookManager = BookManager() + val userManager = UserManager() + val loanManager = LoanManager() + val library = Library(bookManager, userManager, loanManager) + + library.addBook("1984", "George Orwell", 5) + library.registerUser("EulogioEP", "001", "eulogioep@email.com") + library.loanBook("001", "1984") + library.returnBook("001", "1984") +} \ No newline at end of file From eaacbda2a59822a0f72681b53e581455b067d4f9 Mon Sep 17 00:00:00 2001 From: Eulogio Enamorado Pallares Date: Sun, 8 Sep 2024 07:50:49 +0200 Subject: [PATCH 20/53] #27 - Kotlin --- Roadmap/27 - SOLID OCP/kotlin/eulogioep.kt | 76 ++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 Roadmap/27 - SOLID OCP/kotlin/eulogioep.kt diff --git a/Roadmap/27 - SOLID OCP/kotlin/eulogioep.kt b/Roadmap/27 - SOLID OCP/kotlin/eulogioep.kt new file mode 100644 index 0000000000..b389ca6481 --- /dev/null +++ b/Roadmap/27 - SOLID OCP/kotlin/eulogioep.kt @@ -0,0 +1,76 @@ +/* + * Principio Abierto-Cerrado (OCP) de SOLID + * + * El principio OCP establece que las entidades de software (clases, módulos, funciones, etc.) + * deben estar abiertas para la extensión, pero cerradas para la modificación. Esto significa + * que debemos poder extender el comportamiento de una clase sin modificar su código existente. + * + * En este ejemplo, demostraremos cómo aplicar el OCP en el diseño de una calculadora, + * permitiendo agregar nuevas operaciones sin modificar el código existente. + */ + +// Interfaz que define la operación matemática +interface Operation { + fun execute(a: Double, b: Double): Double +} + +// Implementaciones de las operaciones básicas +class Addition : Operation { + override fun execute(a: Double, b: Double) = a + b +} + +class Subtraction : Operation { + override fun execute(a: Double, b: Double) = a - b +} + +class Multiplication : Operation { + override fun execute(a: Double, b: Double) = a * b +} + +class Division : Operation { + override fun execute(a: Double, b: Double): Double { + if (b == 0.0) throw IllegalArgumentException("Cannot divide by zero") + return a / b + } +} + +// Calculadora que utiliza el principio OCP +class Calculator { + private val operations = mutableMapOf() + + fun addOperation(name: String, operation: Operation) { + operations[name] = operation + } + + fun calculate(a: Double, b: Double, operationName: String): Double { + val operation = operations[operationName] + ?: throw IllegalArgumentException("Operation not supported") + return operation.execute(a, b) + } +} + +// Ejemplo de uso y prueba +fun main() { + val calculator = Calculator() + + // Agregar operaciones básicas + calculator.addOperation("add", Addition()) + calculator.addOperation("subtract", Subtraction()) + calculator.addOperation("multiply", Multiplication()) + calculator.addOperation("divide", Division()) + + // Probar operaciones básicas + println("5 + 3 = ${calculator.calculate(5.0, 3.0, "add")}") + println("5 - 3 = ${calculator.calculate(5.0, 3.0, "subtract")}") + println("5 * 3 = ${calculator.calculate(5.0, 3.0, "multiply")}") + println("6 / 3 = ${calculator.calculate(6.0, 3.0, "divide")}") + + // Agregar una nueva operación (potencia) sin modificar el código existente + class Power : Operation { + override fun execute(a: Double, b: Double) = Math.pow(a, b) + } + calculator.addOperation("power", Power()) + + // Probar la nueva operación + println("2^3 = ${calculator.calculate(2.0, 3.0, "power")}") +} From f4fd66e9b1ced4b8a00d4a121dd0785b2eb11a72 Mon Sep 17 00:00:00 2001 From: Dkp-Dev Date: Sat, 7 Sep 2024 23:54:45 -0600 Subject: [PATCH 21/53] #00 - Python --- .../python/Dkp-Dev.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Dkp-Dev.py b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Dkp-Dev.py index 717db2b4fb..30eb399d5c 100644 --- a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Dkp-Dev.py +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Dkp-Dev.py @@ -22,7 +22,7 @@ # 4.Imprime por terminal el texto: "¡Hola, [y el nombre de tu lenguaje]!" -YO = "Dkp-Dev!!" +YO = "Dkp-Dev!" PYTHON = "Python!!" print("Hola", PYTHON, "soy ",YO) From bb27a9e73c22064b19c500bfe1c56b320ff259ea Mon Sep 17 00:00:00 2001 From: mvidalb Date: Sun, 8 Sep 2024 12:10:34 +0200 Subject: [PATCH 22/53] #11 - Python --- .../11 - MANEJO DE FICHEROS/python/mvidalb.py | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 Roadmap/11 - MANEJO DE FICHEROS/python/mvidalb.py diff --git a/Roadmap/11 - MANEJO DE FICHEROS/python/mvidalb.py b/Roadmap/11 - MANEJO DE FICHEROS/python/mvidalb.py new file mode 100644 index 0000000000..cb35e0142a --- /dev/null +++ b/Roadmap/11 - MANEJO DE FICHEROS/python/mvidalb.py @@ -0,0 +1,105 @@ +import os + +''' +Ejercicio +''' +file_name = "mvidalb.txt" + +with open(file_name, "w") as file: + file.write("Mario\n") + file.write("40\n") + file.write("Python") + +with open(file_name, "r") as file: + print(file.read()) + +os.remove(file_name) + + +''' +Ejercicio extra +''' +file_txt = "ventas.txt" +open(file_txt, "a") #a = append, seguir añadiendo + +while True: + print("¡Bienvenido!") + print("1. Añadir producto.") + print("2. Consultar producto.") + print("3. Actualizar producto.") + print("4. Eliminar producto.") + print("5. Mostrar productos.") + print("6. Calcular venta total.") + print("7. Calcular venta por producto.") + print("8. Salir.") + accion = input("Selecciona la acción a realizar: ") + + match accion: + case "1": + name = input("Nombre: ") + quantity = input("Cantidad: ") + price = input("Precio: ") + with open(file_txt, "a",) as file: #a = append, seguir añadiendo + file.write(f"{name}, {quantity}, {price}\n") + case "2": + name = input("Nombre: ") + with open(file_txt, "r") as file: + for line in file.readlines(): + if line.split(", ")[0] == name: + print(line) + break + print("Ese producto no existe!\n") + case "3": + name = input("Nombre: ") + quantity = input("Cantidad: ") + price = input("Precio: ") + with open(file_txt, "r") as file: # Copio todas las líneas + lines = file.readlines() + with open(file_txt, "w") as file: # Escribo todo de nuevo + for line in lines: + if line.split(", ")[0] == name: + file.write(f"{name}, {quantity}, {price}\n") + print("Producto actualizado!\n") + else: + file.write(line) + case "4": + name = input("Nombre: ") + with open(file_txt, "r") as file: # Copio todas las líneas + lines = file.readlines() + with open(file_txt, "w") as file: # Escribo todo de nuevo + for line in lines: + if line.split(", ")[0] != name: + file.write(line) + else: + print("Ese producto no existe!") + case "5": + with open(file_txt, "r") as file: + print(file.read()) + case "6": + total_price = 0 + with open(file_txt, "r") as file: + for line in file.readlines(): + quantity = int(line.split(", ")[1]) + price = float(line.split(", ")[2]) + total_price += quantity*price + print(f"Venta total: {total_price} €") + case "7": + name = input("Nombre: ") + total_product = 0 + with open(file_txt, "r") as file: + for line in file.readlines(): + components = line.split(", ") + if components[0] == name: + quantity = int(line.split(", ")[1]) + price = float(line.split(", ")[2]) + total_product += quantity*price + break + print(f"Venta producto {name}: {total_product} €") + case "8": + print("ventas.txt ha sido borrado. ¡Hasta pronto!") + os.remove(file_txt) + break + case _: + print("No ha seleccionado ninguna acción entre los números 1 y 5.") + + \ No newline at end of file From 07d4d4d2df36c59aa06d40a3c4f5addc7d325f67 Mon Sep 17 00:00:00 2001 From: mvidalb Date: Sun, 8 Sep 2024 14:24:51 +0200 Subject: [PATCH 23/53] #12 - Python --- Roadmap/12 - JSON Y XML/python/mvidalb.py | 107 ++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 Roadmap/12 - JSON Y XML/python/mvidalb.py diff --git a/Roadmap/12 - JSON Y XML/python/mvidalb.py b/Roadmap/12 - JSON Y XML/python/mvidalb.py new file mode 100644 index 0000000000..8df0bacfbc --- /dev/null +++ b/Roadmap/12 - JSON Y XML/python/mvidalb.py @@ -0,0 +1,107 @@ +import json +import os +import xml.etree.ElementTree as xml + +data = { + "name" : "Mario", + "age" : 40, + "birth_date" : "01/01/2000", + "programming_languages" : ["Python", "C#"] +} + +# XML +xml_file = "mvidalb.xml" + +def create_xml(): + + root = xml.Element("data") + + for key, value in data.items(): + child = xml.SubElement(root, key) + if isinstance(value, list): + for item in value: + child_child = xml.SubElement(child, "item") + child_child.text = item + else: + child.text = str(value) + + tree = xml.ElementTree(root) + tree.write(xml_file) + +create_xml() + +with open(xml_file, "r") as xml_data: + print("XML file:") + print(xml_data.read()) + +os.remove(xml_file) + + +# JSON +json_file = "mvidalb.json" + +def create_json(): + with open(json_file, "w") as json_data: + json.dump(data, json_data) + +create_json() + +# Shift + Alt + F para formatear el archivo a formato JSON! + +with open(json_file, "r") as json_data: + print("JSON file:") + print(json_data.read()) + +os.remove(json_file) + + +''' +Ejercicio extra +''' +create_xml() +create_json() + +class Data: + + def __init__(self, name, age, birth_date, programming_languages) -> None: + self.name = name + self.age = age + self.birth_date = birth_date + self.programming_languages = programming_languages + +def extract_xml(): + with open(xml_file, "r") as xml_data: + + root = xml.fromstring(xml_data.read()) + name = root.find("name").text + age = root.find("age").text + birth_date = root.find("birth_date").text + + programming_languages = [] + for item in root.find("programming_languages"): + programming_languages.append(item.text) + + xml_class = Data(name, age, birth_date, programming_languages) + print("DATA CLASS: XML FILE") + print(xml_class.__dict__) + +def extract_json(): + with open(json_file, "r") as json_data: + + json_dict = json.load(json_data) + + name = json_dict["name"] + age = json_dict["age"] + birth_date = json_dict["birth_date"] + programming_languages = json_dict["programming_languages"] + + json_class = Data(name, age, birth_date, programming_languages) + print("DATA CLASS: JSON FILE") + print(json_class.__dict__) + +extract_xml() +extract_json() + +os.remove(xml_file) +os.remove(json_file) + From 48812c144ad4c760e0c3039da75a2e620ef060ed Mon Sep 17 00:00:00 2001 From: Qv1ko Date: Sun, 8 Sep 2024 16:38:16 +0200 Subject: [PATCH 24/53] #07 - TypeScript --- .../07 - PILAS Y COLAS/typescript/qv1ko.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Roadmap/07 - PILAS Y COLAS/typescript/qv1ko.ts diff --git a/Roadmap/07 - PILAS Y COLAS/typescript/qv1ko.ts b/Roadmap/07 - PILAS Y COLAS/typescript/qv1ko.ts new file mode 100644 index 0000000000..ae55deaf48 --- /dev/null +++ b/Roadmap/07 - PILAS Y COLAS/typescript/qv1ko.ts @@ -0,0 +1,19 @@ +let stack: number[] = []; + +stack.push(1); +stack.push(2); +stack.push(3); + +if (stack.length !== 0) { + console.log(stack.pop()); +} + +let queue: string[] = []; + +queue.push('a'); +queue.push('b'); +queue.push('c'); + +if (queue.length !== 0){ + console.log(queue[0]); +} From 25ab8f2d144a1b5bed73e1dcad7993f9cc770b2d Mon Sep 17 00:00:00 2001 From: Alecraft8 Date: Sun, 8 Sep 2024 15:11:15 -0400 Subject: [PATCH 25/53] Alecraft8 --- .../python/Alecraft8.py | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/Alecraft8.py diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/Alecraft8.py b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/Alecraft8.py new file mode 100644 index 0000000000..d8c113acc4 --- /dev/null +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/Alecraft8.py @@ -0,0 +1,75 @@ +from random import randint + +# Array de Preguntas del Sombrero + +preguntas = [ + "¿Te sientes cómodo manejando servidores?", + "¿Eres bueno con Javascript y CSS?", + "¿Manejas bases de datos?", + "¿Programas en Python, Ruby, C, u otro lenguaje de Backend?", + "¿Te gusta tomar café?", + "¿Haz hecho algun proyecto de páginas web?", + "¿Conoces tecnologías de manejo de datos?", + "¿Te gusta programar programas de escritorio?", + "¿Usas PHP?", + "¿Usas Kotlin y/o Java?" +] + +# Variables de respuestas + +n = "no" +s = "si" +l = "lo manejo" +m = "no mucho" + +# Posibles variaciones de respuestas +# N de Array = N de Preguntas + +responses = { + "Frontend": [n, s, n, n, m, l, n, m, m, m], + "Backend": [l, m, l, s, s, s, l, l, l, l], + "Mobile": [m, l, m, m, l, n, m, n, n, s], + "Data": [s, n, s, l, n, m, s, s, s, n] + } + +houses_points = { + "Frontend": 0, + "Backend": 0, + "Mobile": 0, + "Data": 0 + } + +def main(): + name = input("Ingrese el nombre del alumno: ") + print("Bienvenido al Hogwarts Express, %s!" % (name)) + print("Este es tu sombrero seleccionador, encuentra tu camino hacia la escuela de programación de Hogwarts.") + print("Empezamos las preguntas.") + for pregunta in range(len(preguntas)): + bad_answer = True + while bad_answer: + respuesta = input(preguntas[pregunta] + " (Si/No/No mucho/Lo manejo): ").lower() + if respuesta in ["si", "no", "lo manejo", "no mucho"]: + for i in responses.keys(): + if responses[i][pregunta] == respuesta: + houses_points[i] += 1 + bad_answer = False + else: + print("Respuesta incorrecta, intenta nuevamente.") + + casas_mas_probables = [] + + for i in houses_points.keys(): + casas_mas_probables.append((houses_points[i], i)) + casas_mas_probables.sort(reverse=True) + + casa_mas_probable = 0 + + if casas_mas_probables[0][0] == casas_mas_probables[1][0]: + print("La decision ha sido dificil...") + casa_mas_probable = randint(0,1) + + return name, casas_mas_probables[casa_mas_probable][1] + +if __name__ == "__main__": + nombre_alumno, estancia = main() + print("¡%s, te ha tocado %s!" % (nombre_alumno, estancia)) From 9d3562583f5d1a159d61e58b119ed15a28e2abd8 Mon Sep 17 00:00:00 2001 From: Luis Q Date: Sun, 8 Sep 2024 16:15:41 -0300 Subject: [PATCH 26/53] #00 - Java --- .../java/queralesDev.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/java/queralesDev.java diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/java/queralesDev.java b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/java/queralesDev.java new file mode 100644 index 0000000000..ae365710f3 --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/java/queralesDev.java @@ -0,0 +1,29 @@ + +public class queralesDev { + public static void main(String[] args) { + /* + https://www.java.com/es/ + */ + + /* + Las diferentes sintaxis para crear comentarios son las siguientes + /* Esto es Comentario de varias lineas + //comentario de una sola linea + ///comentario de una sola linea tambien + */ + + int numeroEntero; + String JAVA = "Soy una constante"; + + byte numero; + int numeroEntero2; + short numeroCorto; + long numeroLargo; + double numeroConComa; + char caracter; + float numeroConComa2; + + System.out.printf("Hola soy java"); + + } +} \ No newline at end of file From bba0cbf3995fed6a751991ce64670acf911b80b2 Mon Sep 17 00:00:00 2001 From: gustavo Date: Sun, 8 Sep 2024 21:42:52 +0200 Subject: [PATCH 27/53] Add files via upload archivo para el ejercicio 2 se bash --- .../bash/drvito1977.sh | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 Roadmap/02 - FUNCIONES Y ALCANCE/bash/drvito1977.sh diff --git a/Roadmap/02 - FUNCIONES Y ALCANCE/bash/drvito1977.sh b/Roadmap/02 - FUNCIONES Y ALCANCE/bash/drvito1977.sh new file mode 100644 index 0000000000..d43bb57587 --- /dev/null +++ b/Roadmap/02 - FUNCIONES Y ALCANCE/bash/drvito1977.sh @@ -0,0 +1,90 @@ +#!/bin/bash +# Esta línea indica que el script debe ser interpretado por Bash + +# Función sin parámetros ni retorno +function sin_parametros_ni_retorno { + # Imprime un mensaje indicando que esta función no tiene parámetros ni retorno + echo "Función sin parámetros ni retorno" +} + +# Función con un parámetro +function con_un_parametro { + # $1 es el primer parámetro pasado a la función + echo "Función con un parámetro: $1" +} + +# Función con varios parámetros +function con_varios_parametros { + # $1, $2, y $3 son los primeros tres parámetros pasados a la función + echo "Función con varios parámetros: $1, $2, $3" +} + +# Llamada a la función sin parámetros ni retorno +sin_parametros_ni_retorno + +# Llamada a la función con un parámetro +con_un_parametro "Hola" + +# Llamada a la función con varios parámetros +con_varios_parametros "Uno" "Dos" "Tres" + +# Definición de la función 'fa' anidada +function fa { + # Imprime un mensaje indicando que se está llamando a la función 'fa' + echo "Llamando a la función anidada, fa" + + # Definición de la función interna 'fu' dentro de 'fa' + function fu { + # Imprime un mensaje indicando que se está llamando a la función 'fu' + echo "Llamando a la función interna, fu" + } + + # Llama a la función interna 'fu' dentro de la función 'fa' + fu +} + +# Llama a la función 'fa' +fa + +# Calcula el factorial de 'n' usando un bucle while +function factorial { + local n=$1 + local result=1 + while [ $n -gt 1 ]; do + result=$((result * n)) + ((n--)) + done + # Devuelve el resultado del factorial + echo $result +} +factorial 5 # Llama a la función 'factorial' con el argumento 5 + +# Función que recibe dos parámetros de tipo cadena de texto y retorna un número +function imprimir_numeros { + local cadena1=$1 + local cadena2=$2 + local contador=0 + + for ((i=1; i<=100; i++)); do + if ((i % 3 == 0 && i % 5 == 0)); then + echo "${cadena1}${cadena2}" + elif ((i % 3 == 0)); then + echo "$cadena1" + elif ((i % 5 == 0)); then + echo "$cadena2" + else + echo "$i" + ((contador++)) + fi + done + + # Retorna el número de veces que se ha impreso el número en lugar de los textos + return $contador +} + +# Llamada a la función 'imprimir_numeros' con los parámetros "Fizz" y "Buzz" +imprimir_numeros "Fizz" "Buzz" +# Captura el valor de retorno de la función +contador=$? +echo "El número de veces que se ha impreso el número en lugar de los textos es: $contador" + From 0b8046409f321af9754f89277b443cba9cd553ee Mon Sep 17 00:00:00 2001 From: Erysnell Gonzalez Perez <118245971+Erysnell@users.noreply.github.com> Date: Sun, 8 Sep 2024 17:59:33 -0400 Subject: [PATCH 28/53] Add files via upload #00-Javascript --- .../javascript/Erysnell.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/Erysnell.js diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/Erysnell.js b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/Erysnell.js new file mode 100644 index 0000000000..5724de5752 --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/Erysnell.js @@ -0,0 +1,15 @@ +// https://developer.mozilla.org/es/docs/Web/JavaScript + +// comentarios de una sola linea +/*comentarios +de varias lineas*/ + +let variable; +const constante = 5; + +let number = 1; +let string = 'string'; +let boolean = true; +let array = [1,2,3]; + +console.log("Hola Javascript"); \ No newline at end of file From 90405a96ccb3bde90f2d552d7aab143e2b629e4d Mon Sep 17 00:00:00 2001 From: mouredev Date: Mon, 9 Sep 2024 00:15:51 +0000 Subject: [PATCH 29/53] Update stats --- Roadmap/stats.json | 204 +++++++++++++++++++++++---------------------- 1 file changed, 105 insertions(+), 99 deletions(-) diff --git a/Roadmap/stats.json b/Roadmap/stats.json index 627a83a17d..d3b641f0cc 100644 --- a/Roadmap/stats.json +++ b/Roadmap/stats.json @@ -1,8 +1,8 @@ { "challenges_total": 37, "languages_total": 48, - "files_total": 6870, - "users_total": 1150, + "files_total": 6879, + "users_total": 1151, "challenges_ranking": [ { "order": 1, @@ -187,57 +187,57 @@ { "order": 37, "name": "36 - EL SOMBRERO SELECCIONADOR", - "count": 13 + "count": 22 } ], "languages_ranking": [ { "order": 1, "name": "python", - "count": 2959, - "percentage": 43.07 + "count": 2962, + "percentage": 43.06 }, { "order": 2, "name": "javascript", - "count": 1369, - "percentage": 19.93 + "count": 1370, + "percentage": 19.92 }, { "order": 3, "name": "java", "count": 614, - "percentage": 8.94 + "percentage": 8.93 }, { "order": 4, "name": "typescript", - "count": 302, + "count": 303, "percentage": 4.4 }, { "order": 5, "name": "c#", - "count": 252, - "percentage": 3.67 + "count": 253, + "percentage": 3.68 }, { "order": 6, "name": "kotlin", "count": 212, - "percentage": 3.09 + "percentage": 3.08 }, { "order": 7, "name": "go", "count": 212, - "percentage": 3.09 + "percentage": 3.08 }, { "order": 8, "name": "swift", "count": 166, - "percentage": 2.42 + "percentage": 2.41 }, { "order": 9, @@ -247,15 +247,15 @@ }, { "order": 10, - "name": "c++", + "name": "rust", "count": 113, "percentage": 1.64 }, { "order": 11, - "name": "rust", - "count": 112, - "percentage": 1.63 + "name": "c++", + "count": 113, + "percentage": 1.64 }, { "order": 12, @@ -266,8 +266,8 @@ { "order": 13, "name": "dart", - "count": 48, - "percentage": 0.7 + "count": 49, + "percentage": 0.71 }, { "order": 14, @@ -278,8 +278,8 @@ { "order": 15, "name": "vb.net", - "count": 36, - "percentage": 0.52 + "count": 37, + "percentage": 0.54 }, { "order": 16, @@ -490,7 +490,7 @@ { "order": 2, "name": "kenysdev", - "count": 144, + "count": 148, "languages": 4 }, { @@ -1143,334 +1143,334 @@ }, { "order": 111, + "name": "redom69", + "count": 14, + "languages": 4 + }, + { + "order": 112, "name": "andresgcastillo", "count": 14, "languages": 2 }, { - "order": 112, + "order": 113, "name": "ygriegasb", "count": 14, "languages": 2 }, { - "order": 113, + "order": 114, "name": "gonzadev28", "count": 14, "languages": 2 }, { - "order": 114, + "order": 115, "name": "elmer125", "count": 14, "languages": 1 }, { - "order": 115, + "order": 116, "name": "vincentrodriguezr", "count": 14, "languages": 1 }, { - "order": 116, + "order": 117, "name": "mikelm2020", "count": 14, "languages": 1 }, { - "order": 117, + "order": 118, "name": "gordo-master", "count": 14, "languages": 1 }, { - "order": 118, + "order": 119, "name": "paula2409", "count": 14, "languages": 1 }, { - "order": 119, + "order": 120, "name": "volumidev", "count": 13, "languages": 3 }, { - "order": 120, + "order": 121, "name": "diegoibb", "count": 13, "languages": 3 }, { - "order": 121, + "order": 122, "name": "manjaitan", "count": 13, "languages": 2 }, { - "order": 122, + "order": 123, "name": "jesuses1312", "count": 13, "languages": 2 }, { - "order": 123, + "order": 124, "name": "ocram1304", "count": 13, "languages": 1 }, { - "order": 124, + "order": 125, "name": "dan-corbo", "count": 13, "languages": 1 }, { - "order": 125, + "order": 126, "name": "juanchernandezdev", "count": 13, "languages": 1 }, { - "order": 126, + "order": 127, "name": "c-gabs", "count": 13, "languages": 1 }, { - "order": 127, + "order": 128, "name": "jav-mol", "count": 13, "languages": 1 }, { - "order": 128, + "order": 129, "name": "tomu98", "count": 13, "languages": 1 }, { - "order": 129, + "order": 130, "name": "neosv", "count": 13, "languages": 1 }, { - "order": 130, + "order": 131, "name": "julian98789", "count": 13, "languages": 1 }, { - "order": 131, + "order": 132, "name": "juanrcoder", "count": 12, "languages": 2 }, { - "order": 132, + "order": 133, "name": "keltoi-dev", "count": 12, "languages": 2 }, { - "order": 133, + "order": 134, "name": "andresmcardenas", "count": 12, "languages": 2 }, { - "order": 134, + "order": 135, "name": "a-mayans", "count": 12, "languages": 2 }, { - "order": 135, + "order": 136, "name": "deathwing696", "count": 12, "languages": 2 }, { - "order": 136, + "order": 137, "name": "pancratzia", "count": 12, "languages": 1 }, { - "order": 137, + "order": 138, "name": "jeronimocardu", "count": 12, "languages": 1 }, { - "order": 138, + "order": 139, "name": "evilpotato04", "count": 12, "languages": 1 }, { - "order": 139, + "order": 140, "name": "javierjoyera", "count": 12, "languages": 1 }, { - "order": 140, + "order": 141, "name": "dataciriano", "count": 12, "languages": 1 }, { - "order": 141, + "order": 142, "name": "josealberto13", "count": 12, "languages": 1 }, { - "order": 142, + "order": 143, "name": "clmiranda", "count": 12, "languages": 1 }, { - "order": 143, + "order": 144, "name": "andrewcodev", "count": 12, "languages": 1 }, { - "order": 144, + "order": 145, "name": "javierfiestasbotella", "count": 12, "languages": 1 }, { - "order": 145, + "order": 146, "name": "pipe281", "count": 12, "languages": 1 }, { - "order": 146, + "order": 147, "name": "jchavescaceres", "count": 11, "languages": 2 }, { - "order": 147, + "order": 148, "name": "switchdays", "count": 11, "languages": 2 }, { - "order": 148, + "order": 149, "name": "arkmiguel379", "count": 11, "languages": 2 }, { - "order": 149, + "order": 150, "name": "ialmontedr0", "count": 11, "languages": 1 }, { - "order": 150, + "order": 151, "name": "charlerodriguez3", "count": 11, "languages": 1 }, { - "order": 151, + "order": 152, "name": "oleojake", "count": 11, "languages": 1 }, { - "order": 152, + "order": 153, "name": "7r0n1x", "count": 11, "languages": 1 }, { - "order": 153, + "order": 154, "name": "alainmartz", "count": 11, "languages": 1 }, { - "order": 154, + "order": 155, "name": "warclimb", "count": 11, "languages": 1 }, { - "order": 155, + "order": 156, "name": "mirandayuber", "count": 11, "languages": 1 }, { - "order": 156, + "order": 157, "name": "m1l0j05", "count": 11, "languages": 1 }, { - "order": 157, + "order": 158, "name": "59822", "count": 11, "languages": 1 }, { - "order": 158, + "order": 159, "name": "mvidalb", "count": 11, "languages": 1 }, { - "order": 159, + "order": 160, "name": "majinka10", "count": 11, "languages": 1 }, { - "order": 160, + "order": 161, "name": "jeigar2", "count": 11, "languages": 1 }, { - "order": 161, + "order": 162, "name": "abelade", "count": 11, "languages": 1 }, { - "order": 162, + "order": 163, "name": "gustavogomez19", "count": 11, "languages": 1 }, { - "order": 163, + "order": 164, "name": "evanz2608", "count": 11, "languages": 1 }, { - "order": 164, + "order": 165, "name": "bertomp", "count": 10, "languages": 5 }, - { - "order": 165, - "name": "redom69", - "count": 10, - "languages": 4 - }, { "order": 166, "name": "othamae", @@ -7275,108 +7275,114 @@ }, { "order": 1133, - "name": "greenalpak", + "name": "alecraft8", "count": 1, "languages": 1 }, { "order": 1134, - "name": "juampaweb", + "name": "greenalpak", "count": 1, "languages": 1 }, { "order": 1135, - "name": "girngoma", + "name": "juampaweb", "count": 1, "languages": 1 }, { "order": 1136, - "name": "jjaljuria", + "name": "girngoma", "count": 1, "languages": 1 }, { "order": 1137, - "name": "ddaniel27", + "name": "jjaljuria", "count": 1, "languages": 1 }, { "order": 1138, - "name": "dfc201692", + "name": "ddaniel27", "count": 1, "languages": 1 }, { "order": 1139, - "name": "angelramirez02", + "name": "dfc201692", "count": 1, "languages": 1 }, { "order": 1140, - "name": "lesclaz", + "name": "angelramirez02", "count": 1, "languages": 1 }, { "order": 1141, - "name": "giovannipeirone", + "name": "lesclaz", "count": 1, "languages": 1 }, { "order": 1142, - "name": "whiterbb", + "name": "giovannipeirone", "count": 1, "languages": 1 }, { "order": 1143, - "name": "adridiazz", + "name": "whiterbb", "count": 1, "languages": 1 }, { "order": 1144, - "name": "jesus2421", + "name": "adridiazz", "count": 1, "languages": 1 }, { "order": 1145, - "name": "euu92", + "name": "jesus2421", "count": 1, "languages": 1 }, { "order": 1146, - "name": "santyjl44", + "name": "euu92", "count": 1, "languages": 1 }, { "order": 1147, - "name": "luism95", + "name": "santyjl44", "count": 1, "languages": 1 }, { "order": 1148, - "name": "ouendinga", + "name": "luism95", "count": 1, "languages": 1 }, { "order": 1149, - "name": "melonconyogurt", + "name": "ouendinga", "count": 1, "languages": 1 }, { "order": 1150, + "name": "melonconyogurt", + "count": 1, + "languages": 1 + }, + { + "order": 1151, "name": "mantaras96", "count": 1, "languages": 1 From c919236035693bf245b1944ab3156bc2e54f8661 Mon Sep 17 00:00:00 2001 From: Cesar Carmona Date: Sun, 8 Sep 2024 18:24:53 -0600 Subject: [PATCH 30/53] #07 - JavaScript --- .../javascript/CesarCarmona30.js | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 Roadmap/07 - PILAS Y COLAS/javascript/CesarCarmona30.js diff --git a/Roadmap/07 - PILAS Y COLAS/javascript/CesarCarmona30.js b/Roadmap/07 - PILAS Y COLAS/javascript/CesarCarmona30.js new file mode 100644 index 0000000000..1521879a8f --- /dev/null +++ b/Roadmap/07 - PILAS Y COLAS/javascript/CesarCarmona30.js @@ -0,0 +1,106 @@ +/** + * EJERCICIO + */ + +// PILA +let stack = []; + +// Push +stack.push('Cucumber'); +stack.push('Radish'); +stack.push('Tomato'); +stack.push('Orange'); +stack.push('Apple'); + +console.table(stack); + +// Pop +stack.pop() +console.table(stack); +stack.pop() +console.table(stack); + +// COLA +let queue = []; + +// Enqueue +queue.push('Banana'); +queue.push('Melon'); +queue.push('Strawberry'); +queue.push('Onion'); +queue.push('Garlic'); +console.table(queue); + +// Dequeue +queue.shift(); +console.table(queue); +queue.shift(); +console.table(queue); + +//PILA - Navegador +//COLA - Impresora + +class WebBrowser { + constructor() { + this.pages = []; + this.index = null + this.currentPage = null; + } + + addPage(page) { + this.pages.push(page); + this.index = this.pages.length - 1; + this.currentPage = this.pages[this.index]; + } + + goForward() { + this.currentPage = this.pages[this.index++]; + if (this.currentPage != undefined) { + return this.currentPage; + } + this.index--; + console.error('Sin referencia de página adelante'); + return '-'; + } + + goBackward() { + try { + this.currentPage = this.pages[this.index--]; + return this.currentPage; + } catch (error) { + this.index++; + console.error('Sin páginas en el historial'); + return '-'; + } + } +} + +function browserHistory(browser, input) { + let page; + console.log(`>_${input}`); + switch (input) { + case 'adelante': + page = browser.goForward(); + console.log(`Página actual: ${page}`); + break; + case 'atras': + page = browser.goBackward(); + console.log(`Página actual: ${page}`); + break; + case 'salir': + break; + default: + let new_page = input; + browser.addPage(new_page); + console.log(`Nueva página: ${new_page}`); + break; + } +} + +const edge = new WebBrowser(); +browserHistory(edge, 'Wikipedia'); +browserHistory(edge, 'YouTube'); +browserHistory(edge, 'Amazon'); +browserHistory(edge, 'atras'); +browserHistory(edge, 'atras'); +browserHistory(edge, 'adelante'); \ No newline at end of file From 864a68fd1c79ac644e57903031ec63f626d344ab Mon Sep 17 00:00:00 2001 From: Jesus Montoya Date: Sun, 8 Sep 2024 20:54:45 -0500 Subject: [PATCH 31/53] #00 - Python --- .../python/jmontoyac.py | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jmontoyac.py diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jmontoyac.py b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jmontoyac.py new file mode 100644 index 0000000000..b37835dfaa --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jmontoyac.py @@ -0,0 +1,21 @@ +# https://www.python.org/ + +# Python solo tiene comentarios de una linea +# Para agregar comentarion multi lineas, se agregan +# mas comentarios de una linea + +# Variable en Python +primera_variable = 0 + +# Constante en Python +DURACION_MILISEGUNDOS = 300 + +# Tipos de datos primitivos +variable_string_comillas_simples = 'String de comillas simples' +Variable_string_comillas_dobles = "String de comillas dobles" +variable_int = 3600 +variable_float = 5.5 +variable_boolean = True +variable_nula = None + +print("¡Hola Python!") \ No newline at end of file From ff4bfbf8984b95220216b868403aacd80144fc29 Mon Sep 17 00:00:00 2001 From: Jesus Montoya Date: Sun, 8 Sep 2024 21:07:29 -0500 Subject: [PATCH 32/53] #00 - Python --- .../python/jmontoyac.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jmontoyac.py b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jmontoyac.py index b37835dfaa..9549398af8 100644 --- a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jmontoyac.py +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/jmontoyac.py @@ -1,8 +1,11 @@ # https://www.python.org/ -# Python solo tiene comentarios de una linea -# Para agregar comentarion multi lineas, se agregan -# mas comentarios de una linea +# Comentario de una linea + +''' +# Comentario multi lineas +# Segunda linea de comentario +''' # Variable en Python primera_variable = 0 From 520f53a1cf61b987bc255f9ecdf5866bc7688db8 Mon Sep 17 00:00:00 2001 From: Jesus Montoya Date: Sun, 8 Sep 2024 22:04:48 -0500 Subject: [PATCH 33/53] #01 - Python --- .../python/jmontoyac.py | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/jmontoyac.py diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/jmontoyac.py b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/jmontoyac.py new file mode 100644 index 0000000000..9442249238 --- /dev/null +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/jmontoyac.py @@ -0,0 +1,69 @@ +# Ejemplo de operadores aritmeticos + +a = 5 +b = 2 + +print(f'Valor de variable a: {a}') +print(f'Valor de variable b: {b}') + +print(f'a + b: {a+b}') +print(f'a - b: {a-b}') +print(f'a * b: {a*b}') +print(f'a / b: {a/b}') +print(f'a % b: {a%b}') + +# Ejemplo de operadores logicos + +# Operador and +print('## Operador and ##') +print(f'True and True: {True and True}') +print(f'True and False: {True and False}') +print(f'False and True: {False and True}') +print(f'False and False: {False and False}') + +# Operador or +print('## Operador or ##') +print(f'True or True: {True or True}') +print(f'True or False: {True or False}') +print(f'False or True: {False or True}') +print(f'False or False: {False or False}') + +# Operador not +print('## Operador not ##') +print(f'not True: {not True}') +print(f'not False: {not False}') + +# Operadores de comparacion + +print('## Operadores de comparacion ##') +print(f'{a} == {b}: {a==b}') +print(f'{a} != {b}: {a!=b}') +print(f'{a} < {b}: {a {b}: {a>b}') +print(f'{a} <= {b}: {a<=b}') +print(f'{a} >= {b}: {a>=b}') + +# Operadores de asignacion + +print('## Operadores de asignacion ##') +x = "Hola" +y = 256 +z = 128 +print(f'x = "Hola", valor de variable x: {x}') +print(f'y = 265, valor de variable y: {y}') +y += z +print(f'y += z, resultado: {y}') +y -= z +print(f'y -= z, resultado: {y}') +y *= z +print(f'y *= z, resultado: {y}') +y /= z +print(f'y /= z, resultado: {y}') +y %= z +print(f'y %= z, resultado: {y}') +y = 2 +z = 6 +y **= z +print(f'y **= z, resultado: {y}') +y //= z +print(f'y //= z, resultado: {y}') \ No newline at end of file From 08eb6e172ab13b62c2e0ffa3f205f0167c439cf2 Mon Sep 17 00:00:00 2001 From: Cesar Carmona Date: Sun, 8 Sep 2024 22:11:55 -0600 Subject: [PATCH 34/53] #36 - Python --- .../python/CesarCarmona30.py | 138 ++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/CesarCarmona30.py diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/CesarCarmona30.py b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/CesarCarmona30.py new file mode 100644 index 0000000000..647b80f92b --- /dev/null +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/CesarCarmona30.py @@ -0,0 +1,138 @@ +''' + EJERCICIO +''' + +import random, time + +houses = { + "a": ["Frontend", 0], + "b": ["Backend", 0], + "c": ["Desarrollo de videojuegos", 0], + "d": ["Ciberseguridad", 0] +} + +pets = { + "Frontend": "𖤍", + "Backend": "𓅓", + "Desarrollo de videojuegos": "𓅛", + "Ciberseguridad": "𓃠" +} + +print(f"""Bienvenido a la escuela de la programación de Hogwarts para magos y brujas del código. +A continuación el sombrero te guiará a través de preguntas para encontrar tu camino hacia tu casa ideal. +Cuál de estás casas será la que te consolide...\n""") + +for house, animal in pets.items(): + print(f'{animal} {house} {animal}') + +name = input("\nEmpecemos... ¿Cuál es tu nombre?: ") + +questions = [ + { 1: "¿Qué parte de un proyecto te resulta más interesante?", + "options": { + "a": "Crear una interfaz de usuario atractiva y fácil de usar.", + "b": "Desarrollar la lógica de negocio y gestionar bases de datos.", + "c": "Diseñar mecánicas y físicas de inmersivas.", + "d": "Asegurar la protección de los datos y prevenir ataques." + }}, + { 2: "¿Qué herramienta preferirías utilizar?", + "options": { + "a": "Figma o Sketch.", + "b": "Docker o Kubernetes.", + "c": "Unity o Unreal Engine.", + "d": "Wireshark o Burp Suite." + }}, + { 3: "¿Qué tipo de errores disfrutas resolver?", + "options": { + "a": "Fallos de estilo o funcionalidad en una página web.", + "b": "Bugs en la lógica del servidor o en una base de datos.", + "c": "Problemas de comportamiento o física en un juego.", + "d": "Vulnerabilidades en el sistema o posibles puntos de ataque." + }}, + { 4: "Lenguaje de programación (o tecnología) favorito:", + "options": { + "a": "JavaScript o TypeScript.", + "b": "Python, Java o Node.js.", + "c": "C++ o C#.", + "d": "C, Python o Bash." + }}, + { 5: "¿Qué prefieres optimizar en un proyecto?", + "options": { + "a": "La experiencia de usuario y la velocidad de carga de la interfaz.", + "b": "El rendimiento del servidor y las consultas de la base de datos.", + "c": "Los gráficos y la jugabilidad en tiempo real.", + "d": "La seguridad de los datos y la prevención de intrusiones." + }}, + { 6: "¿Qué tipo de desafíos te emocionan más?", + "options": { + "a": "Crear animaciones fluidas y transiciones en la interfaz.", + "b": "Diseñar una API robusta y eficiente.", + "c": "Implementar inteligencia artificial para NPCs en un videojuego.", + "d": "Descubrir y mitigar una nueva vulnerabilidad de seguridad." + }}, + { 7: "¿Qué tecnología te gustaría dominar?", + "options": { + "a": "React, Vue o Angular", + "b": "Express, Django o Flask", + "c": "Unreal Engine o Unity", + "d": "Metasploit o herramientas de análisis forense digital." + }}, + { 8: "¿En qué área preferirías trabajar a largo plazo?", + "options": { + "a": "Creación de interfaces y experiencias de usuario visuales.", + "b": "Diseño de la lógica interna y los servicios de backend.", + "c": "Desarrollo de mundos y mecánicas en videojuegos.", + "d": "Auditoría de seguridad y pentesting." + }}, + { 9: "¿Qué proyecto te resulta más atractivo?", + "options": { + "a": "Desarrollar una aplicación web interactiva y dinámica.", + "b": "Crear una API que sirva datos a múltiples plataformas.", + "c": "Desarrollar un videojuego inmersivo en 3D.", + "d": "Desarrollar un sistema de protección contra ataques DDoS." + }}, + { 10: "¿Qué prefieres como objetivo principal en tu trabajo?", + "options": { + "a": "Hacer que la aplicación sea visualmente atractiva y fácil de usar.", + "b": "Asegurarte de que la aplicación funcione sin problemas en el servidor.", + "c": "Crear una experiencia de juego envolvente y divertida.", + "d": "Garantizar que los sistemas estén seguros contra ataques." + }} +] + + +for id, question in enumerate(questions): + print(f"\nPregunta {id + 1}: {question[id + 1]}") + for option, answer in question["options"].items(): + print(f"{option}) {answer}") + + reply = input("Elige una opción:\n>_ ").lower() + + while reply not in question["options"]: + reply = input("Opción no válida. Por favor intenta de nuevo. a) b) c) o d): ").lower() + + houses[reply][1] += 1 + +max_score = max(house[1] for house in houses.values()) +winning_houses = [house_name for house_name, house in houses.items() if house[1] == max_score] + +chosen_house = None + +print(f"¡Felicidades {name.capitalize()}!") + +if len(winning_houses) > 1: + chosen_house_key = random.choice(winning_houses) + chosen_house = houses[chosen_house_key][0] + print(f"¡La decisión ha sido complicada! Pero finalmente, el sombrero te ha asignado a la casa...") +else: + chosen_house = houses[winning_houses[0]][0] + print(f"El sombrero te ha asignado a la casa...") + +for sec in range(1, 4): + time.sleep(1) + print('.' * sec) + +time.sleep(1) +print(f'{pets[chosen_house]}' * 20, end='') +print(f"\n──⊹¡{chosen_house.upper()}!⊹──") +print(f'{pets[chosen_house]}' * 20, end='') \ No newline at end of file From 45f4e4f59b310065a26e905320da80bd3fe6cc54 Mon Sep 17 00:00:00 2001 From: drvito1977 Date: Mon, 9 Sep 2024 09:06:15 +0200 Subject: [PATCH 35/53] =?UTF-8?q?A=C3=B1ade=20ejemplos=20de=20estructuras?= =?UTF-8?q?=20de=20datos=20en=20Bash?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../drvito1977_03.sh | 164 ++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 Roadmap/03 - ESTRUCTURAS DE DATOS/drvito1977_03.sh diff --git a/Roadmap/03 - ESTRUCTURAS DE DATOS/drvito1977_03.sh b/Roadmap/03 - ESTRUCTURAS DE DATOS/drvito1977_03.sh new file mode 100644 index 0000000000..775646c0c3 --- /dev/null +++ b/Roadmap/03 - ESTRUCTURAS DE DATOS/drvito1977_03.sh @@ -0,0 +1,164 @@ +#!/bin/bash + +# Ejemplos de estructuras en Bash + +# Arrays +# Definición de un array con elementos iniciales +array=(1 2 3 4 5) +# Imprimir todos los elementos del array +echo "Array original: ${array[@]}" +# Añadir un nuevo elemento al final del array +array+=(6) # Inserción +# Imprimir el array después de la inserción +echo "Array después de inserción: ${array[@]}" +# Eliminar el tercer elemento del array (índice 2) +unset array[2] # Borrado +# Imprimir el array después del borrado +echo "Array después de borrado: ${array[@]}" +# Actualizar el segundo elemento del array (índice 1) a 10 +array[1]=10 # Actualización +# Imprimir el array después de la actualización +echo "Array después de actualización: ${array[@]}" +# Ordenar el array y guardarlo en una nueva variable +sorted_array=($(for i in "${array[@]}"; do echo $i; done | sort)) # Ordenación +# Imprimir el array ordenado +echo "Array ordenado: ${sorted_array[@]}" + +# Arrays asociativos +# Declarar un array asociativo +declare -A assoc_array +# Inicializar el array asociativo con pares clave-valor +assoc_array=([key1]=value1 [key2]=value2) +# Imprimir todos los valores del array asociativo +echo "Array asociativo original: ${assoc_array[@]}" +# Añadir un nuevo par clave-valor al array asociativo +assoc_array[key3]=value3 # Inserción +# Imprimir el array asociativo después de la inserción +echo "Array asociativo después de inserción: ${assoc_array[@]}" +# Eliminar un par clave-valor del array asociativo usando la clave +unset assoc_array[key1] # Borrado +# Imprimir el array asociativo después del borrado +echo "Array asociativo después de borrado: ${assoc_array[@]}" +# Actualizar el valor asociado a una clave existente +assoc_array[key2]=new_value # Actualización +# Imprimir el array asociativo después de la actualización +echo "Array asociativo después de actualización: ${assoc_array[@]}" + +# Strings (cadenas de texto) +# Definir una cadena de texto +string="Hola Mundo" +# Imprimir la cadena original +echo "String original: $string" +# Añadir un carácter al final de la cadena +string+="!" # Inserción +# Imprimir la cadena después de la inserción +echo "String después de inserción: $string" +# Eliminar parte de la cadena (mantener solo los primeros 5 caracteres) +string=${string:0:5} # Borrado +# Imprimir la cadena después del borrado +echo "String después de borrado: $string" +# Actualizar la cadena completa +string="Hola Bash" # Actualización +# Imprimir la cadena después de la actualización +echo "String después de actualización: $string" + +# Numbers (números) +# Definir un número +num=5 +# Imprimir el número original +echo "Número original: $num" +# Incrementar el número en 5 +((num+=5)) # Inserción (suma) +# Imprimir el número después de la inserción +echo "Número después de inserción: $num" +# Decrementar el número en 3 +((num-=3)) # Borrado (resta) +# Imprimir el número después del borrado +echo "Número después de borrado: $num" +# Actualizar el número a 10 +num=10 # Actualización +# Imprimir el número después de la actualización +echo "Número después de actualización: $num" + +# Agenda de contactos +declare -A agenda + +# Función para insertar un contacto +function insertar_contacto { + read -p "Nombre: " nombre + read -p "Número de teléfono: " telefono + # Validar que el número de teléfono sea numérico y tenga hasta 11 dígitos + if [[ ! $telefono =~ ^[0-9]{1,11}$ ]]; then + echo "Número de teléfono inválido." + return + fi + # Añadir el contacto a la agenda + agenda[$nombre]=$telefono + echo "Contacto añadido." +} + +# Función para buscar un contacto +function buscar_contacto { + read -p "Nombre: " nombre + # Verificar si el contacto existe en la agenda + if [[ -z ${agenda[$nombre]} ]]; then + echo "Contacto no encontrado." + else + echo "Teléfono de $nombre: ${agenda[$nombre]}" + fi +} + +# Función para actualizar un contacto +function actualizar_contacto { + read -p "Nombre: " nombre + # Verificar si el contacto existe en la agenda + if [[ -z ${agenda[$nombre]} ]]; then + echo "Contacto no encontrado." + return + fi + read -p "Nuevo número de teléfono: " telefono + # Validar que el nuevo número de teléfono sea numérico y tenga hasta 11 dígitos + if [[ ! $telefono =~ ^[0-9]{1,11}$ ]]; then + echo "Número de teléfono inválido." + return + fi + # Actualizar el contacto en la agenda + agenda[$nombre]=$telefono + echo "Contacto actualizado." +} + +# Función para eliminar un contacto +function eliminar_contacto { + read -p "Nombre: " nombre + # Verificar si el contacto existe en la agenda + if [[ -z ${agenda[$nombre]} ]]; entonces + echo "Contacto no encontrado." + return + fi + # Eliminar el contacto de la agenda + unset agenda[$nombre] + echo "Contacto eliminado." +} + +# Función para mostrar el menú de opciones +function mostrar_menu { + echo "1. Insertar contacto" + echo "2. Buscar contacto" + echo "3. Actualizar contacto" + echo "4. Eliminar contacto" + echo "5. Salir" +} + +# Bucle principal para mostrar el menú y ejecutar las opciones seleccionadas +while true; do + mostrar_menu + read -p "Seleccione una opción: " opcion + case $opcion in + 1) insertar_contacto ;; + 2) buscar_contacto ;; + 3) actualizar_contacto ;; + 4) eliminar_contacto ;; + 5) break ;; + *) echo "Opción inválida." ;; + esac +done \ No newline at end of file From 7998b4594bf85a108a24a8eff123f09caf33b30c Mon Sep 17 00:00:00 2001 From: miguelex Date: Mon, 9 Sep 2024 09:37:59 +0200 Subject: [PATCH 36/53] #36 - php --- .../java/miguelex.java | 289 ++++++++++++++++++ .../javascript/miguelex.js | 251 +++++++++++++++ .../php/miguelex.php | 245 +++++++++++++++ .../python/miguelex.py | 228 ++++++++++++++ .../typescript/miguelex.ts | 266 ++++++++++++++++ 5 files changed, 1279 insertions(+) create mode 100644 Roadmap/36 - EL SOMBRERO SELECCIONADOR/java/miguelex.java create mode 100644 Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/miguelex.js create mode 100644 Roadmap/36 - EL SOMBRERO SELECCIONADOR/php/miguelex.php create mode 100644 Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/miguelex.py create mode 100644 Roadmap/36 - EL SOMBRERO SELECCIONADOR/typescript/miguelex.ts diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/java/miguelex.java b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/java/miguelex.java new file mode 100644 index 0000000000..cdf8e2b615 --- /dev/null +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/java/miguelex.java @@ -0,0 +1,289 @@ +import java.util.*; + +class Casa { + private String nombre; + private int puntos; + + public Casa(String nombre) { + this.nombre = nombre; + this.puntos = 0; + } + + public String getNombre() { + return nombre; + } + + public void agregarPuntos(int puntos) { + this.puntos += puntos; + } + + public int getPuntos() { + return puntos; + } +} + +class Alumno { + private String nombre; + + public Alumno(String nombre) { + this.nombre = nombre; + } + + public String getNombre() { + return nombre; + } +} + +class Pregunta { + private String pregunta; + private List opciones; + + public Pregunta(String pregunta, List opciones) { + this.pregunta = pregunta; + this.opciones = opciones; + } + + public void mostrarPregunta() { + System.out.println(pregunta); + for (int i = 0; i < opciones.size(); i++) { + System.out.println((i + 1) + ": " + opciones.get(i).getTexto()); + } + } + + public String obtenerCasaSegunRespuesta(int respuesta) { + return opciones.get(respuesta - 1).getCasa(); + } +} + +class Opcion { + private String texto; + private String casa; + + public Opcion(String texto, String casa) { + this.texto = texto; + this.casa = casa; + } + + public String getTexto() { + return texto; + } + + public String getCasa() { + return casa; + } +} + +class SombreroSeleccionador { + private Map casas; + private List preguntas; + + public SombreroSeleccionador(Map casas, List preguntas) { + this.casas = casas; + this.preguntas = preguntas; + } + + public void asignarCasa(Alumno alumno) { + List preguntasSeleccionadas = seleccionarPreguntas(); + Scanner scanner = new Scanner(System.in); + + for (Pregunta pregunta : preguntasSeleccionadas) { + pregunta.mostrarPregunta(); + int respuesta = leerRespuesta(scanner); + String casa = pregunta.obtenerCasaSegunRespuesta(respuesta); + casas.get(casa).agregarPuntos(1); + } + + mostrarResultado(alumno); + scanner.close(); + } + + private List seleccionarPreguntas() { + List preguntasSeleccionadas = new ArrayList<>(); + Set indicesSeleccionados = new HashSet<>(); + Random random = new Random(); + + while (preguntasSeleccionadas.size() < 10) { + int indice = random.nextInt(preguntas.size()); + if (!indicesSeleccionados.contains(indice)) { + indicesSeleccionados.add(indice); + preguntasSeleccionadas.add(preguntas.get(indice)); + } + } + + return preguntasSeleccionadas; + } + + private int leerRespuesta(Scanner scanner) { + int respuesta = 0; + while (respuesta < 1 || respuesta > 4) { + System.out.print("Selecciona una opción (1-4): "); + respuesta = scanner.nextInt(); + } + return respuesta; + } + + private void mostrarResultado(Alumno alumno) { + List casasOrdenadas = new ArrayList<>(casas.values()); + casasOrdenadas.sort(Comparator.comparingInt(Casa::getPuntos).reversed()); + + int maxPuntos = casasOrdenadas.get(0).getPuntos(); + List ganadoras = new ArrayList<>(); + for (Casa casa : casasOrdenadas) { + if (casa.getPuntos() == maxPuntos) { + ganadoras.add(casa); + } + } + + Casa ganadora; + if (ganadoras.size() > 1) { + System.out.println("\n\nLa decisión fue difícil..."); + Random random = new Random(); + ganadora = ganadoras.get(random.nextInt(ganadoras.size())); + } else { + ganadora = ganadoras.get(0); + } + + System.out.println("\n\n" + alumno.getNombre() + ", el sombrero seleccionador te ha asignado a la casa " + ganadora.getNombre().toUpperCase() + "!!!!\n"); + } +} + +public class miguelex { + public static void main(String[] args) { + Map casas = new HashMap<>(); + casas.put("frontend", new Casa("Frontend")); + casas.put("backend", new Casa("Backend")); + casas.put("mobile", new Casa("Mobile")); + casas.put("data", new Casa("Data")); + + List preguntas = Arrays.asList( + new Pregunta("¿Qué prefieres?", Arrays.asList( + new Opcion("Diseñar interfaces", "frontend"), + new Opcion("Crear APIs", "backend"), + new Opcion("Desarrollar apps móviles", "mobile"), + new Opcion("Analizar datos", "data") + )), + new Pregunta("¿Cuál es tu lenguaje de programación favorito?", Arrays.asList( + new Opcion("JavaScript", "frontend"), + new Opcion("Python", "backend"), + new Opcion("Kotlin", "mobile"), + new Opcion("R", "data") + )), + new Pregunta("¿Qué herramienta utilizas más a menudo?", Arrays.asList( + new Opcion("Figma o Sketch", "frontend"), + new Opcion("Docker o Kubernetes", "backend"), + new Opcion("Android Studio o Xcode", "mobile"), + new Opcion("Jupyter Notebooks o Excel", "data") + )), + new Pregunta("¿Qué te interesa más aprender?", Arrays.asList( + new Opcion("HTML/CSS y JavaScript avanzado", "frontend"), + new Opcion("Patrones de diseño y arquitectura de software", "backend"), + new Opcion("Programación nativa para dispositivos móviles", "mobile"), + new Opcion("Estadística y Machine Learning", "data") + )), + new Pregunta("¿Qué tipo de proyecto te gustaría liderar?", Arrays.asList( + new Opcion("Un sitio web interactivo y atractivo", "frontend"), + new Opcion("Una plataforma escalable con microservicios", "backend"), + new Opcion("Una app móvil innovadora", "mobile"), + new Opcion("Un sistema de recomendación basado en datos", "data") + )), + new Pregunta("¿Qué es lo más importante para ti en un proyecto?", Arrays.asList( + new Opcion("La experiencia de usuario", "frontend"), + new Opcion("El rendimiento y la escalabilidad", "backend"), + new Opcion("La adaptabilidad a diferentes dispositivos", "mobile"), + new Opcion("La precisión de los análisis", "data") + )), + new Pregunta("¿Qué prefieres trabajar?", Arrays.asList( + new Opcion("En un entorno donde el diseño visual es clave", "frontend"), + new Opcion("En la lógica del negocio y la arquitectura", "backend"), + new Opcion("En apps móviles con buen rendimiento", "mobile"), + new Opcion("En el análisis y visualización de datos", "data") + )), + new Pregunta("¿Qué framework te parece más interesante?", Arrays.asList( + new Opcion("React o Angular", "frontend"), + new Opcion("Spring o Django", "backend"), + new Opcion("Flutter o React Native", "mobile"), + new Opcion("TensorFlow o Pandas", "data") + )), + new Pregunta("¿Qué tipo de reto disfrutas más?", Arrays.asList( + new Opcion("Hacer que un sitio web sea accesible y rápido", "frontend"), + new Opcion("Optimizar la comunicación entre servicios", "backend"), + new Opcion("Mejorar la experiencia del usuario en móviles", "mobile"), + new Opcion("Encontrar patrones ocultos en los datos", "data") + )), + new Pregunta("¿Qué prefieres resolver?", Arrays.asList( + new Opcion("Problemas de diseño y maquetación", "frontend"), + new Opcion("Problemas de concurrencia y escalabilidad", "backend"), + new Opcion("Problemas de rendimiento en aplicaciones móviles", "mobile"), + new Opcion("Problemas de predicción y análisis de datos", "data") + )), + new Pregunta("¿Qué es lo que más te emociona en tecnología?", Arrays.asList( + new Opcion("La evolución de las interfaces de usuario", "frontend"), + new Opcion("La innovación en la arquitectura de software", "backend"), + new Opcion("Las nuevas capacidades de los dispositivos móviles", "mobile"), + new Opcion("Los avances en inteligencia artificial y análisis de datos", "data") + )), + new Pregunta("¿Qué te gusta hacer en tu tiempo libre?", Arrays.asList( + new Opcion("Diseñar sitios web personales o interfaces", "frontend"), + new Opcion("Hacer proyectos con servidores y APIs", "backend"), + new Opcion("Crear apps móviles para resolver problemas cotidianos", "mobile"), + new Opcion("Hacer análisis de datos para tomar decisiones mejor informadas", "data") + )), + new Pregunta("¿Qué te gustaría dominar?", Arrays.asList( + new Opcion("Animaciones y transiciones en la web", "frontend"), + new Opcion("Arquitectura de microservicios", "backend"), + new Opcion("Optimización de aplicaciones móviles", "mobile"), + new Opcion("Modelos predictivos y análisis de datos", "data") + )), + new Pregunta("¿Qué tipo de problema prefieres resolver en un hackathon?", Arrays.asList( + new Opcion("Mejorar la interfaz de usuario de una aplicación", "frontend"), + new Opcion("Optimizar el rendimiento de una API", "backend"), + new Opcion("Crear una aplicación móvil desde cero", "mobile"), + new Opcion("Generar insights a partir de grandes conjuntos de datos", "data") + )), + new Pregunta("¿Qué prefieres al trabajar en equipo?", Arrays.asList( + new Opcion("Encargarte de la parte visual y de interacción del usuario", "frontend"), + new Opcion("Asegurarte de que la lógica y los datos fluyan correctamente", "backend"), + new Opcion("Hacer que la app funcione bien en diferentes dispositivos", "mobile"), + new Opcion("Proveer métricas y análisis para tomar mejores decisiones", "data") + )), + new Pregunta("¿Cuál es tu prioridad al optimizar código?", Arrays.asList( + new Opcion("Que la interfaz cargue rápido y sea amigable", "frontend"), + new Opcion("Que los servicios backend sean escalables y eficientes", "backend"), + new Opcion("Que la app móvil consuma pocos recursos y sea fluida", "mobile"), + new Opcion("Que el procesamiento de datos sea rápido y preciso", "data") + )), + new Pregunta("¿Qué prefieres al probar una aplicación?", Arrays.asList( + new Opcion("Verificar que el diseño y la usabilidad sean impecables", "frontend"), + new Opcion("Asegurar que las funcionalidades y la lógica sean correctas", "backend"), + new Opcion("Revisar que la app funcione correctamente en múltiples dispositivos", "mobile"), + new Opcion("Validar que los resultados de los análisis sean exactos", "data") + )), + new Pregunta("¿Qué tipo de proyectos sigues en la industria?", Arrays.asList( + new Opcion("Proyectos de diseño web innovador y UX", "frontend"), + new Opcion("Nuevas tecnologías de servidores y backends", "backend"), + new Opcion("Aplicaciones móviles disruptivas y eficientes", "mobile"), + new Opcion("Proyectos de inteligencia artificial y ciencia de datos", "data") + )), + new Pregunta("¿Qué harías para mejorar una plataforma existente?", Arrays.asList( + new Opcion("Mejorar la apariencia y usabilidad de la interfaz", "frontend"), + new Opcion("Optimizar el rendimiento de las consultas y los servidores", "backend"), + new Opcion("Hacer que la plataforma sea accesible desde dispositivos móviles", "mobile"), + new Opcion("Incluir más análisis de datos para obtener mejor información", "data") + )), + new Pregunta("¿Qué aspecto del desarrollo de software te parece más retador?", Arrays.asList( + new Opcion("Hacer que una aplicación web sea visualmente atractiva", "frontend"), + new Opcion("Crear sistemas backend que manejen millones de usuarios", "backend"), + new Opcion("Optimizar la app móvil para diferentes sistemas operativos", "mobile"), + new Opcion("Gestionar grandes volúmenes de datos y extraer conclusiones útiles", "data") + )) + ); + + Scanner scanner = new Scanner(System.in); + System.out.print("Por favor, introduce tu nombre: "); + String nombreAlumno = scanner.nextLine(); + Alumno alumno = new Alumno(nombreAlumno); + + SombreroSeleccionador sombrero = new SombreroSeleccionador(casas, preguntas); + sombrero.asignarCasa(alumno); + } +} diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/miguelex.js b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/miguelex.js new file mode 100644 index 0000000000..8a59254143 --- /dev/null +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/miguelex.js @@ -0,0 +1,251 @@ +const readline = require('readline'); + +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout +}); + +class Casa { + constructor(nombre) { + this.nombre = nombre; + this.puntos = 0; + } + + getNombre() { + return this.nombre; + } + + agregarPuntos(puntos) { + this.puntos += puntos; + } + + getPuntos() { + return this.puntos; + } +} + +class Alumno { + constructor(nombre) { + this.nombre = nombre; + } + + getNombre() { + return this.nombre; + } +} + +class Pregunta { + constructor(pregunta, opciones) { + this.pregunta = pregunta; + this.opciones = opciones; + } + + mostrarPregunta() { + console.log(this.pregunta); + this.opciones.forEach((opcion, index) => { + console.log(`${index + 1}: ${opcion.texto}`); + }); + } + + obtenerCasaSegunRespuesta(respuesta) { + return this.opciones[respuesta - 1].casa; + } +} + +class SombreroSeleccionador { + constructor(casas, preguntas) { + this.casas = casas; + this.preguntas = preguntas; + } + + async asignarCasa(alumno) { + const preguntasSeleccionadas = this.seleccionarPreguntas(); + for (let pregunta of preguntasSeleccionadas) { + pregunta.mostrarPregunta(); + let respuesta = await this.leerRespuesta(); + let casa = pregunta.obtenerCasaSegunRespuesta(respuesta); + this.casas[casa].agregarPuntos(1); + } + + this.mostrarResultado(alumno); + rl.close(); + } + + seleccionarPreguntas() { + const preguntasSeleccionadas = []; + const indicesSeleccionados = new Set(); + + while (preguntasSeleccionadas.length < 10) { + let indice = Math.floor(Math.random() * this.preguntas.length); + if (!indicesSeleccionados.has(indice)) { + indicesSeleccionados.add(indice); + preguntasSeleccionadas.push(this.preguntas[indice]); + } + } + + return preguntasSeleccionadas; + } + + async leerRespuesta() { + return new Promise((resolve) => { + rl.question("Selecciona una opción (1-4): ", (respuesta) => { + resolve(parseInt(respuesta)); + }); + }); + } + + mostrarResultado(alumno) { + const casasOrdenadas = Object.values(this.casas).sort((a, b) => b.getPuntos() - a.getPuntos()); + + const maxPuntos = casasOrdenadas[0].getPuntos(); + const ganadoras = casasOrdenadas.filter(casa => casa.getPuntos() === maxPuntos); + + let ganadora; + if (ganadoras.length > 1) { + console.log("\n\nLa decisión fue difícil..."); + ganadora = ganadoras[Math.floor(Math.random() * ganadoras.length)]; + } else { + ganadora = ganadoras[0]; + } + + console.log(`\n\n ${alumno.getNombre()}, el sombrero seleccionador te ha asignado a la casa ${ganadora.getNombre().toUpperCase()}!!!!\n`); + } +} + + +const casas = { + 'frontend': new Casa('Frontend'), + 'backend': new Casa('Backend'), + 'mobile': new Casa('Mobile'), + 'data': new Casa('Data') +}; + +const preguntas = [ + new Pregunta("¿Qué prefieres?", [ + { texto: 'Diseñar interfaces', casa: 'frontend' }, + { texto: 'Crear APIs', casa: 'backend' }, + { texto: 'Desarrollar apps móviles', casa: 'mobile' }, + { texto: 'Analizar datos', casa: 'data' } + ]), + new Pregunta("¿Cuál es tu lenguaje de programación favorito?", [ + { texto: 'JavaScript', casa: 'frontend' }, + { texto: 'Python', casa: 'backend' }, + { texto: 'Kotlin', casa: 'mobile' }, + { texto: 'R', casa: 'data' } + ]), + new Pregunta("¿Qué herramienta utilizas más a menudo?", [ + { texto: 'Figma o Sketch', casa: 'frontend' }, + { texto: 'Docker o Kubernetes', casa: 'backend' }, + { texto: 'Android Studio o Xcode', casa: 'mobile' }, + { texto: 'Jupyter Notebooks o Excel', casa: 'data' } + ]), + new Pregunta("¿Qué te interesa más aprender?", [ + { texto: 'HTML/CSS y JavaScript avanzado', casa: 'frontend' }, + { texto: 'Patrones de diseño y arquitectura de software', casa: 'backend' }, + { texto: 'Programación nativa para dispositivos móviles', casa: 'mobile' }, + { texto: 'Estadística y Machine Learning', casa: 'data' } + ]), + new Pregunta("¿Qué tipo de proyecto te gustaría liderar?", [ + { texto: 'Un sitio web interactivo y atractivo', casa: 'frontend' }, + { texto: 'Una plataforma escalable con microservicios', casa: 'backend' }, + { texto: 'Una app móvil innovadora', casa: 'mobile' }, + { texto: 'Un sistema de recomendación basado en datos', casa: 'data' } + ]), + new Pregunta("¿Qué es lo más importante para ti en un proyecto?", [ + { texto: 'La experiencia de usuario', casa: 'frontend' }, + { texto: 'El rendimiento y la escalabilidad', casa: 'backend' }, + { texto: 'La adaptabilidad a diferentes dispositivos', casa: 'mobile' }, + { texto: 'La precisión de los análisis', casa: 'data' } + ]), + new Pregunta("¿Qué prefieres trabajar?", [ + {texto : 'En un entorno donde el diseño visual es clave', casa :'frontend'}, + {texto : 'En la lógica del negocio y la arquitectura', casa :'backend'}, + {texto : 'En apps móviles con buen rendimiento', casa :'mobile'}, + {texto : 'En el análisis y visualización de datos', casa :'data'} + ]), + new Pregunta("¿Qué framework te parece más interesante?", [ + {texto: 'React o Angular', casa :'frontend'}, + {texto : 'Spring o Django', casa :'backend'}, + {texto : 'Flutter o React Native', casa :'mobile'}, + {texto : 'TensorFlow o Pandas', casa :'data'} + ]), + new Pregunta("¿Qué tipo de reto disfrutas más?", [ + {texto : 'Hacer que un sitio web sea accesible y rápido', casa :'frontend'}, + {texto : 'Optimizar la comunicación entre servicios', casa :'backend'}, + {texto : 'Mejorar la experiencia del usuario en móviles', casa :'mobile'}, + {texto : 'Encontrar patrones ocultos en los datos', casa :'data'} + ]), + new Pregunta("¿Qué prefieres resolver?", [ + {texto : 'Problemas de diseño y maquetación', casa :'frontend'}, + {texto : 'Problemas de concurrencia y escalabilidad', casa :'backend'}, + {texto : 'Problemas de rendimiento en aplicaciones móviles', casa :'mobile'}, + {texto : 'Problemas de predicción y análisis de datos', casa :'data'} + ]), + new Pregunta("¿Qué es lo que más te emociona en tecnología?", [ + {texto : 'La evolución de las interfaces de usuario', casa :'frontend'}, + {texto : 'La innovación en la arquitectura de software', casa :'backend'}, + {texto : 'Las nuevas capacidades de los dispositivos móviles', casa :'mobile'}, + {texto : 'Los avances en inteligencia artificial y análisis de datos', casa : 'data'} + ]), + new Pregunta("¿Qué te gusta hacer en tu tiempo libre?", [ + {texto : 'Diseñar sitios web personales o interfaces', casa: 'frontend'}, + {texto : 'Hacer proyectos con servidores y APIs', casa: 'backend'}, + {texto : 'Crear apps móviles para resolver problemas cotidianos', casa: 'mobile'}, + {texto : 'Hacer análisis de datos para tomar decisiones mejor informadas', casa: 'data'} + ]), + new Pregunta("¿Qué te gustaría dominar?", [ + {texto : 'Animaciones y transiciones en la web', casa: 'frontend'}, + {texto : 'Arquitectura de microservicios', casa: 'backend'}, + {texto : 'Optimización de aplicaciones móviles', casa: 'mobile'}, + {texto : 'Modelos predictivos y análisis de datos', casa: 'data'} + ]), + new Pregunta("¿Qué tipo de problema prefieres resolver en un hackathon?", [ + {texto : 'Mejorar la interfaz de usuario de una aplicación', casa: 'frontend'}, + {texto : 'Optimizar el rendimiento de una API', casa: 'backend'}, + {texto : 'Crear una aplicación móvil desde cero', casa: 'mobile'}, + {texto : 'Generar insights a partir de grandes conjuntos de datos', casa: 'data'} + ]), + new Pregunta("¿Qué prefieres al trabajar en equipo?", [ + {texto : 'Encargarte de la parte visual y de interacción del usuario', casa: 'frontend'}, + {texto : 'Asegurarte de que la lógica y los datos fluyan correctamente', casa: 'backend'}, + {texto : 'Hacer que la app funcione bien en diferentes dispositivos', casa: 'mobile'}, + {texto : 'Proveer métricas y análisis para tomar mejores decisiones', casa: 'data'} + ]), + new Pregunta("¿Cuál es tu prioridad al optimizar código?", [ + {texto : 'Que la interfaz cargue rápido y sea amigable', casa: 'frontend'}, + {texto : 'Que los servicios backend sean escalables y eficientes', casa: 'backend'}, + {texto : 'Que la app móvil consuma pocos recursos y sea fluida', casa: 'mobile'}, + {texto : 'Que el procesamiento de datos sea rápido y preciso', casa: 'data'} + ]), + new Pregunta("¿Qué prefieres al probar una aplicación?", [ + {texto : 'Verificar que el diseño y la usabilidad sean impecables', casa: 'frontend'}, + {texto : 'Asegurar que las funcionalidades y la lógica sean correctas', casa :'backend'}, + {texto : 'Revisar que la app funcione correctamente en múltiples dispositivos', casa : 'mobile'}, + {texto : 'Validar que los resultados de los análisis sean exactos', casa : 'data'} + ]), + new Pregunta("¿Qué tipo de proyectos sigues en la industria?", [ + {texto : 'Proyectos de diseño web innovador y UX', casa : 'frontend'}, + {texto : 'Nuevas tecnologías de servidores y backends', casa : 'backend'}, + {texto : 'Aplicaciones móviles disruptivas y eficientes', casa : 'mobile'}, + {texto : 'Proyectos de inteligencia artificial y ciencia de datos', casa : 'data'} + ]), + new Pregunta("¿Qué harías para mejorar una plataforma existente?", [ + {texto : 'Mejorar la apariencia y usabilidad de la interfaz', casa : 'frontend'}, + {texto : 'Optimizar el rendimiento de las consultas y los servidores', casa : 'backend'}, + {texto : 'Hacer que la plataforma sea accesible desde dispositivos móviles', casa : 'mobile'}, + {texto : 'Incluir más análisis de datos para obtener mejor información', casa : 'data'} + ]), + new Pregunta("¿Qué aspecto del desarrollo de software te parece más retador?", [ + {texto : 'Hacer que una aplicación web sea visualmente atractiva', casa : 'frontend'}, + {texto : 'Crear sistemas backend que manejen millones de usuarios', casa : 'backend'}, + {texto : 'Optimizar la app móvil para diferentes sistemas operativos', casa : 'mobile'}, + {texto : 'Gestionar grandes volúmenes de datos y extraer conclusiones útiles', casa : 'data'} + ]), +]; + +rl.question("Por favor, introduce tu nombre: ", (nombreAlumno) => { + const alumno = new Alumno(nombreAlumno); + + const sombrero = new SombreroSeleccionador(casas, preguntas); + sombrero.asignarCasa(alumno); +}); diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/php/miguelex.php b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/php/miguelex.php new file mode 100644 index 0000000000..264d6dc23d --- /dev/null +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/php/miguelex.php @@ -0,0 +1,245 @@ +nombre = $nombre; + } + + public function getNombre(): string { + return $this->nombre; + } + + public function agregarPuntos(int $puntos): void { + $this->puntos += $puntos; + } + + public function getPuntos(): int { + return $this->puntos; + } +} + +class Alumno { + private string $nombre; + + public function __construct(string $nombre) { + $this->nombre = $nombre; + } + + public function getNombre(): string { + return $this->nombre; + } +} + +class Pregunta { + private string $pregunta; + private array $opciones; // ['opción' => 'Casa'] + + public function __construct(string $pregunta, array $opciones) { + $this->pregunta = $pregunta; + $this->opciones = $opciones; + } + + public function mostrarPregunta(): void { + echo $this->pregunta . PHP_EOL; + foreach ($this->opciones as $index => $opcion) { + echo ($index + 1) . ": " . $opcion['texto'] . PHP_EOL; + } + } + + public function obtenerCasaSegunRespuesta(int $respuesta): string { + return $this->opciones[$respuesta - 1]['casa']; + } +} + +class SombreroSeleccionador { + private array $casas; + private array $preguntas; + + public function __construct(array $casas, array $preguntas) { + $this->casas = $casas; + $this->preguntas = $preguntas; + } + + public function asignarCasa(Alumno $alumno): void { + $preguntasSeleccionadas = $this->seleccionarPreguntas(); + foreach ($preguntasSeleccionadas as $pregunta) { + $pregunta->mostrarPregunta(); + $respuesta = (int)readline("Selecciona una opción (1-4): "); + $casa = $pregunta->obtenerCasaSegunRespuesta($respuesta); + $this->casas[$casa]->agregarPuntos(1); + } + + $this->mostrarResultado($alumno); + } + + private function seleccionarPreguntas(): array { + $preguntasSeleccionadas = array_rand($this->preguntas, 10); + return array_map(fn($indice) => $this->preguntas[$indice], $preguntasSeleccionadas); + } + + private function mostrarResultado(Alumno $alumno): void { + usort($this->casas, fn($casa1, $casa2) => $casa2->getPuntos() <=> $casa1->getPuntos()); + + $maxPuntos = $this->casas[0]->getPuntos(); + $ganadoras = array_filter($this->casas, fn($casa) => $casa->getPuntos() === $maxPuntos); + + if (count($ganadoras) > 1) { + echo "\n\nLa decisión fue difícil...\n"; + $ganadora = $ganadoras[array_rand($ganadoras)]; + } else { + $ganadora = $ganadoras[0]; + } + + echo "\n\n ".$alumno->getNombre() . ", el sombrero seleccionador te ha asignado a la casa " . strtoupper($ganadora->getNombre()) . "!!!!\n" . PHP_EOL; + } +} + +$casas = [ + 'frontend' => new BaseCasa('Frontend'), + 'backend' => new BaseCasa('Backend'), + 'mobile' => new BaseCasa('Mobile'), + 'data' => new BaseCasa('Data') +]; + +$preguntas = [ + new Pregunta("¿Qué prefieres?", [ + ['texto' => 'Diseñar interfaces', 'casa' => 'frontend'], + ['texto' => 'Crear APIs', 'casa' => 'backend'], + ['texto' => 'Desarrollar apps móviles', 'casa' => 'mobile'], + ['texto' => 'Analizar datos', 'casa' => 'data'] + ]), + new Pregunta("¿Cuál es tu lenguaje de programación favorito?", [ + ['texto' => 'JavaScript', 'casa' => 'frontend'], + ['texto' => 'Python', 'casa' => 'backend'], + ['texto' => 'Kotlin', 'casa' => 'mobile'], + ['texto' => 'R', 'casa' => 'data'] + ]), + new Pregunta("¿Qué herramienta utilizas más a menudo?", [ + ['texto' => 'Figma o Sketch', 'casa' => 'frontend'], + ['texto' => 'Docker o Kubernetes', 'casa' => 'backend'], + ['texto' => 'Android Studio o Xcode', 'casa' => 'mobile'], + ['texto' => 'Jupyter Notebooks o Excel', 'casa' => 'data'] + ]), + new Pregunta("¿Qué te interesa más aprender?", [ + ['texto' => 'HTML/CSS y JavaScript avanzado', 'casa' => 'frontend'], + ['texto' => 'Patrones de diseño y arquitectura de software', 'casa' => 'backend'], + ['texto' => 'Programación nativa para dispositivos móviles', 'casa' => 'mobile'], + ['texto' => 'Estadística y Machine Learning', 'casa' => 'data'] + ]), + new Pregunta("¿Qué tipo de proyecto te gustaría liderar?", [ + ['texto' => 'Un sitio web interactivo y atractivo', 'casa' => 'frontend'], + ['texto' => 'Una plataforma escalable con microservicios', 'casa' => 'backend'], + ['texto' => 'Una app móvil innovadora', 'casa' => 'mobile'], + ['texto' => 'Un sistema de recomendación basado en datos', 'casa' => 'data'] + ]), + new Pregunta("¿Qué es lo más importante para ti en un proyecto?", [ + ['texto' => 'La experiencia de usuario', 'casa' => 'frontend'], + ['texto' => 'El rendimiento y la escalabilidad', 'casa' => 'backend'], + ['texto' => 'La adaptabilidad a diferentes dispositivos', 'casa' => 'mobile'], + ['texto' => 'La precisión de los análisis', 'casa' => 'data'] + ]), + new Pregunta("¿Qué prefieres trabajar?", [ + ['texto' => 'En un entorno donde el diseño visual es clave', 'casa' => 'frontend'], + ['texto' => 'En la lógica del negocio y la arquitectura', 'casa' => 'backend'], + ['texto' => 'En apps móviles con buen rendimiento', 'casa' => 'mobile'], + ['texto' => 'En el análisis y visualización de datos', 'casa' => 'data'] + ]), + new Pregunta("¿Qué framework te parece más interesante?", [ + ['texto' => 'React o Angular', 'casa' => 'frontend'], + ['texto' => 'Spring o Django', 'casa' => 'backend'], + ['texto' => 'Flutter o React Native', 'casa' => 'mobile'], + ['texto' => 'TensorFlow o Pandas', 'casa' => 'data'] + ]), + new Pregunta("¿Qué tipo de reto disfrutas más?", [ + ['texto' => 'Hacer que un sitio web sea accesible y rápido', 'casa' => 'frontend'], + ['texto' => 'Optimizar la comunicación entre servicios', 'casa' => 'backend'], + ['texto' => 'Mejorar la experiencia del usuario en móviles', 'casa' => 'mobile'], + ['texto' => 'Encontrar patrones ocultos en los datos', 'casa' => 'data'] + ]), + new Pregunta("¿Qué prefieres resolver?", [ + ['texto' => 'Problemas de diseño y maquetación', 'casa' => 'frontend'], + ['texto' => 'Problemas de concurrencia y escalabilidad', 'casa' => 'backend'], + ['texto' => 'Problemas de rendimiento en aplicaciones móviles', 'casa' => 'mobile'], + ['texto' => 'Problemas de predicción y análisis de datos', 'casa' => 'data'] + ]), + new Pregunta("¿Qué es lo que más te emociona en tecnología?", [ + ['texto' => 'La evolución de las interfaces de usuario', 'casa' => 'frontend'], + ['texto' => 'La innovación en la arquitectura de software', 'casa' => 'backend'], + ['texto' => 'Las nuevas capacidades de los dispositivos móviles', 'casa' => 'mobile'], + ['texto' => 'Los avances en inteligencia artificial y análisis de datos', 'casa' => 'data'] + ]), + new Pregunta("¿Qué te gusta hacer en tu tiempo libre?", [ + ['texto' => 'Diseñar sitios web personales o interfaces', 'casa' => 'frontend'], + ['texto' => 'Hacer proyectos con servidores y APIs', 'casa' => 'backend'], + ['texto' => 'Crear apps móviles para resolver problemas cotidianos', 'casa' => 'mobile'], + ['texto' => 'Hacer análisis de datos para tomar decisiones mejor informadas', 'casa' => 'data'] + ]), + new Pregunta("¿Qué te gustaría dominar?", [ + ['texto' => 'Animaciones y transiciones en la web', 'casa' => 'frontend'], + ['texto' => 'Arquitectura de microservicios', 'casa' => 'backend'], + ['texto' => 'Optimización de aplicaciones móviles', 'casa' => 'mobile'], + ['texto' => 'Modelos predictivos y análisis de datos', 'casa' => 'data'] + ]), + new Pregunta("¿Qué tipo de problema prefieres resolver en un hackathon?", [ + ['texto' => 'Mejorar la interfaz de usuario de una aplicación', 'casa' => 'frontend'], + ['texto' => 'Optimizar el rendimiento de una API', 'casa' => 'backend'], + ['texto' => 'Crear una aplicación móvil desde cero', 'casa' => 'mobile'], + ['texto' => 'Generar insights a partir de grandes conjuntos de datos', 'casa' => 'data'] + ]), + new Pregunta("¿Qué prefieres al trabajar en equipo?", [ + ['texto' => 'Encargarte de la parte visual y de interacción del usuario', 'casa' => 'frontend'], + ['texto' => 'Asegurarte de que la lógica y los datos fluyan correctamente', 'casa' => 'backend'], + ['texto' => 'Hacer que la app funcione bien en diferentes dispositivos', 'casa' => 'mobile'], + ['texto' => 'Proveer métricas y análisis para tomar mejores decisiones', 'casa' => 'data'] + ]), + new Pregunta("¿Cuál es tu prioridad al optimizar código?", [ + ['texto' => 'Que la interfaz cargue rápido y sea amigable', 'casa' => 'frontend'], + ['texto' => 'Que los servicios backend sean escalables y eficientes', 'casa' => 'backend'], + ['texto' => 'Que la app móvil consuma pocos recursos y sea fluida', 'casa' => 'mobile'], + ['texto' => 'Que el procesamiento de datos sea rápido y preciso', 'casa' => 'data'] + ]), + new Pregunta("¿Qué prefieres al probar una aplicación?", [ + ['texto' => 'Verificar que el diseño y la usabilidad sean impecables', 'casa' => 'frontend'], + ['texto' => 'Asegurar que las funcionalidades y la lógica sean correctas', 'casa' => 'backend'], + ['texto' => 'Revisar que la app funcione correctamente en múltiples dispositivos', 'casa' => 'mobile'], + ['texto' => 'Validar que los resultados de los análisis sean exactos', 'casa' => 'data'] + ]), + new Pregunta("¿Qué tipo de proyectos sigues en la industria?", [ + ['texto' => 'Proyectos de diseño web innovador y UX', 'casa' => 'frontend'], + ['texto' => 'Nuevas tecnologías de servidores y backends', 'casa' => 'backend'], + ['texto' => 'Aplicaciones móviles disruptivas y eficientes', 'casa' => 'mobile'], + ['texto' => 'Proyectos de inteligencia artificial y ciencia de datos', 'casa' => 'data'] + ]), + new Pregunta("¿Qué harías para mejorar una plataforma existente?", [ + ['texto' => 'Mejorar la apariencia y usabilidad de la interfaz', 'casa' => 'frontend'], + ['texto' => 'Optimizar el rendimiento de las consultas y los servidores', 'casa' => 'backend'], + ['texto' => 'Hacer que la plataforma sea accesible desde dispositivos móviles', 'casa' => 'mobile'], + ['texto' => 'Incluir más análisis de datos para obtener mejor información', 'casa' => 'data'] + ]), + new Pregunta("¿Qué aspecto del desarrollo de software te parece más retador?", [ + ['texto' => 'Hacer que una aplicación web sea visualmente atractiva', 'casa' => 'frontend'], + ['texto' => 'Crear sistemas backend que manejen millones de usuarios', 'casa' => 'backend'], + ['texto' => 'Optimizar la app móvil para diferentes sistemas operativos', 'casa' => 'mobile'], + ['texto' => 'Gestionar grandes volúmenes de datos y extraer conclusiones útiles', 'casa' => 'data'] + ]), + +]; + + +echo "Bienvenido al sombrero seleccionador de Hogwarts de programación.\n"; +$nombreAlumno = readline("Por favor, introduce tu nombre: "); +$alumno = new Alumno($nombreAlumno); + +$sombrero = new SombreroSeleccionador($casas, $preguntas); +$sombrero->asignarCasa($alumno); + + diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/miguelex.py b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/miguelex.py new file mode 100644 index 0000000000..f18b4d0e66 --- /dev/null +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/miguelex.py @@ -0,0 +1,228 @@ +import random + +class Casa: + def __init__(self, nombre): + self.nombre = nombre + self.puntos = 0 + + def get_nombre(self): + return self.nombre + + def agregar_puntos(self, puntos): + self.puntos += puntos + + def get_puntos(self): + return self.puntos + +class Alumno: + def __init__(self, nombre): + self.nombre = nombre + + def get_nombre(self): + return self.nombre + +class Pregunta: + def __init__(self, pregunta, opciones): + self.pregunta = pregunta + self.opciones = opciones + + def mostrar_pregunta(self): + print(self.pregunta) + for idx, opcion in enumerate(self.opciones): + print(f"{idx + 1}: {opcion['texto']}") + + def obtener_casa_segun_respuesta(self, respuesta): + return self.opciones[respuesta - 1]['casa'] + +class SombreroSeleccionador: + def __init__(self, casas, preguntas): + self.casas = casas + self.preguntas = preguntas + + def asignar_casa(self, alumno): + preguntas_seleccionadas = self.seleccionar_preguntas() + for pregunta in preguntas_seleccionadas: + pregunta.mostrar_pregunta() + respuesta = self.leer_respuesta() + casa = pregunta.obtener_casa_segun_respuesta(respuesta) + self.casas[casa].agregar_puntos(1) + + self.mostrar_resultado(alumno) + + def seleccionar_preguntas(self): + preguntas_seleccionadas = [] + indices_seleccionados = set() + + while len(preguntas_seleccionadas) < 10: + indice = random.randint(0, len(self.preguntas) - 1) + if indice not in indices_seleccionados: + indices_seleccionados.add(indice) + preguntas_seleccionadas.append(self.preguntas[indice]) + + return preguntas_seleccionadas + + def leer_respuesta(self): + while True: + try: + respuesta = int(input("Selecciona una opción (1-4): ")) + if 1 <= respuesta <= 4: + return respuesta + else: + print("Por favor, elige un número entre 1 y 4.") + except ValueError: + print("Por favor, introduce un número válido.") + + def mostrar_resultado(self, alumno): + casas_ordenadas = sorted(self.casas.values(), key=lambda casa: casa.get_puntos(), reverse=True) + + max_puntos = casas_ordenadas[0].get_puntos() + ganadoras = [casa for casa in casas_ordenadas if casa.get_puntos() == max_puntos] + + if len(ganadoras) > 1: + print("\n\nLa decisión fue difícil...") + ganadora = random.choice(ganadoras) + else: + ganadora = ganadoras[0] + + print(f"\n\n{alumno.get_nombre()}, el sombrero seleccionador te ha asignado a la casa {ganadora.get_nombre().upper()}!!!!\n") + + +# Definir las casas +casas = { + 'frontend': Casa('Frontend'), + 'backend': Casa('Backend'), + 'mobile': Casa('Mobile'), + 'data': Casa('Data') +} + +# Definir las preguntas +preguntas = [ + Pregunta("¿Qué prefieres?", [ + {'texto': 'Diseñar interfaces', 'casa': 'frontend'}, + {'texto': 'Crear APIs', 'casa': 'backend'}, + {'texto': 'Desarrollar apps móviles', 'casa': 'mobile'}, + {'texto': 'Analizar datos', 'casa': 'data'} + ]), + Pregunta("¿Cuál es tu lenguaje de programación favorito?", [ + {'texto': 'JavaScript', 'casa': 'frontend'}, + {'texto': 'Python', 'casa': 'backend'}, + {'texto': 'Kotlin', 'casa': 'mobile'}, + {'texto': 'R', 'casa': 'data'} + ]), + Pregunta("¿Qué herramienta utilizas más a menudo?", [ + {'texto': 'Figma o Sketch', 'casa': 'frontend'}, + {'texto': 'Docker o Kubernetes', 'casa': 'backend'}, + {'texto': 'Android Studio o Xcode', 'casa': 'mobile'}, + {'texto': 'Jupyter Notebooks o Excel', 'casa': 'data'} + ]), + Pregunta("¿Qué te interesa más aprender?", [ + { 'texto': 'HTML/CSS y JavaScript avanzado', 'casa': 'frontend' }, + { 'texto': 'Patrones de diseño y arquitectura de software', 'casa': 'backend' }, + { 'texto': 'Programación nativa para dispositivos móviles', 'casa': 'mobile' }, + { 'texto': 'Estadística y Machine Learning', 'casa': 'data' } + ]), + Pregunta("¿Qué tipo de proyecto te gustaría liderar?", [ + { 'texto': 'Un sitio web interactivo y atractivo', 'casa': 'frontend' }, + { 'texto': 'Una plataforma escalable con microservicios', 'casa': 'backend' }, + { 'texto': 'Una app móvil innovadora', 'casa': 'mobile' }, + { 'texto': 'Un sistema de recomendación basado en datos', 'casa': 'data' } + ]), + Pregunta("¿Qué es lo más importante para ti en un proyecto?", [ + { 'texto': 'La experiencia de usuario', 'casa': 'frontend' }, + { 'texto': 'El rendimiento y la escalabilidad', 'casa': 'backend' }, + { 'texto': 'La adaptabilidad a diferentes dispositivos', 'casa': 'mobile' }, + { 'texto': 'La precisión de los análisis', 'casa': 'data' } + ]), + Pregunta("¿Qué prefieres trabajar?", [ + {'texto' : 'En un entorno donde el diseño visual es clave', 'casa' :'frontend'}, + {'texto' : 'En la lógica del negocio y la arquitectura', 'casa' :'backend'}, + {'texto' : 'En apps móviles con buen rendimiento', 'casa' :'mobile'}, + {'texto' : 'En el análisis y visualización de datos', 'casa' :'data'} + ]), + Pregunta("¿Qué framework te parece más interesante?", [ + {'texto' : 'React o Angular', 'casa' :'frontend'}, + {'texto' : 'Spring o Django', 'casa' :'backend'}, + {'texto' : 'Flutter o React Native', 'casa' :'mobile'}, + {'texto' : 'TensorFlow o Pandas', 'casa' :'data'} + ]), + Pregunta("¿Qué tipo de reto disfrutas más?", [ + {'texto' : 'Hacer que un sitio web sea accesible y rápido', 'casa' :'frontend'}, + {'texto' : 'Optimizar la comunicación entre servicios', 'casa' :'backend'}, + {'texto' : 'Mejorar la experiencia del usuario en móviles', 'casa' :'mobile'}, + {'texto' : 'Encontrar patrones ocultos en los datos', 'casa' :'data'} + ]), + Pregunta("¿Qué prefieres resolver?", [ + {'texto' : 'Problemas de diseño y maquetación', 'casa' :'frontend'}, + {'texto' : 'Problemas de concurrencia y escalabilidad', 'casa' :'backend'}, + {'texto' : 'Problemas de rendimiento en aplicaciones móviles', 'casa' :'mobile'}, + {'texto' : 'Problemas de predicción y análisis de datos', 'casa' :'data'} + ]), + Pregunta("¿Qué es lo que más te emociona en tecnología?", [ + {'texto' : 'La evolución de las interfaces de usuario', 'casa' :'frontend'}, + {'texto' : 'La innovación en la arquitectura de software', 'casa' :'backend'}, + {'texto' : 'Las nuevas capacidades de los dispositivos móviles', 'casa' :'mobile'}, + {'texto' : 'Los avances en inteligencia artificial y análisis de datos', 'casa' : 'data'} + ]), + Pregunta("¿Qué te gusta hacer en tu tiempo libre?", [ + {'texto' : 'Diseñar sitios web personales o interfaces', 'casa': 'frontend'}, + {'texto' : 'Hacer proyectos con servidores y APIs', 'casa': 'backend'}, + {'texto' : 'Crear apps móviles para resolver problemas cotidianos', 'casa': 'mobile'}, + {'texto' : 'Hacer análisis de datos para tomar decisiones mejor informadas', 'casa': 'data'} + ]), + Pregunta("¿Qué te gustaría dominar?", [ + {'texto' : 'Animaciones y transiciones en la web', 'casa': 'frontend'}, + {'texto' : 'Arquitectura de microservicios', 'casa': 'backend'}, + {'texto' : 'Optimización de aplicaciones móviles', 'casa': 'mobile'}, + {'texto' : 'Modelos predictivos y análisis de datos', 'casa': 'data'} + ]), + Pregunta("¿Qué tipo de problema prefieres resolver en un hackathon?", [ + {'texto' : 'Mejorar la interfaz de usuario de una aplicación', 'casa': 'frontend'}, + {'texto' : 'Optimizar el rendimiento de una API', 'casa': 'backend'}, + {'texto' : 'Crear una aplicación móvil desde cero', 'casa': 'mobile'}, + {'texto' : 'Generar insights a partir de grandes conjuntos de datos', 'casa': 'data'} + ]), + Pregunta("¿Qué prefieres al trabajar en equipo?", [ + {'texto' : 'Encargarte de la parte visual y de interacción del usuario', 'casa': 'frontend'}, + {'texto' : 'Asegurarte de que la lógica y los datos fluyan correctamente', 'casa': 'backend'}, + {'texto' : 'Hacer que la app funcione bien en diferentes dispositivos', 'casa': 'mobile'}, + {'texto' : 'Proveer métricas y análisis para tomar mejores decisiones', 'casa': 'data'} + ]), + Pregunta("¿Cuál es tu prioridad al optimizar código?", [ + {'texto' : 'Que la interfaz cargue rápido y sea amigable', 'casa': 'frontend'}, + {'texto' : 'Que los servicios backend sean escalables y eficientes', 'casa': 'backend'}, + {'texto' : 'Que la app móvil consuma pocos recursos y sea fluida', 'casa': 'mobile'}, + {'texto' : 'Que el procesamiento de datos sea rápido y preciso', 'casa': 'data'} + ]), + Pregunta("¿Qué prefieres al probar una aplicación?", [ + {'texto' : 'Verificar que el diseño y la usabilidad sean impecables', 'casa': 'frontend'}, + {'texto' : 'Asegurar que las funcionalidades y la lógica sean correctas', 'casa' :'backend'}, + {'texto' : 'Revisar que la app funcione correctamente en múltiples dispositivos', 'casa' : 'mobile'}, + {'texto' : 'Validar que los resultados de los análisis sean exactos', 'casa' : 'data'} + ]), + Pregunta("¿Qué tipo de proyectos sigues en la industria?", [ + {'texto' : 'Proyectos de diseño web innovador y UX', 'casa' : 'frontend'}, + {'texto' : 'Nuevas tecnologías de servidores y backends', 'casa' : 'backend'}, + {'texto' : 'Aplicaciones móviles disruptivas y eficientes', 'casa' : 'mobile'}, + {'texto' : 'Proyectos de inteligencia artificial y ciencia de datos', 'casa' : 'data'} + ]), + Pregunta("¿Qué harías para mejorar una plataforma existente?", [ + {'texto' : 'Mejorar la apariencia y usabilidad de la interfaz', 'casa' : 'frontend'}, + {'texto' : 'Optimizar el rendimiento de las consultas y los servidores', 'casa' : 'backend'}, + {'texto' : 'Hacer que la plataforma sea accesible desde dispositivos móviles', 'casa' : 'mobile'}, + {'texto' : 'Incluir más análisis de datos para obtener mejor información', 'casa' : 'data'} + ]), + Pregunta("¿Qué aspecto del desarrollo de software te parece más retador?", [ + {'texto' : 'Hacer que una aplicación web sea visualmente atractiva', 'casa' : 'frontend'}, + {'texto' : 'Crear sistemas backend que manejen millones de usuarios', 'casa' : 'backend'}, + {'texto' : 'Optimizar la app móvil para diferentes sistemas operativos', 'casa' : 'mobile'}, + {'texto' : 'Gestionar grandes volúmenes de datos y extraer conclusiones útiles', 'casa' : 'data'} + ]), +] + +# Solicitar nombre del alumno +nombre_alumno = input("Por favor, introduce tu nombre: ") +alumno = Alumno(nombre_alumno) + +# Crear instancia del sombrero seleccionador y asignar casa +sombrero = SombreroSeleccionador(casas, preguntas) +sombrero.asignar_casa(alumno) diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/typescript/miguelex.ts b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/typescript/miguelex.ts new file mode 100644 index 0000000000..fa2c728090 --- /dev/null +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/typescript/miguelex.ts @@ -0,0 +1,266 @@ +import * as readline from 'readline'; + +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout +}); + +class Casa { + private nombre: string; + private puntos: number; + + constructor(nombre: string) { + this.nombre = nombre; + this.puntos = 0; + } + + public getNombre(): string { + return this.nombre; + } + + public agregarPuntos(puntos: number): void { + this.puntos += puntos; + } + + public getPuntos(): number { + return this.puntos; + } +} + +class Alumno { + private nombre: string; + + constructor(nombre: string) { + this.nombre = nombre; + } + + public getNombre(): string { + return this.nombre; + } +} + +interface Opcion { + texto: string; + casa: string; +} + +class Pregunta { + private pregunta: string; + private opciones: Opcion[]; + + constructor(pregunta: string, opciones: Opcion[]) { + this.pregunta = pregunta; + this.opciones = opciones; + } + + public mostrarPregunta(): void { + console.log(this.pregunta); + this.opciones.forEach((opcion, index) => { + console.log(`${index + 1}: ${opcion.texto}`); + }); + } + + public obtenerCasaSegunRespuesta(respuesta: number): string { + return this.opciones[respuesta - 1].casa; + } +} + +class SombreroSeleccionador { + private casas: Record; + private preguntas: Pregunta[]; + + constructor(casas: Record, preguntas: Pregunta[]) { + this.casas = casas; + this.preguntas = preguntas; + } + + public async asignarCasa(alumno: Alumno): Promise { + const preguntasSeleccionadas = this.seleccionarPreguntas(); + for (const pregunta of preguntasSeleccionadas) { + pregunta.mostrarPregunta(); + const respuesta = await this.leerRespuesta(); + const casa = pregunta.obtenerCasaSegunRespuesta(respuesta); + this.casas[casa].agregarPuntos(1); + } + + this.mostrarResultado(alumno); + rl.close(); + } + + private seleccionarPreguntas(): Pregunta[] { + const preguntasSeleccionadas: Pregunta[] = []; + const indicesSeleccionados = new Set(); + + while (preguntasSeleccionadas.length < 10) { + const indice = Math.floor(Math.random() * this.preguntas.length); + if (!indicesSeleccionados.has(indice)) { + indicesSeleccionados.add(indice); + preguntasSeleccionadas.push(this.preguntas[indice]); + } + } + + return preguntasSeleccionadas; + } + + private leerRespuesta(): Promise { + return new Promise((resolve) => { + rl.question("Selecciona una opción (1-4): ", (respuesta) => { + resolve(parseInt(respuesta)); + }); + }); + } + + private mostrarResultado(alumno: Alumno): void { + const casasOrdenadas = Object.values(this.casas).sort((a, b) => b.getPuntos() - a.getPuntos()); + + const maxPuntos = casasOrdenadas[0].getPuntos(); + const ganadoras = casasOrdenadas.filter(casa => casa.getPuntos() === maxPuntos); + + let ganadora: Casa; + if (ganadoras.length > 1) { + console.log("\n\nLa decisión fue difícil..."); + ganadora = ganadoras[Math.floor(Math.random() * ganadoras.length)]; + } else { + ganadora = ganadoras[0]; + } + + console.log(`\n\n ${alumno.getNombre()}, el sombrero seleccionador te ha asignado a la casa ${ganadora.getNombre().toUpperCase()}!!!!\n`); + } +} + +const casas: Record = { + 'frontend': new Casa('Frontend'), + 'backend': new Casa('Backend'), + 'mobile': new Casa('Mobile'), + 'data': new Casa('Data') +}; + +const preguntas = [ + new Pregunta("¿Qué prefieres?", [ + { texto: 'Diseñar interfaces', casa: 'frontend' }, + { texto: 'Crear APIs', casa: 'backend' }, + { texto: 'Desarrollar apps móviles', casa: 'mobile' }, + { texto: 'Analizar datos', casa: 'data' } + ]), + new Pregunta("¿Cuál es tu lenguaje de programación favorito?", [ + { texto: 'JavaScript', casa: 'frontend' }, + { texto: 'Python', casa: 'backend' }, + { texto: 'Kotlin', casa: 'mobile' }, + { texto: 'R', casa: 'data' } + ]), + new Pregunta("¿Qué herramienta utilizas más a menudo?", [ + { texto: 'Figma o Sketch', casa: 'frontend' }, + { texto: 'Docker o Kubernetes', casa: 'backend' }, + { texto: 'Android Studio o Xcode', casa: 'mobile' }, + { texto: 'Jupyter Notebooks o Excel', casa: 'data' } + ]), + new Pregunta("¿Qué te interesa más aprender?", [ + { texto: 'HTML/CSS y JavaScript avanzado', casa: 'frontend' }, + { texto: 'Patrones de diseño y arquitectura de software', casa: 'backend' }, + { texto: 'Programación nativa para dispositivos móviles', casa: 'mobile' }, + { texto: 'Estadística y Machine Learning', casa: 'data' } + ]), + new Pregunta("¿Qué tipo de proyecto te gustaría liderar?", [ + { texto: 'Un sitio web interactivo y atractivo', casa: 'frontend' }, + { texto: 'Una plataforma escalable con microservicios', casa: 'backend' }, + { texto: 'Una app móvil innovadora', casa: 'mobile' }, + { texto: 'Un sistema de recomendación basado en datos', casa: 'data' } + ]), + new Pregunta("¿Qué es lo más importante para ti en un proyecto?", [ + { texto: 'La experiencia de usuario', casa: 'frontend' }, + { texto: 'El rendimiento y la escalabilidad', casa: 'backend' }, + { texto: 'La adaptabilidad a diferentes dispositivos', casa: 'mobile' }, + { texto: 'La precisión de los análisis', casa: 'data' } + ]), + new Pregunta("¿Qué prefieres trabajar?", [ + {texto : 'En un entorno donde el diseño visual es clave', casa :'frontend'}, + {texto : 'En la lógica del negocio y la arquitectura', casa :'backend'}, + {texto : 'En apps móviles con buen rendimiento', casa :'mobile'}, + {texto : 'En el análisis y visualización de datos', casa :'data'} + ]), + new Pregunta("¿Qué framework te parece más interesante?", [ + {texto: 'React o Angular', casa :'frontend'}, + {texto : 'Spring o Django', casa :'backend'}, + {texto : 'Flutter o React Native', casa :'mobile'}, + {texto : 'TensorFlow o Pandas', casa :'data'} + ]), + new Pregunta("¿Qué tipo de reto disfrutas más?", [ + {texto : 'Hacer que un sitio web sea accesible y rápido', casa :'frontend'}, + {texto : 'Optimizar la comunicación entre servicios', casa :'backend'}, + {texto : 'Mejorar la experiencia del usuario en móviles', casa :'mobile'}, + {texto : 'Encontrar patrones ocultos en los datos', casa :'data'} + ]), + new Pregunta("¿Qué prefieres resolver?", [ + {texto : 'Problemas de diseño y maquetación', casa :'frontend'}, + {texto : 'Problemas de concurrencia y escalabilidad', casa :'backend'}, + {texto : 'Problemas de rendimiento en aplicaciones móviles', casa :'mobile'}, + {texto : 'Problemas de predicción y análisis de datos', casa :'data'} + ]), + new Pregunta("¿Qué es lo que más te emociona en tecnología?", [ + {texto : 'La evolución de las interfaces de usuario', casa :'frontend'}, + {texto : 'La innovación en la arquitectura de software', casa :'backend'}, + {texto : 'Las nuevas capacidades de los dispositivos móviles', casa :'mobile'}, + {texto : 'Los avances en inteligencia artificial y análisis de datos', casa : 'data'} + ]), + new Pregunta("¿Qué te gusta hacer en tu tiempo libre?", [ + {texto : 'Diseñar sitios web personales o interfaces', casa: 'frontend'}, + {texto : 'Hacer proyectos con servidores y APIs', casa: 'backend'}, + {texto : 'Crear apps móviles para resolver problemas cotidianos', casa: 'mobile'}, + {texto : 'Hacer análisis de datos para tomar decisiones mejor informadas', casa: 'data'} + ]), + new Pregunta("¿Qué te gustaría dominar?", [ + {texto : 'Animaciones y transiciones en la web', casa: 'frontend'}, + {texto : 'Arquitectura de microservicios', casa: 'backend'}, + {texto : 'Optimización de aplicaciones móviles', casa: 'mobile'}, + {texto : 'Modelos predictivos y análisis de datos', casa: 'data'} + ]), + new Pregunta("¿Qué tipo de problema prefieres resolver en un hackathon?", [ + {texto : 'Mejorar la interfaz de usuario de una aplicación', casa: 'frontend'}, + {texto : 'Optimizar el rendimiento de una API', casa: 'backend'}, + {texto : 'Crear una aplicación móvil desde cero', casa: 'mobile'}, + {texto : 'Generar insights a partir de grandes conjuntos de datos', casa: 'data'} + ]), + new Pregunta("¿Qué prefieres al trabajar en equipo?", [ + {texto : 'Encargarte de la parte visual y de interacción del usuario', casa: 'frontend'}, + {texto : 'Asegurarte de que la lógica y los datos fluyan correctamente', casa: 'backend'}, + {texto : 'Hacer que la app funcione bien en diferentes dispositivos', casa: 'mobile'}, + {texto : 'Proveer métricas y análisis para tomar mejores decisiones', casa: 'data'} + ]), + new Pregunta("¿Cuál es tu prioridad al optimizar código?", [ + {texto : 'Que la interfaz cargue rápido y sea amigable', casa: 'frontend'}, + {texto : 'Que los servicios backend sean escalables y eficientes', casa: 'backend'}, + {texto : 'Que la app móvil consuma pocos recursos y sea fluida', casa: 'mobile'}, + {texto : 'Que el procesamiento de datos sea rápido y preciso', casa: 'data'} + ]), + new Pregunta("¿Qué prefieres al probar una aplicación?", [ + {texto : 'Verificar que el diseño y la usabilidad sean impecables', casa: 'frontend'}, + {texto : 'Asegurar que las funcionalidades y la lógica sean correctas', casa :'backend'}, + {texto : 'Revisar que la app funcione correctamente en múltiples dispositivos', casa : 'mobile'}, + {texto : 'Validar que los resultados de los análisis sean exactos', casa : 'data'} + ]), + new Pregunta("¿Qué tipo de proyectos sigues en la industria?", [ + {texto : 'Proyectos de diseño web innovador y UX', casa : 'frontend'}, + {texto : 'Nuevas tecnologías de servidores y backends', casa : 'backend'}, + {texto : 'Aplicaciones móviles disruptivas y eficientes', casa : 'mobile'}, + {texto : 'Proyectos de inteligencia artificial y ciencia de datos', casa : 'data'} + ]), + new Pregunta("¿Qué harías para mejorar una plataforma existente?", [ + {texto : 'Mejorar la apariencia y usabilidad de la interfaz', casa : 'frontend'}, + {texto : 'Optimizar el rendimiento de las consultas y los servidores', casa : 'backend'}, + {texto : 'Hacer que la plataforma sea accesible desde dispositivos móviles', casa : 'mobile'}, + {texto : 'Incluir más análisis de datos para obtener mejor información', casa : 'data'} + ]), + new Pregunta("¿Qué aspecto del desarrollo de software te parece más retador?", [ + {texto : 'Hacer que una aplicación web sea visualmente atractiva', casa : 'frontend'}, + {texto : 'Crear sistemas backend que manejen millones de usuarios', casa : 'backend'}, + {texto : 'Optimizar la app móvil para diferentes sistemas operativos', casa : 'mobile'}, + {texto : 'Gestionar grandes volúmenes de datos y extraer conclusiones útiles', casa : 'data'} + ]), +]; + + +rl.question("Por favor, introduce tu nombre: ", (nombreAlumno) => { + const alumno = new Alumno(nombreAlumno); + const sombrero = new SombreroSeleccionador(casas, preguntas); + sombrero.asignarCasa(alumno); +}); From a2b53df222f9baa2c841bf4cd2490dd733adf5fd Mon Sep 17 00:00:00 2001 From: drvito1977 Date: Mon, 9 Sep 2024 09:39:08 +0200 Subject: [PATCH 37/53] =?UTF-8?q?a=C3=B1adir=20ejemplos=20en=20de=20estruc?= =?UTF-8?q?turas=20de=20control=20(arrays)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Roadmap/03 - ESTRUCTURAS DE DATOS/drvito1977_03.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Roadmap/03 - ESTRUCTURAS DE DATOS/drvito1977_03.sh b/Roadmap/03 - ESTRUCTURAS DE DATOS/drvito1977_03.sh index 775646c0c3..a568f86bff 100644 --- a/Roadmap/03 - ESTRUCTURAS DE DATOS/drvito1977_03.sh +++ b/Roadmap/03 - ESTRUCTURAS DE DATOS/drvito1977_03.sh @@ -131,7 +131,7 @@ function actualizar_contacto { function eliminar_contacto { read -p "Nombre: " nombre # Verificar si el contacto existe en la agenda - if [[ -z ${agenda[$nombre]} ]]; entonces + if [[ -z ${agenda[$nombre]} ]]; then echo "Contacto no encontrado." return fi From 590a0a996d8d017de0ffd0287231b269bbc1b94f Mon Sep 17 00:00:00 2001 From: drvito1977 Date: Mon, 9 Sep 2024 10:01:17 +0200 Subject: [PATCH 38/53] movido archivo a repo privado --- .../{drvito1977_03.sh => bash/drvito1977.sh} | 42 ++++++++++++++----- 1 file changed, 32 insertions(+), 10 deletions(-) rename Roadmap/03 - ESTRUCTURAS DE DATOS/{drvito1977_03.sh => bash/drvito1977.sh} (72%) diff --git a/Roadmap/03 - ESTRUCTURAS DE DATOS/drvito1977_03.sh b/Roadmap/03 - ESTRUCTURAS DE DATOS/bash/drvito1977.sh similarity index 72% rename from Roadmap/03 - ESTRUCTURAS DE DATOS/drvito1977_03.sh rename to Roadmap/03 - ESTRUCTURAS DE DATOS/bash/drvito1977.sh index a568f86bff..8fffd9d060 100644 --- a/Roadmap/03 - ESTRUCTURAS DE DATOS/drvito1977_03.sh +++ b/Roadmap/03 - ESTRUCTURAS DE DATOS/bash/drvito1977.sh @@ -53,8 +53,8 @@ echo "String original: $string" string+="!" # Inserción # Imprimir la cadena después de la inserción echo "String después de inserción: $string" -# Eliminar parte de la cadena (mantener solo los primeros 5 caracteres) -string=${string:0:5} # Borrado +# Eliminar parte de la cadena (mantener solo los primeros 4 caracteres) +string=${string:0:4} # Borrado # Imprimir la cadena después del borrado echo "String después de borrado: $string" # Actualizar la cadena completa @@ -83,65 +83,84 @@ echo "Número después de actualización: $num" # Agenda de contactos declare -A agenda +# Declarar un array asociativo para la agenda de contactos +declare -A agenda + # Función para insertar un contacto function insertar_contacto { + # Pedir al usuario que ingrese el nombre del contacto read -p "Nombre: " nombre + # Pedir al usuario que ingrese el número de teléfono del contacto read -p "Número de teléfono: " telefono # Validar que el número de teléfono sea numérico y tenga hasta 11 dígitos - if [[ ! $telefono =~ ^[0-9]{1,11}$ ]]; then + if ! echo "$telefono" | grep -qE "^[0-9]{1,11}$"; then + # Si el número no es válido, mostrar un mensaje y salir de la función echo "Número de teléfono inválido." return fi # Añadir el contacto a la agenda agenda[$nombre]=$telefono + # Confirmar que el contacto ha sido añadido echo "Contacto añadido." } # Función para buscar un contacto function buscar_contacto { + # Pedir al usuario que ingrese el nombre del contacto a buscar read -p "Nombre: " nombre # Verificar si el contacto existe en la agenda if [[ -z ${agenda[$nombre]} ]]; then + # Si no existe, mostrar un mensaje echo "Contacto no encontrado." else + # Si existe, mostrar el número de teléfono del contacto echo "Teléfono de $nombre: ${agenda[$nombre]}" fi } # Función para actualizar un contacto function actualizar_contacto { + # Pedir al usuario que ingrese el nombre del contacto a actualizar read -p "Nombre: " nombre # Verificar si el contacto existe en la agenda if [[ -z ${agenda[$nombre]} ]]; then + # Si no existe, mostrar un mensaje y salir de la función echo "Contacto no encontrado." return fi + # Pedir al usuario que ingrese el nuevo número de teléfono read -p "Nuevo número de teléfono: " telefono # Validar que el nuevo número de teléfono sea numérico y tenga hasta 11 dígitos - if [[ ! $telefono =~ ^[0-9]{1,11}$ ]]; then + if ! echo "$telefono" | grep -qE "^[0-9]{1,11}$"; then + # Si el número no es válido, mostrar un mensaje y salir de la función echo "Número de teléfono inválido." return fi # Actualizar el contacto en la agenda agenda[$nombre]=$telefono + # Confirmar que el contacto ha sido actualizado echo "Contacto actualizado." } # Función para eliminar un contacto function eliminar_contacto { + # Pedir al usuario que ingrese el nombre del contacto a eliminar read -p "Nombre: " nombre # Verificar si el contacto existe en la agenda if [[ -z ${agenda[$nombre]} ]]; then + # Si no existe, mostrar un mensaje y salir de la función echo "Contacto no encontrado." return fi # Eliminar el contacto de la agenda unset agenda[$nombre] + # Confirmar que el contacto ha sido eliminado echo "Contacto eliminado." } # Función para mostrar el menú de opciones function mostrar_menu { + # Mostrar las opciones disponibles al usuario echo "1. Insertar contacto" echo "2. Buscar contacto" echo "3. Actualizar contacto" @@ -151,14 +170,17 @@ function mostrar_menu { # Bucle principal para mostrar el menú y ejecutar las opciones seleccionadas while true; do + # Mostrar el menú de opciones mostrar_menu + # Pedir al usuario que seleccione una opción read -p "Seleccione una opción: " opcion + # Ejecutar la acción correspondiente a la opción seleccionada case $opcion in - 1) insertar_contacto ;; - 2) buscar_contacto ;; - 3) actualizar_contacto ;; - 4) eliminar_contacto ;; - 5) break ;; - *) echo "Opción inválida." ;; + 1) insertar_contacto ;; # Llamar a la función para insertar un contacto + 2) buscar_contacto ;; # Llamar a la función para buscar un contacto + 3) actualizar_contacto ;; # Llamar a la función para actualizar un contacto + 4) eliminar_contacto ;; # Llamar a la función para eliminar un contacto + 5) break ;; # Salir del bucle y terminar el programa + *) echo "Opción inválida." ;; # Mostrar un mensaje si la opción no es válida esac done \ No newline at end of file From fab001fa009bab17697bc38258fb4082ab0515f0 Mon Sep 17 00:00:00 2001 From: Qv1ko Date: Mon, 9 Sep 2024 11:01:20 +0200 Subject: [PATCH 39/53] #8 - Java --- Roadmap/08 - CLASES/java/C1.java | 71 ++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 Roadmap/08 - CLASES/java/C1.java diff --git a/Roadmap/08 - CLASES/java/C1.java b/Roadmap/08 - CLASES/java/C1.java new file mode 100644 index 0000000000..9d99163537 --- /dev/null +++ b/Roadmap/08 - CLASES/java/C1.java @@ -0,0 +1,71 @@ +class Qv1ko { + + public static void main(String[] args) { + + C1 example1 = new C1(); + System.out.println(example1.toString()); + example1.setC1String("Example 1"); + System.out.println(example1.getC1String()); + + C2 example2 = new C2(); + System.out.println(example2.toString()); + example2.setC2String("Example 2"); + System.out.println(example2.getC2String()); + + } + +} + +class C1 { + + String c1String; + + C1() { + this.c1String = "example"; + } + + C1(String value) { + this.c1String = value; + } + + public String getC1String() { + return c1String; + } + + public void setC1String(String c1String) { + this.c1String = c1String; + } + + @Override + public String toString() { + return "Class 1 value: " + c1String; + } + +} + +class C2 { + + String c2String; + + C2() { + this.c2String = "example"; + } + + C2(String value) { + this.c2String = value; + } + + public String getC2String() { + return c2String; + } + + public void setC2String(String c2String) { + this.c2String = c2String; + } + + @Override + public String toString() { + return "Class 2 value: " + c2String; + } + +} From ae002c20d11cb7a3636cd06de2e567bebe96de61 Mon Sep 17 00:00:00 2001 From: Qv1ko Date: Mon, 9 Sep 2024 11:01:46 +0200 Subject: [PATCH 40/53] #8 - Java --- Roadmap/08 - CLASES/java/{C1.java => Qv1ko.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Roadmap/08 - CLASES/java/{C1.java => Qv1ko.java} (100%) diff --git a/Roadmap/08 - CLASES/java/C1.java b/Roadmap/08 - CLASES/java/Qv1ko.java similarity index 100% rename from Roadmap/08 - CLASES/java/C1.java rename to Roadmap/08 - CLASES/java/Qv1ko.java From 5d3c73be459fda1c63ec78c32c03a2506b6c0e3f Mon Sep 17 00:00:00 2001 From: Jymtr Date: Mon, 9 Sep 2024 11:02:27 +0200 Subject: [PATCH 41/53] #18 - Python --- Roadmap/17 - ITERACIONES/python/JuanDAW37.py | 74 ++++++++++++++++++++ Roadmap/18 - CONJUNTOS/python/JuanDAW37.py | 59 ++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 Roadmap/17 - ITERACIONES/python/JuanDAW37.py create mode 100644 Roadmap/18 - CONJUNTOS/python/JuanDAW37.py diff --git a/Roadmap/17 - ITERACIONES/python/JuanDAW37.py b/Roadmap/17 - ITERACIONES/python/JuanDAW37.py new file mode 100644 index 0000000000..78bee852d1 --- /dev/null +++ b/Roadmap/17 - ITERACIONES/python/JuanDAW37.py @@ -0,0 +1,74 @@ +""" +* EJERCICIO: + * Utilizando tu lenguaje, emplea 3 mecanismos diferentes para imprimir + * números del 1 al 10 mediante iteración. + * + * DIFICULTAD EXTRA (opcional): + * Escribe el mayor número de mecanismos que posea tu lenguaje + * para iterar valores. ¿Eres capaz de utilizar 5? ¿Y 10? +""" +# Bucle while +print('*******Bucle While*******') +i = 1 +while i <= 10: + print(i) + i += 1 + +# Simulando Do...While +print('*******Bucle Simulando Do...While*******') +i = 1 +while True: + if i <= 10: + print(i) + i += 1 + else: + break + +# Bucle for +print('*******Bucle For con listas(lists)*******') +numeros = [1,2,3,4,5,6,7,8,9,10] + +for i in numeros: + print(i) + +print('*******Bucle For con conjuntos(sets)*******') +for i in {1,2,3,4,5,6,7,8,9,10}: + print(i) + +print('*******Bucle For con mapas(maps)*******') +for i in {1:'a',2:'b',3:'c',4:'d',5:'e',6:'f',7:'g',8:'h',9:'i',10:'j'}: + print(i) + +print('*******Bucle For con tuplas(tuples)*******') +for i in (1,2,3,4,5,6,7,8,9,10): + print(i) + +print('*******Bucle For con función range()*******') +for i in range(1, 11): + print(i) + +# Función recursiva: +print('*******Función Recursiva*******') +def imprimir_numeros(n:int = 1): + if n <= 10: + print(n) + imprimir_numeros(n + 1) + +imprimir_numeros() + +# EXTRA, de las 10 solicitadas podemos contar con las anteriores +print('*******Bucle For con Generadores Conprehesion List*******') +print(*[x for x in range(1, 11)], sep='\n') #El * indica que es un conprehesion list y usando sep indicamos que el separador, en este caso, será un retorno de carro + +print('*******Cadena de texto*******') +lenguaje = 'Python' +for letra in lenguaje: + print(letra) + +print('*******Cadena de texto al revés*******') +for letra in reversed(lenguaje): + print(letra) + +print('*******Cadena de texto ordenada, usando enumerate para saber su índice*******') +for i, letra in enumerate(sorted(lenguaje)): + print(f'Índice {i}, letra {letra}') \ No newline at end of file diff --git a/Roadmap/18 - CONJUNTOS/python/JuanDAW37.py b/Roadmap/18 - CONJUNTOS/python/JuanDAW37.py new file mode 100644 index 0000000000..408188a4fb --- /dev/null +++ b/Roadmap/18 - CONJUNTOS/python/JuanDAW37.py @@ -0,0 +1,59 @@ +"""* EJERCICIO: + * Utilizando tu lenguaje crea un conjunto de datos y realiza las siguientes + * operaciones (debes utilizar una estructura que las soporte): + * - Añade un elemento al final. + * - Añade un elemento al principio. + * - Añade varios elementos en bloque al final. + * - Añade varios elementos en bloque en una posición concreta. + * - Elimina un elemento en una posición concreta. + * - Actualiza el valor de un elemento en una posición concreta. + * - Comprueba si un elemento está en un conjunto. + * - Elimina todo el contenido del conjunto. + * + * DIFICULTAD EXTRA (opcional): + * Muestra ejemplos de las siguientes operaciones con conjuntos: + * - Unión. + * - Intersección. + * - Diferencia. + * - Diferencia simétrica.""" + +conjunto = ['a', 'b', 'c', 'd'] +print(f'Mi conjunto es {conjunto}') +# Añade un elemento al final. +conjunto.append('e') +print(f'Mi conjunto es {conjunto}') +# Añade un elemento al principio. +conjunto.insert(0,'a') +print(f'Mi conjunto es {conjunto}') +# Añade varios elementos en bloque al final. +conjunto.extend(['y', 'z']) +print(f'Mi conjunto es {conjunto}') +# Añade varios elementos en bloque en una posición concreta. +conjunto[2:2] = ['d', 'h', 'r'] +print(f'Mi conjunto es {conjunto}') +# Elimina un elemento en una posición concreta. +del conjunto[2] +print(f'Mi conjunto es {conjunto}') +# Actualiza el valor de un elemento en una posición concreta. +conjunto[3] = 'ñ' +print(f'Mi conjunto es {conjunto}') +# Comprueba si un elemento está en un conjunto. +print(f'¿El elemento está en el conjunto? {'t' in conjunto}') +# Elimina todo el contenido del conjunto. +conjunto.clear() +print(f'Mi conjunto es {conjunto}') + +# EXTRA +conjunto1 = {'a', 'b', 'c'} +conjunto2 = {'b', 'c', 'd'} +# - Unión. +print(conjunto1.union(conjunto2)) + +# - Intersección +print(conjunto1.intersection(conjunto2)) + +# - Diferencia +print(conjunto1.difference(conjunto2)) + +# - Diferencia simétrica: +print(conjunto1.symmetric_difference(conjunto2)) \ No newline at end of file From c7956db8cf16779fcffeb55881e551e9cdf3b5d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Gallego?= <75795616+kontroldev@users.noreply.github.com> Date: Mon, 9 Sep 2024 11:14:11 +0200 Subject: [PATCH 42/53] Rename L4nce.c to 1ceL4nc3.c --- .../c/{L4nce.c => 1ceL4nc3.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/c/{L4nce.c => 1ceL4nc3.c} (100%) diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/c/L4nce.c b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/c/1ceL4nc3.c similarity index 100% rename from Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/c/L4nce.c rename to Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/c/1ceL4nc3.c From fe1939dd99a67fad5fb98a1f17c9e466a4248aca Mon Sep 17 00:00:00 2001 From: Jesus Antonio Escamilla Date: Mon, 9 Sep 2024 03:29:51 -0600 Subject: [PATCH 43/53] #36 - JavaScript --- .../javascript/JesusAntonioEEscamilla.js | 170 ++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/JesusAntonioEEscamilla.js diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/JesusAntonioEEscamilla.js b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/JesusAntonioEEscamilla.js new file mode 100644 index 0000000000..6295cb82ae --- /dev/null +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/JesusAntonioEEscamilla.js @@ -0,0 +1,170 @@ +/** #36 - JavaScript -> Jesus Antonio Escamilla */ + +/** + * EL SOMBRERO SELECCIONADOR. + * Utilizando la Terminal para pedir datos y agregarlos. + */ + +const readline = require('readline'); + +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout +}); + +// Casas y sus puntos iniciales +const house = { + Frontend: 0, + Backend: 0, + Mobile: 0, + Data: 0 +} + +// Preguntas y sus opciones con puntos asignados a cada casa +const questions = [ + { + question: '1-¿Que te apasiona más al programador?', + options: { + a: {text: 'Crear interfaces de usuario', points: { Frontend: 2 }}, + b: {text: 'Desarrollador lógica de negocio', points: { Backend: 2 }}, + c: {text: 'Aplicaciones móviles', points: { Mobile: 2 }}, + d: {text: 'Trabajar con datos y descubrir patrones para mejorar decisiones', points: { Data: 2 }}, + }, + }, + { + question: '2-¿Cuál es tu herramienta favorita?', + options: { + a: { text: 'React o Angular', points: { Frontend: 2 } }, + b: { text: 'Node.js', points: { Backend: 2 } }, + c: { text: 'Swift o Kotlin', points: { Mobile: 2 } }, + d: { text: 'Python y Pandas', points: { Data: 2 } }, + }, + }, + { + question: '3-¿Cuál de estas tareas te resulta más satisfactoria?', + options: { + a: { text: 'Diseñar y estilizar componentes visuales', points: { Frontend: 2 } }, + b: { text: 'Crear APIs y gestionar bases de datos', points: { Backend: 2 } }, + c: { text: 'Optimizar aplicaciones para diferentes dispositivos móviles', points: { Mobile: 2 } }, + d: { text: 'Trabajar con grandes volúmenes de datos y modelos analíticos', points: { Data: 2 } }, + }, + }, + { + question: '4-¿Con cuál de estas tecnologías te sientes más cómodo trabajando?', + options: { + a: { text: 'HTML, CSS, JavaScript', points: { Frontend: 2 } }, + b: { text: 'Python, Java, SQL', points: { Backend: 2 } }, + c: { text: 'Flutter, React Native', points: { Mobile: 2 } }, + d: { text: 'R, SQL, Hadoop', points: { Data: 2 } }, + }, + }, + { + question: '5-¿Qué herramienta o lenguaje prefieres usar para resolver problemas?', + options: { + a: { text: 'Herramientas y frameworks para diseño de interfaces (e.g., Figma, React)', points: { Frontend: 2 } }, + b: { text: 'Lenguajes y frameworks para backend (e.g., Node.js, Django, Spring Boot)', points: { Backend: 2 } }, + c: { text: 'Herramientas de desarrollo móvil (e.g., Xcode, Android Studio)', points: { Mobile: 2 } }, + d: { text: 'Herramientas de análisis de dato (e.g., Jupyter, Tableau, Power BI)', points: { Data: 2 } }, + }, + }, + { + question: '6-¿Cuál de estas actividades disfrutas más?', + options: { + a: { text: 'Crear experiencias de usuario interactivas y responsivas', points: { Frontend: 2 } }, + b: { text: 'Resolver problemas complejos de lógica y optimización de procesos', points: { Backend: 2 } }, + c: { text: 'Construir y probar aplicaciones que funcionen en múltiples dispositivos móviles', points: { Mobile: 2 } }, + d: { text: 'Analizar y visualizar datos para extraer información relevante', points: { Data: 2 } }, + }, + }, + { + question: '7-¿Qué prefieres en un proyecto?', + options: { + a: { text: 'Trabajar en el diseño y la interacción con los usuarios', points: { Frontend: 2 } }, + b: { text: 'Enfocarte en la lógica de negocio y la eficiencia del sistema', points: { Backend: 2 } }, + c: { text: 'Desarrollar para plataformas móviles y trabajar con sus características únicas', points: { Mobile: 2 } }, + d: { text: 'Investigar y analizar datos para proporcionar insights', points: { Data: 2 } }, + }, + }, + { + question: '8-¿Cuál es tu tipo de proyecto ideal?', + options: { + a: { text: 'Un sitio web interactivo y visualmente atractivo', points: { Frontend: 2 } }, + b: { text: 'Un sistema robusto que gestione datos y lógica de negocio', points: { Backend: 2 } }, + c: { text: 'Una aplicación móvil con una experiencia de usuario fluida', points: { Mobile: 2 } }, + d: { text: 'Un dashboard o modelo predictivo que ofrezca información clave', points: { Data: 2 } }, + }, + }, + { + question: '9-¿Qué te da más satisfacción al finalizar un proyecto?', + options: { + a: { text: 'Ver a los usuarios interactuar de manera positiva con tu interfaz', points: { Frontend: 2 } }, + b: { text: 'Saber que tu código maneja de manera eficiente grandes volúmenes de datos', points: { Backend: 2 } }, + c: { text: 'Ver tu aplicación móvil en funcionamiento en diferentes dispositivos', points: { Mobile: 2 } }, + d: { text: 'Proveer información valiosa basada en datos a la empresa', points: { Data: 2 } }, + }, + }, + { + question: '10-¿Qué consideras un reto divertido en el desarrollo?', + options: { + a: { text: 'Mejorar la usabilidad y la estética de una aplicación', points: { Frontend: 2 } }, + b: { text: 'Optimizar la seguridad y el rendimiento de un backend', points: { Backend: 2 } }, + c: { text: 'Resolver problemas de compatibilidad entre diferentes plataformas móviles', points: { Mobile: 2 } }, + d: { text: 'Desarrollar modelos predictivos y manejar bases de datos complejas', points: { Data: 2 } }, + }, + }, +]; + +let currentQuestion = 0; +let studentName = ''; + +// Función para hacer preguntas +function askQuestion() { + if (currentQuestion < questions.length) { + const q = questions[currentQuestion]; + console.log(`\n${q.question}`); + console.log(`a) ${q.options.a.text}`); + console.log(`b) ${q.options.b.text}`); + console.log(`c) ${q.options.c.text}`); + console.log(`d) ${q.options.d.text}`); + + rl.question('Selección una opción (a, b, c, d): ', (answer) => { + const option = q.options[answer.toLowerCase()]; + + if (option) { + Object.keys(option.points).forEach((house) => { + house[house] += option.points[house]; + }); + + currentQuestion++; + askQuestion(); + } else { + console.log('Opción no válida. Intenta de nuevo.'); + askQuestion(); + } + }); + } else { + sortStudent(); + } +} + +// Función para determinar la casa del estudiante +function sortStudent() { + const sortedHouses = Object.entries(house).sort(([, a], [, b]) => b - a); + const topHouse = sortedHouses[0]; + const tiedHouse = sortedHouses.filter(([, points]) => points === topHouse[1]); + + if (tiedHouse.length > 1) { + const chosenHouse = tiedHouse[Math.floor(Math.random() * tiedHouse.length)]; + console.log(`\n¡Vaya, ${studentName}! Fue una decisión complicada, pero te he colocado en ${chosenHouse[0]}!`); + } else { + console.log(`\n${studentName}, te he colocado en ${topHouse[0]}!`); + } + + rl.close(); +} + +// Inicio del programa +rl.question('¿Cuál es tu nombre? ', (name) => { + studentName = name; + askQuestion(); +}); \ No newline at end of file From 405e404b8d29d17378f8597950b5ef2269051d39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20D=C3=B3ezon?= Date: Mon, 9 Sep 2024 06:40:21 -0600 Subject: [PATCH 44/53] #36 - JavaScript --- .../javascript/RaulDoezon.js | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/RaulDoezon.js diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/RaulDoezon.js b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/RaulDoezon.js new file mode 100644 index 0000000000..1678938c41 --- /dev/null +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/RaulDoezon.js @@ -0,0 +1,90 @@ +/* + EJERCICIO: + Cada 1 de septiembre, el Hogwarts Express parte hacia la escuela + de programación de Hogwarts para magos y brujas del código. + En ella, su famoso sombrero seleccionador ayuda a los programadores + a encontrar su camino... + Desarrolla un programa que simule el comportamiento del sombrero. + Requisitos: + 1. El sombrero realizará 10 preguntas para determinar la casa del alumno. + 2. Deben existir 4 casas. Por ejemplo: Frontend, Backend, Mobile y Data. + (Puedes elegir las que quieras) + Acciones: + 1. Crea un programa que solicite el nombre del alumno y realice 10 + preguntas, con cuatro posibles respuestas cada una. + 2. Cada respuesta asigna puntos a cada una de las casas (a tu elección). + 3. Una vez finalizado, el sombrero indica el nombre del alumno + y a qué casa pertenecerá (resuelve el posible empate de manera aleatoria, + pero indicándole al alumno que la decisión ha sido complicada). +*/ + +let userName = ""; +let frontEndHouse = 0; +let backEndHouse = 0; +let mobileHouse = 0; +let dataScienceHouse = 0; +const questions = [ + "1. ¿Qué prefieres jugar?: \na) Super Metroid \nb) Ajedrez \nc) Pokémon Go \nd) Sudoku", + "2. ¿Con qué actividad te identificas más?: \na) Dibujar \nb) Doblar la ropa \nc) Editar fotos en el teléfono \nd) Acomodar la despensa", + "3. ¿Dónde te gusta más escuchar música?: \na) Audífonos \nb) Mini componente \nc) Bocina portatil \nd) Donde sea pero Hi-Res", + "4. ¿Qué superhéroe es tu favorito?: \na) Spider-Man \nb) Superman \nc) Flash \nd) Doctor Strange", + "5. Si volvieras a cursar una materia, ¿cuál sería?: \na) Biología \nb) Cálculo diferencial e integral \nc) Física \nd) Probabilidad y estadística", + "6. Si te regalaran un dispositivo electrónico, ¿cuál elegirías?: \na) MacBook \nb) PC \nc) Smartphone \nd) Raspberry Pi", + "7. ¿Qué recurso utilizarías para administrar tus finanzas?: \na) Aplicación de escritorio \nb) Papel y lápiz \nc) Aplicación móvil \nd) Hoja de cálculo", + "8. ¿Qué te llama más la atención en un sitio web?: \na) La apariencia \nb) Las validaciones en un formulario \nc) La adaptación a medidas pequeñas \nd) La información que muestra", + "9. ¿Qué lenguaje de programación es tu favorito?: \na) JavaScript \nb) Python \nc) Swift \nd) SQL", + "10. ¿Con qué persona te sientes más identificado?: \na) Miguel Durán \nb) Héctor de León \nc) Brais Moure \nd) Rafa Gonzalez Gouveia", +]; + +userName = prompt("Por favor, ingresa tu nombre:"); + +for (let index = 0; index < questions.length; index++) { + let quiz = prompt(questions[index]); + + switch (quiz.toLowerCase()) { + case "a": + frontEndHouse += 4; + break; + + case "b": + backEndHouse += 4; + break; + + case "c": + mobileHouse += 4; + break; + + case "d": + dataScienceHouse += 4; + break; + + default: + alert("Por favor, selecciona una opción válida."); + + index--; + break; + } +} + +let allHouses = { + "Front-end": frontEndHouse, + "Back-end": backEndHouse, + "Mobile": mobileHouse, + "Data Science": dataScienceHouse, +}; +let houseNames = Object.keys(allHouses); +let higherScore = Math.max.apply(null, houseNames.map((houseScore) => allHouses[houseScore])); +let chosenHouse = houseNames.reduce((house, score) => { + if (allHouses[score] === higherScore) { + house.push(score); + } + + return house; +}, []); +let randomSelection = Math.round(Math.random() * (chosenHouse.length - 1) + 1) - 1; + +if (chosenHouse.length > 1) { + console.log(`${userName}, la decisión ha sido complicada, pero pertenecerás a la casa de ${chosenHouse[randomSelection]}.`); +} else { + console.log(`${userName}, pertenecerás a la casa de ${chosenHouse[0]}.`); +} From 79fa835fda000e6266b2b3fef81a3c25aa908e25 Mon Sep 17 00:00:00 2001 From: Juan Pablo Patino Lopez Date: Mon, 9 Sep 2024 15:02:08 +0200 Subject: [PATCH 45/53] Juanppdev - Reto #36 - Python --- .../python/juanppdev.py | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/juanppdev.py diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/juanppdev.py b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/juanppdev.py new file mode 100644 index 0000000000..c907db37c6 --- /dev/null +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/juanppdev.py @@ -0,0 +1,75 @@ +""" + * EJERCICIO: + * Cada 1 de septiembre, el Hogwarts Express parte hacia la escuela + * de programación de Hogwarts para magos y brujas del código. + * En ella, su famoso sombrero seleccionador ayuda a los programadores + * a encontrar su camino... + * Desarrolla un programa que simule el comportamiento del sombrero. + * Requisitos: + * 1. El sombrero realizará 10 preguntas para determinar la casa del alumno. + * 2. Deben existir 4 casas. Por ejemplo: Frontend, Backend, Mobile y Data. + * (Puedes elegir las que quieras) + * Acciones: + * 1. Crea un programa que solicite el nombre del alumno y realice 10 + * preguntas random, con cuatro posibles respuestas cada una. + * 2. Cada respuesta asigna puntos a cada una de las casas (a tu elección). + * 3. Una vez finalizado, el sombrero indica el nombre del alumno + * y a qué casa pertenecerá (resuelve el posible empate de manera aleatoria, + * pero indicándole al alumno que la decisión ha sido complicada). +""" + +import random + +# Definimos las casas +casas = ["Frontend", "Backend", "Mobile", "Data"] + +# Definimos las preguntas y las respuestas +preguntas = [ + ("¿Qué prefieres hacer en tu tiempo libre?", ["Leer documentación", "Desarrollar una app", "Analizar datos", "Diseñar interfaces"]), + ("¿Qué lenguaje de programación te gusta más?", ["JavaScript", "Python", "Swift", "SQL"]), + ("¿Qué tipo de proyectos te interesan más?", ["Web", "Backend", "Móvil", "Big Data"]), + ("¿Qué herramienta prefieres usar?", ["React", "Django", "Flutter", "Pandas"]), + ("¿Qué tipo de problemas te gusta resolver?", ["Interfaz de usuario", "Lógica de negocio", "Optimización de rendimiento", "Análisis de datos"]), + ("¿Qué tipo de empresa te gustaría trabajar?", ["Startup", "Corporación", "Freelance", "Investigación"]), + ("¿Qué tipo de tareas disfrutas más?", ["Diseño", "Programación", "Pruebas", "Análisis"]), + ("¿Qué prefieres aprender?", ["CSS", "Docker", "Kotlin", "Machine Learning"]), + ("¿Qué tipo de equipo prefieres?", ["Diseñadores", "Desarrolladores", "Ingenieros de software", "Científicos de datos"]), + ("¿Qué tipo de retos te motivan?", ["Creativos", "Técnicos", "Innovadores", "Analíticos"]) +] + +# Función para asignar puntos a las casas +def asignar_puntos(respuesta): + if respuesta == 0: + return [1, 0, 0, 0] + elif respuesta == 1: + return [0, 1, 0, 0] + elif respuesta == 2: + return [0, 0, 1, 0] + elif respuesta == 3: + return [0, 0, 0, 1] + +# Función principal +def sombrero_seleccionador(): + nombre = input("¿Cuál es tu nombre? ") + puntos = [0, 0, 0, 0] + + for i in range(10): + pregunta, respuestas = random.choice(preguntas) + print(f"\nPregunta {i+1}: {pregunta}") + for j, respuesta in enumerate(respuestas): + print(f"{j+1}. {respuesta}") + eleccion = int(input("Elige una opción (1-4): ")) - 1 + puntos = [x + y for x, y in zip(puntos, asignar_puntos(eleccion))] + + max_puntos = max(puntos) + posibles_casas = [casas[i] for i, p in enumerate(puntos) if p == max_puntos] + + if len(posibles_casas) > 1: + casa_final = random.choice(posibles_casas) + print(f"\n{nombre}, la decisión ha sido complicada, pero finalmente perteneces a la casa {casa_final}!") + else: + casa_final = posibles_casas[0] + print(f"\n{nombre}, perteneces a la casa {casa_final}!") + +# Ejecutar el programa +sombrero_seleccionador() From 88554e2a3955a27266002dd3b08d6eff4aebf85b Mon Sep 17 00:00:00 2001 From: Rafa Canosa Date: Mon, 9 Sep 2024 15:35:03 +0200 Subject: [PATCH 46/53] Created Rafacv23.js --- Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js new file mode 100644 index 0000000000..e69de29bb2 From 232fb8a47482908bada4dfe44aeb893bbafa050b Mon Sep 17 00:00:00 2001 From: Rafa Canosa Date: Mon, 9 Sep 2024 15:37:32 +0200 Subject: [PATCH 47/53] added questions for the exercise and answers --- .../javascript/Rafacv23.js | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js index e69de29bb2..4c2aa040bd 100644 --- a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js @@ -0,0 +1,87 @@ +const preguntas = [ + { + pregunta: "¿Qué parte de un proyecto disfrutas más?", + respuestas: [ + "A) Crear interfaces interactivas y atractivas", + "B) Diseñar la estructura de datos y las bases de datos", + "C) Desarrollar aplicaciones móviles", + "D) Analizar grandes volúmenes de datos", + ], + }, + { + pregunta: "¿Cuál es tu lenguaje de programación favorito?", + respuestas: ["A) JavaScript", "B) Python", "C) Swift", "D) R"], + }, + { + pregunta: "¿Qué herramienta te resulta más útil en tu trabajo diario?", + respuestas: [ + "A) React o Vue", + "B) Node.js", + "C) Flutter", + "D) Jupyter Notebooks", + ], + }, + { + pregunta: "¿Cómo prefieres gestionar tus proyectos?", + respuestas: [ + "A) A través de metodologías ágiles (Scrum, Kanban)", + "B) Con enfoque en arquitectura de microservicios", + "C) Aplicando patrones de diseño para aplicaciones móviles", + "D) Mediante análisis y reportes de datos", + ], + }, + { + pregunta: "¿Qué parte de la depuración de código disfrutas más?", + respuestas: [ + "A) Encontrar errores visuales en las interfaces", + "B) Corregir problemas de rendimiento en el servidor", + "C) Arreglar fallos en la experiencia de usuario móvil", + "D) Optimizar algoritmos de procesamiento de datos", + ], + }, + { + pregunta: "¿Cuál sería tu rol ideal en un equipo de desarrollo?", + respuestas: [ + "A) Diseñador/Desarrollador Frontend", + "B) Arquitecto de Soluciones Backend", + "C) Desarrollador de Aplicaciones Móviles", + "D) Científico de Datos", + ], + }, + { + pregunta: "¿Cómo prefieres aprender nuevas tecnologías?", + respuestas: [ + "A) Experimentando con nuevas librerías y frameworks de frontend", + "B) Trabajando con nuevas tecnologías de servidores y bases de datos", + "C) Explorando nuevas plataformas de desarrollo móvil", + "D) Analizando nuevos algoritmos y técnicas de procesamiento de datos", + ], + }, + { + pregunta: "¿Qué tipo de proyectos te motivan más?", + respuestas: [ + "A) Aplicaciones web interactivas y atractivas", + "B) Sistemas robustos y escalables en la nube", + "C) Aplicaciones móviles con excelente experiencia de usuario", + "D) Proyectos de análisis y visualización de datos", + ], + }, + { + pregunta: "¿Qué tecnología te gustaría dominar en el futuro?", + respuestas: [ + "A) WebAssembly y animaciones avanzadas en la web", + "B) Inteligencia Artificial y Machine Learning en servidores", + "C) Realidad aumentada en aplicaciones móviles", + "D) Big Data y análisis de grandes volúmenes de información", + ], + }, + { + pregunta: "¿Cómo te gusta colaborar en un equipo?", + respuestas: [ + "A) Diseñando y mejorando la experiencia de usuario", + "B) Integrando servicios y APIs en el backend", + "C) Asegurando la mejor experiencia en aplicaciones móviles", + "D) Proporcionando análisis detallados a partir de los datos", + ], + }, +] From e1d50e06ccea654ce81f6faccd2f01e23bc7d85f Mon Sep 17 00:00:00 2001 From: Rafa Canosa Date: Mon, 9 Sep 2024 15:38:56 +0200 Subject: [PATCH 48/53] added houses --- .../javascript/Rafacv23.js | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js index 4c2aa040bd..c995054d5d 100644 --- a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js @@ -85,3 +85,34 @@ const preguntas = [ ], }, ] + +const casas = [ + { + casa: "Frontend", + color: "#f2f2f2", + icono: + "https://www.iconfinder.com/icons/464586/code_icon_flat_web_development_programming_icon/size_64/png", + tema: "Diseño y desarrollo de interfaces web", + }, + { + casa: "Backend", + color: "#e3e3e3", + icono: + "https://www.iconfinder.com/icons/1438014/server_icon_flat/size_64/png", + tema: "Desarrollo de sistemas backend", + }, + { + casa: "Mobile", + color: "#cccccc", + icono: + "https://www.iconfinder.com/icons/1832874/mobile_app_icon_flat/size_64/png", + tema: "Desarrollo de aplicaciones móviles", + }, + { + casa: "Data", + color: "#ffffff", + icono: + "https://www.iconfinder.com/icons/2518380/database_icon_flat/size_64/png", + tema: "Análisis y visualización de datos", + }, +] From 78c71cffa15d4e501e0be047dff4d5223c06e4eb Mon Sep 17 00:00:00 2001 From: Rafa Canosa Date: Mon, 9 Sep 2024 16:13:56 +0200 Subject: [PATCH 49/53] add readline to receive inputs and pointsPerHouse --- .../javascript/Rafacv23.js | 268 +++++++++++++----- 1 file changed, 192 insertions(+), 76 deletions(-) diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js index c995054d5d..d014f84435 100644 --- a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js @@ -1,118 +1,234 @@ +const readline = require("readline") + const preguntas = [ { pregunta: "¿Qué parte de un proyecto disfrutas más?", - respuestas: [ - "A) Crear interfaces interactivas y atractivas", - "B) Diseñar la estructura de datos y las bases de datos", - "C) Desarrollar aplicaciones móviles", - "D) Analizar grandes volúmenes de datos", + opciones: [ + { + respuesta: "Crear interfaces interactivas y atractivas", + casa: "Frontend", + }, + { + respuesta: "Diseñar la estructura de datos y las bases de datos", + casa: "Backend", + }, + { + respuesta: "Desarrollar aplicaciones móviles", + casa: "Mobile", + }, + { + respuesta: "Implementar sistemas de seguridad y control de acceso", + casa: "Data", + }, ], }, { pregunta: "¿Cuál es tu lenguaje de programación favorito?", - respuestas: ["A) JavaScript", "B) Python", "C) Swift", "D) R"], + opciones: [ + { + respuesta: "JavaScript", + casa: "Frontend", + }, + { + respuesta: "Python", + casa: "Backend", + }, + { + respuesta: "Swift", + casa: "Mobile", + }, + { + respuesta: "R", + casa: "Data", + }, + ], }, { pregunta: "¿Qué herramienta te resulta más útil en tu trabajo diario?", - respuestas: [ - "A) React o Vue", - "B) Node.js", - "C) Flutter", - "D) Jupyter Notebooks", + opciones: [ + { + respuesta: "Visual Studio Code", + casa: "Frontend", + }, + { + respuesta: "Git y GitHub", + casa: "Backend", + }, + { + respuesta: "Docker y Kubernetes", + casa: "Mobile", + }, + { + respuesta: "Jupyter Notebooks", + casa: "Data", + }, ], }, { pregunta: "¿Cómo prefieres gestionar tus proyectos?", - respuestas: [ - "A) A través de metodologías ágiles (Scrum, Kanban)", - "B) Con enfoque en arquitectura de microservicios", - "C) Aplicando patrones de diseño para aplicaciones móviles", - "D) Mediante análisis y reportes de datos", + opciones: [ + { + respuesta: "Utilizando versiones de control", + casa: "Frontend", + }, + { + respuesta: "Utilizando un herramienta de planeamiento", + casa: "Backend", + }, + { + respuesta: "Utilizando un herramienta de gestión de proyectos", + casa: "Mobile", + }, + { + respuesta: "Utilizando un herramienta de planificación", + casa: "Data", + }, ], }, { pregunta: "¿Qué parte de la depuración de código disfrutas más?", - respuestas: [ - "A) Encontrar errores visuales en las interfaces", - "B) Corregir problemas de rendimiento en el servidor", - "C) Arreglar fallos en la experiencia de usuario móvil", - "D) Optimizar algoritmos de procesamiento de datos", + opciones: [ + { + respuesta: "Encontrar errores visuales en las interfaces", + casa: "Frontend", + }, + { + respuesta: "Corregir problemas de rendimiento en el servidor", + casa: "Backend", + }, + { + respuesta: "Desarrollar nuevas características y funciones", + casa: "Mobile", + }, + { + respuesta: "Optimizar algoritmos de procesamiento de datos", + casa: "Data", + }, ], }, { pregunta: "¿Cuál sería tu rol ideal en un equipo de desarrollo?", - respuestas: [ - "A) Diseñador/Desarrollador Frontend", - "B) Arquitecto de Soluciones Backend", - "C) Desarrollador de Aplicaciones Móviles", - "D) Científico de Datos", + opciones: [ + { + respuesta: "Desarrollador/Diseñador Frontend", + casa: "Frontend", + }, + { + respuesta: "Arquitecto de Soluciones Backend", + casa: "Backend", + }, + { + respuesta: "Desarrollador de Aplicaciones Móviles", + casa: "Mobile", + }, + { + respuesta: "Científico de Datos", + casa: "Data", + }, ], }, { pregunta: "¿Cómo prefieres aprender nuevas tecnologías?", - respuestas: [ - "A) Experimentando con nuevas librerías y frameworks de frontend", - "B) Trabajando con nuevas tecnologías de servidores y bases de datos", - "C) Explorando nuevas plataformas de desarrollo móvil", - "D) Analizando nuevos algoritmos y técnicas de procesamiento de datos", + opciones: [ + { + respuesta: + "Experimentando con nuevas librerías y frameworks de frontend", + casa: "Frontend", + }, + { + respuesta: + "Trabajando con nuevas tecnologías de servidores y bases de datos", + casa: "Backend", + }, + { + respuesta: "Explorando nuevas plataformas de desarrollo móvil", + casa: "Mobile", + }, + { + respuesta: + "Analizando nuevos algoritmos y técnicas de procesamiento de datos", + casa: "Data", + }, ], }, { pregunta: "¿Qué tipo de proyectos te motivan más?", - respuestas: [ - "A) Aplicaciones web interactivas y atractivas", - "B) Sistemas robustos y escalables en la nube", - "C) Aplicaciones móviles con excelente experiencia de usuario", - "D) Proyectos de análisis y visualización de datos", + opciones: [ + { + respuesta: "Crear interfaces web interactivas y atractivas", + casa: "Frontend", + }, + { + respuesta: "Desarrollar sistemas robustos y escalables en la nube", + casa: "Backend", + }, + { + respuesta: + "Desarrollar aplicaciones móviles con excelente experiencia de usuario", + casa: "Mobile", + }, + { + respuesta: "Proyectos de análisis y visualización de datos", + casa: "Data", + }, ], }, { pregunta: "¿Qué tecnología te gustaría dominar en el futuro?", - respuestas: [ - "A) WebAssembly y animaciones avanzadas en la web", - "B) Inteligencia Artificial y Machine Learning en servidores", - "C) Realidad aumentada en aplicaciones móviles", - "D) Big Data y análisis de grandes volúmenes de información", + opciones: [ + { + respuesta: "WebAssembly y animaciones avanzadas en la web", + casa: "Frontend", + }, + { + respuesta: "Inteligencia Artificial y Machine Learning en servidores", + casa: "Backend", + }, + { + respuesta: "Realidad aumentada en aplicaciones móviles", + casa: "Mobile", + }, + { + respuesta: "Big Data y análisis de grandes volúmenes de información", + casa: "Data", + }, ], }, { pregunta: "¿Cómo te gusta colaborar en un equipo?", - respuestas: [ - "A) Diseñando y mejorando la experiencia de usuario", - "B) Integrando servicios y APIs en el backend", - "C) Asegurando la mejor experiencia en aplicaciones móviles", - "D) Proporcionando análisis detallados a partir de los datos", + opciones: [ + { + respuesta: "Diseñando y mejorando la experiencia de usuario", + casa: "Frontend", + }, + { + respuesta: "Integrando servicios y APIs en el backend", + casa: "Backend", + }, + { + respuesta: "Asegurando la mejor experiencia en aplicaciones móviles", + casa: "Mobile", + }, + { + respuesta: "Proporcionando análisis detallados a partir de los datos", + casa: "Data", + }, ], }, ] -const casas = [ - { - casa: "Frontend", - color: "#f2f2f2", - icono: - "https://www.iconfinder.com/icons/464586/code_icon_flat_web_development_programming_icon/size_64/png", - tema: "Diseño y desarrollo de interfaces web", - }, - { - casa: "Backend", - color: "#e3e3e3", - icono: - "https://www.iconfinder.com/icons/1438014/server_icon_flat/size_64/png", - tema: "Desarrollo de sistemas backend", - }, - { - casa: "Mobile", - color: "#cccccc", - icono: - "https://www.iconfinder.com/icons/1832874/mobile_app_icon_flat/size_64/png", - tema: "Desarrollo de aplicaciones móviles", - }, - { - casa: "Data", - color: "#ffffff", - icono: - "https://www.iconfinder.com/icons/2518380/database_icon_flat/size_64/png", - tema: "Análisis y visualización de datos", - }, -] +const puntosCasas = { + Frontend: 0, + Backend: 0, + Mobile: 0, + Data: 0, +} + +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, +}) +const prompt = (query) => new Promise((resolve) => rl.question(query, resolve)) + +// When done reading prompt, exit program +rl.on("close", () => process.exit(0)) From 9802c7b3af15cf1b7c11e65a3421376ca915b18f Mon Sep 17 00:00:00 2001 From: Rafa Canosa Date: Mon, 9 Sep 2024 16:14:30 +0200 Subject: [PATCH 50/53] async function to execute the program. --- .../javascript/Rafacv23.js | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js index d014f84435..e29c144395 100644 --- a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/javascript/Rafacv23.js @@ -230,5 +230,61 @@ const rl = readline.createInterface({ }) const prompt = (query) => new Promise((resolve) => rl.question(query, resolve)) +;(async () => { + try { + console.log( + "Bienvenido a Hogwarts, la escuela de Programación para magos y brujas del código." + ) + + for (let i = 0; i < preguntas.length; i++) { + const pregunta = preguntas[i] + + console.log(`\n${pregunta.pregunta}`) + pregunta.opciones.forEach((opcion, index) => { + console.log(`${index + 1}) ${opcion.respuesta}`) + }) + + let respuesta = await prompt("Selecciona una opción (1-4): ") + respuesta = parseInt(respuesta) - 1 + + // Validar que la respuesta esté en el rango adecuado + if (respuesta >= 0 && respuesta < pregunta.opciones.length) { + const casaSeleccionada = pregunta.opciones[respuesta].casa + puntosCasas[casaSeleccionada]++ + } else { + console.log( + "Opción inválida, por favor selecciona un número entre 1 y 4." + ) + i-- // Volver a preguntar si la opción es inválida + } + } + + // Encontrar el puntaje más alto + const maxPuntos = Math.max(...Object.values(puntosCasas)) + + // Encontrar todas las casas que tienen el puntaje más alto + const casasEmpatadas = Object.keys(puntosCasas).filter( + (casa) => puntosCasas[casa] === maxPuntos + ) + + let casaGanadora + + if (casasEmpatadas.length > 1) { + // Si hay empate, selecciona una casa al azar + console.log("\nEl sombrero ha tenido dificultades para decidir...") + const indiceAleatorio = Math.floor(Math.random() * casasEmpatadas.length) + casaGanadora = casasEmpatadas[indiceAleatorio] + } else { + // Si no hay empate, simplemente selecciona la casa ganadora + casaGanadora = casasEmpatadas[0] + } + + console.log(`\n¡Felicidades! Perteneces a la casa ${casaGanadora}.`) + rl.close() + } catch (e) { + console.error("Error en la selección", e) + } +})() + // When done reading prompt, exit program rl.on("close", () => process.exit(0)) From b87ecb38607dd3b7a646a2b0d8bd5f9dd78bfb35 Mon Sep 17 00:00:00 2001 From: Albert Mantaras <34039293+Mantaras96@users.noreply.github.com> Date: Mon, 9 Sep 2024 17:50:14 +0000 Subject: [PATCH 51/53] Ej36 sombrero --- .../java/mantaras96.java | 165 ++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 Roadmap/36 - EL SOMBRERO SELECCIONADOR/java/mantaras96.java diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/java/mantaras96.java b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/java/mantaras96.java new file mode 100644 index 0000000000..b79a861558 --- /dev/null +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/java/mantaras96.java @@ -0,0 +1,165 @@ +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.Scanner; + +public class Mantaras96 { + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + Respuestas respuestas = new Respuestas(); + + String name = obtenerNombreAlumno(scanner); + + List preguntas = cargarPreguntas(); + + // Aquí podrías llamar a otras funciones para continuar el programa, por + // ejemplo: + realizarPreguntas(scanner, respuestas, preguntas); + String casa = determinarCasa(respuestas); + System.out.println("El sombrero seleccionador ha decidido que perteneces a la casa: " + casa); + + scanner.close(); + } + + public static String determinarCasa(Respuestas respuestas) { + int maxPuntos = Math.max(Math.max(respuestas.getPuntosFront(), respuestas.getPuntosBack()), + Math.max(respuestas.getPuntosMobile(), respuestas.getPuntosData())); + List casasEmpatadas = new ArrayList<>(); + + if (respuestas.getPuntosFront() == maxPuntos) { + casasEmpatadas.add("Frontend"); + } + if (respuestas.getPuntosBack() == maxPuntos) { + casasEmpatadas.add("Backend"); + } + if (respuestas.getPuntosMobile() == maxPuntos) { + casasEmpatadas.add("Mobile"); + } + if (respuestas.getPuntosData() == maxPuntos) { + casasEmpatadas.add("Data"); + } + + if (casasEmpatadas.size() > 1) { + System.out.println("¡La decisión ha sido complicada! Hubo un empate."); + Random random = new Random(); + return casasEmpatadas.get(random.nextInt(casasEmpatadas.size())); + } else { + return casasEmpatadas.get(0); + } + } + + public static void mostrarResultados(Respuestas respuestas) { + String casa = determinarCasa(respuestas); + System.out.println("El sombrero seleccionador ha decidido que perteneces a la casa: " + casa); + } + + public static List cargarPreguntas() { + List preguntas = new ArrayList<>(); + preguntas.add( + "Pregunta 1: ¿Qué lenguaje de programación prefieres? (Responde con 1 para JavaScript, 2 para Java, 3 para Swift, 4 para Python)"); + preguntas.add( + "Pregunta 2: ¿Qué tipo de proyectos disfrutas más? (Responde con 1 para Aplicaciones web, 2 para Sistemas empresariales, 3 para Aplicaciones móviles, 4 para Análisis de datos)"); + preguntas.add( + "Pregunta 3: ¿Qué herramienta prefieres usar? (Responde con 1 para React, 2 para Spring, 3 para Xcode, 4 para Pandas)"); + preguntas.add( + "Pregunta 4: ¿Cuál es tu área de interés? (Responde con 1 para Diseño de interfaces, 2 para Arquitectura de software, 3 para Desarrollo de apps, 4 para Ciencia de datos)"); + preguntas.add( + "Pregunta 5: ¿Qué prefieres hacer en tu tiempo libre? (Responde con 1 para Crear sitios web, 2 para Trabajar en backend, 3 para Desarrollar juegos móviles, 4 para Analizar grandes conjuntos de datos)"); + preguntas.add( + "Pregunta 6: ¿Cuál es tu rol ideal en un equipo? (Responde con 1 para Diseñador UI/UX, 2 para Ingeniero de software, 3 para Desarrollador móvil, 4 para Científico de datos)"); + preguntas.add( + "Pregunta 7: ¿Qué tecnología te emociona más? (Responde con 1 para CSS y HTML, 2 para Microservicios, 3 para Kotlin, 4 para Machine Learning)"); + preguntas.add( + "Pregunta 8: ¿Qué tipo de problemas te gusta resolver? (Responde con 1 para Problemas de diseño, 2 para Problemas de lógica, 3 para Problemas de accesibilidad, 4 para Problemas de análisis de datos)"); + preguntas.add( + "Pregunta 9: ¿Qué tipo de lectura prefieres? (Responde con 1 para Blogs de diseño, 2 para Libros técnicos, 3 para Artículos sobre desarrollo móvil, 4 para Investigaciones de datos)"); + preguntas.add( + "Pregunta 10: ¿Dónde te ves en cinco años? (Responde con 1 para Desarrollando interfaces innovadoras, 2 para Liderando equipos de backend, 3 para Creando apps revolucionarias, 4 para Descubriendo insights en datos)"); + return preguntas; + } + + public static void realizarPreguntas(Scanner scanner, Respuestas respuestas, List preguntas) { + for (String pregunta : preguntas) { + boolean respuestaValida = false; + while (!respuestaValida) { + System.out.println(pregunta); + String respuesta = scanner.nextLine(); + try { + int puntos = Integer.parseInt(respuesta); + respuestas.addPointsToHouse(puntos); + respuestaValida = true; + } catch (NumberFormatException e) { + System.out.println("Por favor, ingrese un número válido."); + } + } + } + } + + public static String obtenerNombreAlumno(Scanner scanner) { + System.out.println("Bienvenido a Hogwarts. Indica tu nombre al sombrero seleccionador:"); + String name = scanner.nextLine(); + return name; + } + + public static class Respuestas { + int puntosFront = 0; + int puntosBack = 0; + int puntosMobile = 0; + int puntosData = 0; + + public int getPuntosFront() { + return puntosFront; + } + + public void setPuntosFront(int puntosFront) { + this.puntosFront = puntosFront; + } + + public int getPuntosBack() { + return puntosBack; + } + + public void setPuntosBack(int puntosBack) { + this.puntosBack = puntosBack; + } + + public int getPuntosMobile() { + return puntosMobile; + } + + public void setPuntosMobile(int puntosMobile) { + this.puntosMobile = puntosMobile; + } + + public int getPuntosData() { + return puntosData; + } + + public void setPuntosData(int puntosData) { + this.puntosData = puntosData; + } + + public Respuestas() { + // Constructor por defecto + } + + public void addPointsToHouse(int points) { + switch (points) { + case 1: + this.puntosFront++; + break; + case 2: + this.puntosBack++; + break; + case 3: + this.puntosMobile++; + break; + case 4: + this.puntosData++; + break; + } + + } + } +} From d83e506aa0c7213f358aab05f3a9eeb77823064a Mon Sep 17 00:00:00 2001 From: Brais Moure Date: Mon, 9 Sep 2024 21:16:58 +0200 Subject: [PATCH 52/53] =?UTF-8?q?Correcci=C3=B3n=20Roadmap=2036=20+=20Nuev?= =?UTF-8?q?o=20ejercicio=2037?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +- .../python/mouredev.py | 253 ++++++++++++++++++ .../37 - OASIS VS LINKIN PARK/ejercicio.md | 29 ++ 3 files changed, 286 insertions(+), 3 deletions(-) create mode 100644 Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/mouredev.py create mode 100644 Roadmap/37 - OASIS VS LINKIN PARK/ejercicio.md diff --git a/README.md b/README.md index a0c5b49814..ed5ee76a10 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,8 @@ ## Corrección y próximo ejercicio -> #### Lunes 9 de septiembre de 2024 a las 20:00 (hora España) desde **[Twitch](https://twitch.tv/mouredev)** -> #### Consulta el **[horario](https://discord.gg/7A9NDvrb?event=1277739431696138385)** por país y crea un **[recordatorio](https://discord.gg/7A9NDvrb?event=1277739431696138385)** +> #### Lunes 16 de septiembre de 2024 a las 20:00 (hora España) desde **[Twitch](https://twitch.tv/mouredev)** +> #### Consulta el **[horario](https://discord.gg/8cxgGTxm?event=1280229634524450877)** por país y crea un **[recordatorio](https://discord.gg/8cxgGTxm?event=1280229634524450877)** ## Roadmap @@ -70,7 +70,8 @@ |33|[RESCATANDO A MICKEY](./Roadmap/33%20-%20RESCATANDO%20A%20MICKEY/ejercicio.md)|[📝](./Roadmap/33%20-%20RESCATANDO%20A%20MICKEY/python/mouredev.py)|[▶️](https://youtu.be/Bo9Cp3N68C0)|[👥](./Roadmap/33%20-%20RESCATANDO%20A%20MICKEY/) |34|[ÁRBOL GENEALÓGICO DE LA CASA DEL DRAGÓN](./Roadmap/34%20-%20ÁRBOL%20GENEALÓGICO%20LA%20CASA%20DEL%20DRAGÓN/ejercicio.md)|[📝](./Roadmap/34%20-%20ÁRBOL%20GENEALÓGICO%20LA%20CASA%20DEL%20DRAGÓN/python/mouredev.py)|[▶️](https://youtu.be/GAHBOAzgE2w)|[👥](./Roadmap/34%20-%20ÁRBOL%20GENEALÓGICO%20LA%20CASA%20DEL%20DRAGÓN/) |35|[REPARTIENDO LOS ANILLOS DE PODER](./Roadmap/35%20-%20REPARTIENDO%20LOS%20ANILLOS%20DE%20PODER/ejercicio.md)|[📝](./Roadmap/35%20-%20REPARTIENDO%20LOS%20ANILLOS%20DE%20PODER/python/mouredev.py)|[▶️](https://youtu.be/10i2dnaMLj8)|[👥](./Roadmap/35%20-%20REPARTIENDO%20LOS%20ANILLOS%20DE%20PODER/) -|36|[EL SOMBRERO SELECCIONADOR](./Roadmap/36%20-%20EL%20SOMBRERO%20SELECCIONADOR/ejercicio.md)|[🗓️ 09/09/24](https://discord.gg/7A9NDvrb?event=1277739431696138385)||[👥](./Roadmap/36%20-%20EL%20SOMBRERO%20SELECCIONADOR/) +|36|[EL SOMBRERO SELECCIONADOR](./Roadmap/36%20-%20EL%20SOMBRERO%20SELECCIONADOR/ejercicio.md)|[📝](./Roadmap/36%20-%20EL%20SOMBRERO%20SELECCIONADOR/python/mouredev.py)||[👥](./Roadmap/36%20-%20EL%20SOMBRERO%20SELECCIONADOR/) +|37|[OASIS VS LINKIN PARK](./Roadmap/37%20-%20OASIS%20VS%20LINKIN%20PARK/ejercicio.md)|[🗓️ 16/09/24](https://discord.gg/8cxgGTxm?event=1280229634524450877)||[👥](./Roadmap/37%20-%20OASIS%20VS%20LINKIN%20PARK/) ## Cursos en YouTube diff --git a/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/mouredev.py b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/mouredev.py new file mode 100644 index 0000000000..922e4bd298 --- /dev/null +++ b/Roadmap/36 - EL SOMBRERO SELECCIONADOR/python/mouredev.py @@ -0,0 +1,253 @@ +import random + +houses = { + "Frontend": 0, + "Backend": 0, + "Mobile": 0, + "Data": 0 +} + +questions = [ + { + "question": "¿Qué tipo de proyectos te interesa más desarrollar?", + "answers": [ + { + "option": "Aplicaciones móviles nativas para múltiples plataformas.", + "house": "Mobile" + }, + { + "option": "Interfaces visualmente atractivas y responsivas.", + "house": "Frontend" + }, + { + "option": "Procesamiento y análisis de grandes volúmenes de datos.", + "house": "Data" + }, + { + "option": "Sistemas robustos y optimización de rendimiento del servidor.", + "house": "Backend" + } + ] + }, + { + "question": "¿Qué aspecto del desarrollo disfrutas más?", + "answers": [ + { + "option": "Resolver problemas complejos de lógica y escalabilidad.", + "house": "Backend" + }, + { + "option": "Analizar datos para tomar decisiones basadas en estadísticas.", + "house": "Data" + }, + { + "option": "Crear aplicaciones móviles eficientes y funcionales.", + "house": "Mobile" + }, + { + "option": "Trabajar en el diseño y la experiencia de usuario.", + "house": "Frontend" + } + ] + }, + { + "question": "¿Qué herramienta prefieres usar en tu día a día?", + "answers": [ + { + "option": "Kotlin o Swift para desarrollar apps móviles nativas.", + "house": "Mobile" + }, + { + "option": "Python o R para análisis de datos.", + "house": "Data" + }, + { + "option": "Frameworks como React o Angular.", + "house": "Frontend" + }, + { + "option": "Lenguajes como Node.js o Python para la gestión de servidores.", + "house": "Backend" + } + ] + }, + { + "question": "¿Cómo te ves en un equipo de desarrollo?", + "answers": [ + { + "option": "Modelando datos y construyendo dashboards de análisis.", + "house": "Data" + }, + { + "option": "Encargado de la lógica del servidor y las APIs.", + "house": "Backend" + }, + { + "option": "Desarrollando la interfaz y funcionalidad de una app móvil.", + "house": "Mobile" + }, + { + "option": "Diseñando las interacciones y los componentes visuales.", + "house": "Frontend" + } + ] + }, + { + "question": "¿Qué te motiva más al trabajar en un proyecto?", + "answers": [ + { + "option": "Ver cómo el diseño cobra vida en la pantalla.", + "house": "Frontend" + }, + { + "option": "Descubrir insights a partir del análisis de datos.", + "house": "Data" + }, + { + "option": "Optimizar el rendimiento y escalabilidad del sistema.", + "house": "Backend" + }, + { + "option": "Lograr que una aplicación móvil funcione perfectamente en cualquier dispositivo.", + "house": "Mobile" + } + ] + }, + { + "question": "¿Cuál es tu enfoque al aprender nuevas tecnologías?", + "answers": [ + { + "option": "Explorar técnicas avanzadas de análisis de datos y machine learning.", + "house": "Data" + }, + { + "option": "Aprender sobre nuevas arquitecturas y lenguajes de servidor.", + "house": "Backend" + }, + { + "option": "Probar nuevas plataformas y herramientas para desarrollo móvil.", + "house": "Mobile" + }, + { + "option": "Experimentar con nuevas librerías y frameworks de interfaz de usuario.", + "house": "Frontend" + } + ] + }, + { + "question": "¿Qué tipo de desafíos disfrutas más resolver?", + "answers": [ + { + "option": "Solución de problemas de concurrencia y carga en servidores.", + "house": "Backend" + }, + { + "option": "Optimización de interfaces para que se vean bien en cualquier dispositivo.", + "house": "Frontend" + }, + { + "option": "Análisis de grandes volúmenes de datos para detectar patrones ocultos.", + "house": "Data"}, + { + "option": "Creación de experiencias de usuario fluídas en dispositivos móviles.", + "house": "Mobile" + } + ] + }, + { + "question": "¿Cómo te gusta medir el éxito de tu trabajo?", + "answers": [ + { + "option": "Por la estabilidad y rapidez del sistema bajo carga.", + "house": "Backend" + }, + { + "option": "Mediante la satisfacción del usuario con la interfaz visual.", + "house": "Frontend" + }, + { + "option": "Por la fluidez y buen rendimiento de la app móvil en diferentes dispositivos.", + "house": "Mobile"}, + { + "option": "Por la precisión y relevancia de los resultados obtenidos en el análisis de datos.", + "house": "Data" + } + ] + }, + { + "question": "¿Qué te resulta más interesante al trabajar con tecnologías emergentes?", + "answers": [ + { + "option": "Trabajar con tecnologías de big data o inteligencia artificial.", + "house": "Data" + }, + { + "option": "Explorar nuevas arquitecturas para mejorar el rendimiento del servidor.", + "house": "Backend" + }, + { + "option": "Probar nuevas herramientas y metodologías para mejorar el diseño y la UX.", + "house": "Frontend" + }, + { + "option": "Desarrollar apps móviles que aprovechen nuevas capacidades de hardware.", + "house": "Mobile" + } + ] + }, + { + "question": "¿Cómo te enfrentas a un nuevo problema en un proyecto?", + "answers": [ + { + "option": "Buscando patrones y soluciones basadas en análisis de datos.", + "house": "Data" + }, + { + "option": "Replanteando la estructura visual y funcional de la interfaz.", + "house": "Frontend" + }, + { + "option": "Explorando cómo mejorar la experiencia del usuario en dispositivos móviles.", + "house": "Mobile" + }, + { + "option": "Analizando la estructura de datos y la lógica del backend.", + "house": "Backend" + } + ] + } +] + +print("\n¡Bienvenido a Hogwarts, la escuela de programación para magos y brujas del código!") +print("El sombrero seleccionador decidirá cuál es tu casa como programador.") + +name = input("\n¿Cuál es tu nombre? ") + +for index, question in enumerate(questions): + + print(f"\nPregunta {index + 1}: {question["question"]}\n") + + for i, answer in enumerate(question["answers"]): + print(f"{i + 1}. {answer["option"]}") + + choice = int(input("\nSelecciona una respuesta entre 1 y 4: ")) + + selected_answer = question["answers"][choice - 1] + houses[selected_answer["house"]] += 1 + +assigned_house = max(houses, key=houses.get) +scores = list(houses.values()) + +if scores.count(max(scores)) > 1: + possible_houses = [ + house for house, + points in houses.items() if points == max(scores) + ] + assigned_house = random.choice(possible_houses) + + print( + f"""\nHmmmm... Ha sido una decisión muy complicada, { + name}.\n¡Pero finalmente tu casa será {assigned_house}!""" + ) +else: + print(f"\nEnhorabuena, {name}.\n¡Tu casa será {assigned_house}!") diff --git a/Roadmap/37 - OASIS VS LINKIN PARK/ejercicio.md b/Roadmap/37 - OASIS VS LINKIN PARK/ejercicio.md new file mode 100644 index 0000000000..1a12932b5a --- /dev/null +++ b/Roadmap/37 - OASIS VS LINKIN PARK/ejercicio.md @@ -0,0 +1,29 @@ +# #37 OASIS VS LINKIN PARK +> #### Dificultad: Media | Publicación: 09/09/24 | Corrección: 16/09/24 + +## Ejercicio + +``` +/* + * EJERCICIO: + * ¡Dos de las bandas más grandes de la historia están de vuelta! + * Oasis y Linkin Park han anunciado nueva gira, pero, ¿quién es más popular? + * Desarrolla un programa que se conecte al API de Spotify y los compare. + * Requisitos: + * 1. Crea una cuenta de desarrollo en https://developer.spotify.com. + * 2. Conéctate al API utilizando tu lenguaje de programación. + * 3. Recupera datos de los endpoint que tú quieras. + * Acciones: + * 1. Accede a las estadísticas de las dos bandas. + * Por ejemplo: número total de seguidores, escuchas mensuales, + * canción con más reproducciones... + * 2. Compara los resultados de, por lo menos, 3 endpoint. + * 3. Muestra todos los resultados por consola para notificar al usuario. + * 4. Desarrolla un criterio para seleccionar qué banda es más popular. + */ +``` +#### Tienes toda la información extendida sobre el roadmap de retos de programación en **[retosdeprogramacion.com/roadmap](https://retosdeprogramacion.com/roadmap)**. + +Sigue las **[instrucciones](../../README.md)**, consulta las correcciones y aporta la tuya propia utilizando el lenguaje de programación que quieras. + +> Recuerda que cada semana se publica un nuevo ejercicio y se corrige el de la semana anterior en directo desde **[Twitch](https://twitch.tv/mouredev)**. Tienes el horario en la sección "eventos" del servidor de **[Discord](https://discord.gg/mouredev)**. \ No newline at end of file From 33200482e91a630bfd2ce8a6b8cd0c41d6146236 Mon Sep 17 00:00:00 2001 From: mouredev Date: Tue, 10 Sep 2024 00:15:04 +0000 Subject: [PATCH 53/53] Update stats --- Roadmap/stats.json | 2115 ++++++++++++++++++++++---------------------- 1 file changed, 1081 insertions(+), 1034 deletions(-) diff --git a/Roadmap/stats.json b/Roadmap/stats.json index d3b641f0cc..d1aebb947e 100644 --- a/Roadmap/stats.json +++ b/Roadmap/stats.json @@ -1,28 +1,28 @@ { - "challenges_total": 37, + "challenges_total": 38, "languages_total": 48, - "files_total": 6879, - "users_total": 1151, + "files_total": 6920, + "users_total": 1158, "challenges_ranking": [ { "order": 1, "name": "00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO", - "count": 1254 + "count": 1261 }, { "order": 2, "name": "01 - OPERADORES Y ESTRUCTURAS DE CONTROL", - "count": 761 + "count": 765 }, { "order": 3, "name": "02 - FUNCIONES Y ALCANCE", - "count": 584 + "count": 585 }, { "order": 4, "name": "03 - ESTRUCTURAS DE DATOS", - "count": 400 + "count": 401 }, { "order": 5, @@ -42,12 +42,12 @@ { "order": 8, "name": "07 - PILAS Y COLAS", - "count": 242 + "count": 244 }, { "order": 9, "name": "08 - CLASES", - "count": 222 + "count": 225 }, { "order": 10, @@ -62,22 +62,22 @@ { "order": 12, "name": "11 - MANEJO DE FICHEROS", - "count": 154 + "count": 155 }, { "order": 13, - "name": "13 - PRUEBAS UNITARIAS", + "name": "14 - FECHAS", "count": 130 }, { "order": 14, - "name": "14 - FECHAS", - "count": 129 + "name": "13 - PRUEBAS UNITARIAS", + "count": 130 }, { "order": 15, "name": "12 - JSON Y XML", - "count": 128 + "count": 129 }, { "order": 16, @@ -92,12 +92,12 @@ { "order": 18, "name": "17 - ITERACIONES", - "count": 113 + "count": 114 }, { "order": 19, "name": "18 - CONJUNTOS", - "count": 111 + "count": 112 }, { "order": 20, @@ -137,12 +137,12 @@ { "order": 27, "name": "26 - SOLID SRP", - "count": 63 + "count": 64 }, { "order": 28, "name": "27 - SOLID OCP", - "count": 59 + "count": 60 }, { "order": 29, @@ -156,12 +156,12 @@ }, { "order": 31, - "name": "30 - SOLID DIP", - "count": 46 + "name": "32 - BATALLA DEADPOOL Y WOLVERINE", + "count": 47 }, { "order": 32, - "name": "32 - BATALLA DEADPOOL Y WOLVERINE", + "name": "30 - SOLID DIP", "count": 46 }, { @@ -171,97 +171,102 @@ }, { "order": 34, - "name": "31 - SIMULADOR JUEGOS OL\u00cdMPICOS", + "name": "35 - REPARTIENDO LOS ANILLOS DE PODER", "count": 38 }, { "order": 35, - "name": "35 - REPARTIENDO LOS ANILLOS DE PODER", - "count": 37 + "name": "31 - SIMULADOR JUEGOS OL\u00cdMPICOS", + "count": 38 }, { "order": 36, + "name": "36 - EL SOMBRERO SELECCIONADOR", + "count": 36 + }, + { + "order": 37, "name": "34 - \u00c1RBOL GENEAL\u00d3GICO LA CASA DEL DRAG\u00d3N", "count": 32 }, { - "order": 37, - "name": "36 - EL SOMBRERO SELECCIONADOR", - "count": 22 + "order": 38, + "name": "37 - OASIS VS LINKIN PARK", + "count": 0 } ], "languages_ranking": [ { "order": 1, "name": "python", - "count": 2962, - "percentage": 43.06 + "count": 2979, + "percentage": 43.05 }, { "order": 2, "name": "javascript", - "count": 1370, - "percentage": 19.92 + "count": 1378, + "percentage": 19.91 }, { "order": 3, "name": "java", - "count": 614, - "percentage": 8.93 + "count": 619, + "percentage": 8.95 }, { "order": 4, "name": "typescript", - "count": 303, - "percentage": 4.4 + "count": 305, + "percentage": 4.41 }, { "order": 5, "name": "c#", "count": 253, - "percentage": 3.68 + "percentage": 3.66 }, { "order": 6, "name": "kotlin", - "count": 212, - "percentage": 3.08 + "count": 215, + "percentage": 3.11 }, { "order": 7, "name": "go", - "count": 212, + "count": 213, "percentage": 3.08 }, { "order": 8, "name": "swift", "count": 166, - "percentage": 2.41 + "percentage": 2.4 }, { "order": 9, "name": "php", - "count": 151, + "count": 152, "percentage": 2.2 }, { "order": 10, - "name": "rust", - "count": 113, - "percentage": 1.64 + "name": "c++", + "count": 114, + "percentage": 1.65 }, { "order": 11, - "name": "c++", + "name": "rust", "count": 113, - "percentage": 1.64 + "percentage": 1.63 }, { "order": 12, "name": "c", - "count": 66, - "percentage": 0.96 + "count": 67, + "percentage": 0.97 }, { "order": 13, @@ -272,14 +277,14 @@ { "order": 14, "name": "bash", - "count": 41, - "percentage": 0.6 + "count": 43, + "percentage": 0.62 }, { "order": 15, "name": "vb.net", "count": 37, - "percentage": 0.54 + "percentage": 0.53 }, { "order": 16, @@ -327,13 +332,13 @@ "order": 23, "name": "julia", "count": 10, - "percentage": 0.15 + "percentage": 0.14 }, { "order": 24, "name": "scala", "count": 10, - "percentage": 0.15 + "percentage": 0.14 }, { "order": 25, @@ -484,7 +489,7 @@ { "order": 1, "name": "miguelex", - "count": 156, + "count": 161, "languages": 15 }, { @@ -496,7 +501,7 @@ { "order": 3, "name": "hozlucas28", - "count": 103, + "count": 105, "languages": 3 }, { @@ -562,7 +567,7 @@ { "order": 14, "name": "jesusantonioeescamilla", - "count": 52, + "count": 55, "languages": 3 }, { @@ -573,39 +578,39 @@ }, { "order": 16, - "name": "amadorquispe", - "count": 49, - "languages": 2 + "name": "cesarcarmona30", + "count": 50, + "languages": 4 }, { "order": 17, - "name": "cesarcarmona30", - "count": 48, - "languages": 4 + "name": "amadorquispe", + "count": 49, + "languages": 2 }, { "order": 18, - "name": "ricjdev", + "name": "juanppdev", "count": 47, - "languages": 2 + "languages": 3 }, { "order": 19, - "name": "raulg91", + "name": "ricjdev", "count": 47, "languages": 2 }, { "order": 20, - "name": "jesusway69", + "name": "raulg91", "count": 47, "languages": 2 }, { "order": 21, - "name": "juanppdev", - "count": 46, - "languages": 3 + "name": "jesusway69", + "count": 47, + "languages": 2 }, { "order": 22, @@ -663,38 +668,38 @@ }, { "order": 31, - "name": "asjordi", + "name": "mouredev", "count": 37, "languages": 1 }, { "order": 32, - "name": "n0hagonada", - "count": 36, - "languages": 3 + "name": "asjordi", + "count": 37, + "languages": 1 }, { "order": 33, - "name": "emmanuelmmontesinos", + "name": "n0hagonada", "count": 36, - "languages": 1 + "languages": 3 }, { "order": 34, - "name": "mouredev", + "name": "rauldoezon", "count": 36, "languages": 1 }, { "order": 35, - "name": "rauldoezon", - "count": 35, + "name": "emmanuelmmontesinos", + "count": 36, "languages": 1 }, { "order": 36, "name": "rigo93acosta", - "count": 35, + "count": 36, "languages": 1 }, { @@ -717,49 +722,49 @@ }, { "order": 40, + "name": "qv1ko", + "count": 33, + "languages": 4 + }, + { + "order": 41, "name": "worlion", "count": 33, "languages": 2 }, { - "order": 41, + "order": 42, "name": "avcenal", "count": 33, "languages": 1 }, { - "order": 42, + "order": 43, "name": "juandaherrera", "count": 32, "languages": 5 }, { - "order": 43, + "order": 44, "name": "pedroomar23", "count": 32, "languages": 3 }, { - "order": 44, + "order": 45, "name": "pyramsd", "count": 32, "languages": 1 }, { - "order": 45, + "order": 46, "name": "fborjalv", "count": 32, "languages": 1 }, - { - "order": 46, - "name": "ronipg", - "count": 31, - "languages": 4 - }, { "order": 47, - "name": "qv1ko", + "name": "ronipg", "count": 31, "languages": 4 }, @@ -807,40 +812,40 @@ }, { "order": 55, + "name": "eulogioep", + "count": 28, + "languages": 1 + }, + { + "order": 56, "name": "thegera4", "count": 27, "languages": 2 }, { - "order": 56, + "order": 57, "name": "parababire", "count": 27, "languages": 1 }, { - "order": 57, + "order": 58, "name": "isilanes", "count": 27, "languages": 1 }, { - "order": 58, + "order": 59, "name": "lucasrebuffo", "count": 27, "languages": 1 }, { - "order": 59, + "order": 60, "name": "nightblockchain30", "count": 26, "languages": 2 }, - { - "order": 60, - "name": "eulogioep", - "count": 26, - "languages": 1 - }, { "order": 61, "name": "caverobrandon", @@ -855,21 +860,21 @@ }, { "order": 63, - "name": "monicavaquerano", + "name": "isaacus98", "count": 25, - "languages": 2 + "languages": 4 }, { "order": 64, - "name": "allbertomd", + "name": "monicavaquerano", "count": 25, - "languages": 1 + "languages": 2 }, { "order": 65, - "name": "isaacus98", - "count": 24, - "languages": 3 + "name": "allbertomd", + "count": 25, + "languages": 1 }, { "order": 66, @@ -993,67 +998,67 @@ }, { "order": 86, - "name": "trufoplus", + "name": "juandaw37", "count": 19, "languages": 1 }, { "order": 87, + "name": "trufoplus", + "count": 19, + "languages": 1 + }, + { + "order": 88, "name": "pguillo02", "count": 18, "languages": 5 }, { - "order": 88, + "order": 89, "name": "estuardodev", "count": 18, "languages": 4 }, { - "order": 89, + "order": 90, "name": "lumanet", "count": 18, "languages": 1 }, { - "order": 90, + "order": 91, "name": "mensius87", "count": 17, "languages": 4 }, { - "order": 91, + "order": 92, "name": "kevined11", "count": 17, "languages": 3 }, { - "order": 92, + "order": 93, "name": "raulfauli", "count": 17, "languages": 2 }, { - "order": 93, + "order": 94, "name": "saicobys", "count": 17, "languages": 2 }, - { - "order": 94, - "name": "andreavzqz", - "count": 17, - "languages": 1 - }, { "order": 95, - "name": "hyromy", + "name": "andreavzqz", "count": 17, "languages": 1 }, { "order": 96, - "name": "juandaw37", + "name": "hyromy", "count": 17, "languages": 1 }, @@ -1137,55 +1142,55 @@ }, { "order": 110, - "name": "sniker1223", - "count": 14, - "languages": 4 + "name": "gordo-master", + "count": 15, + "languages": 1 }, { "order": 111, - "name": "redom69", + "name": "sniker1223", "count": 14, "languages": 4 }, { "order": 112, - "name": "andresgcastillo", + "name": "redom69", "count": 14, - "languages": 2 + "languages": 4 }, { "order": 113, - "name": "ygriegasb", + "name": "andresgcastillo", "count": 14, "languages": 2 }, { "order": 114, - "name": "gonzadev28", + "name": "ygriegasb", "count": 14, "languages": 2 }, { "order": 115, - "name": "elmer125", + "name": "gonzadev28", "count": 14, - "languages": 1 + "languages": 2 }, { "order": 116, - "name": "vincentrodriguezr", + "name": "elmer125", "count": 14, "languages": 1 }, { "order": 117, - "name": "mikelm2020", + "name": "vincentrodriguezr", "count": 14, "languages": 1 }, { "order": 118, - "name": "gordo-master", + "name": "mikelm2020", "count": 14, "languages": 1 }, @@ -1257,181 +1262,181 @@ }, { "order": 130, - "name": "neosv", + "name": "mvidalb", "count": 13, "languages": 1 }, { "order": 131, - "name": "julian98789", + "name": "neosv", "count": 13, "languages": 1 }, { "order": 132, + "name": "julian98789", + "count": 13, + "languages": 1 + }, + { + "order": 133, "name": "juanrcoder", "count": 12, "languages": 2 }, { - "order": 133, + "order": 134, "name": "keltoi-dev", "count": 12, "languages": 2 }, { - "order": 134, + "order": 135, "name": "andresmcardenas", "count": 12, "languages": 2 }, { - "order": 135, + "order": 136, "name": "a-mayans", "count": 12, "languages": 2 }, { - "order": 136, + "order": 137, "name": "deathwing696", "count": 12, "languages": 2 }, { - "order": 137, + "order": 138, "name": "pancratzia", "count": 12, "languages": 1 }, { - "order": 138, + "order": 139, "name": "jeronimocardu", "count": 12, "languages": 1 }, { - "order": 139, + "order": 140, "name": "evilpotato04", "count": 12, "languages": 1 }, { - "order": 140, + "order": 141, "name": "javierjoyera", "count": 12, "languages": 1 }, { - "order": 141, + "order": 142, "name": "dataciriano", "count": 12, "languages": 1 }, { - "order": 142, + "order": 143, "name": "josealberto13", "count": 12, "languages": 1 }, { - "order": 143, + "order": 144, "name": "clmiranda", "count": 12, "languages": 1 }, { - "order": 144, + "order": 145, "name": "andrewcodev", "count": 12, "languages": 1 }, { - "order": 145, + "order": 146, "name": "javierfiestasbotella", "count": 12, "languages": 1 }, { - "order": 146, + "order": 147, "name": "pipe281", "count": 12, "languages": 1 }, { - "order": 147, + "order": 148, "name": "jchavescaceres", "count": 11, "languages": 2 }, { - "order": 148, + "order": 149, "name": "switchdays", "count": 11, "languages": 2 }, { - "order": 149, + "order": 150, "name": "arkmiguel379", "count": 11, "languages": 2 }, - { - "order": 150, - "name": "ialmontedr0", - "count": 11, - "languages": 1 - }, { "order": 151, - "name": "charlerodriguez3", + "name": "ialmontedr0", "count": 11, "languages": 1 }, { "order": 152, - "name": "oleojake", + "name": "charlerodriguez3", "count": 11, "languages": 1 }, { "order": 153, - "name": "7r0n1x", + "name": "oleojake", "count": 11, "languages": 1 }, { "order": 154, - "name": "alainmartz", + "name": "7r0n1x", "count": 11, "languages": 1 }, { "order": 155, - "name": "warclimb", + "name": "alainmartz", "count": 11, "languages": 1 }, { "order": 156, - "name": "mirandayuber", + "name": "warclimb", "count": 11, "languages": 1 }, { "order": 157, - "name": "m1l0j05", + "name": "mirandayuber", "count": 11, "languages": 1 }, { "order": 158, - "name": "59822", + "name": "m1l0j05", "count": 11, "languages": 1 }, { "order": 159, - "name": "mvidalb", + "name": "59822", "count": 11, "languages": 1 }, @@ -2061,1777 +2066,1777 @@ }, { "order": 264, - "name": "eloychavezdev", + "name": "oixild", "count": 5, - "languages": 1 + "languages": 2 }, { "order": 265, - "name": "vasilealexandru02", + "name": "eloychavezdev", "count": 5, "languages": 1 }, { "order": 266, - "name": "esaens12", + "name": "vasilealexandru02", "count": 5, "languages": 1 }, { "order": 267, - "name": "victormugo", + "name": "esaens12", "count": 5, "languages": 1 }, { "order": 268, - "name": "adridoce", + "name": "victormugo", "count": 5, "languages": 1 }, { "order": 269, - "name": "vixito", + "name": "adridoce", "count": 5, "languages": 1 }, { "order": 270, - "name": "danielbustos342", + "name": "vixito", "count": 5, "languages": 1 }, { "order": 271, - "name": "douglasdiazr", + "name": "danielbustos342", "count": 5, "languages": 1 }, { "order": 272, - "name": "n1sek", + "name": "douglasdiazr", "count": 5, "languages": 1 }, { "order": 273, - "name": "robmxz", + "name": "n1sek", "count": 5, "languages": 1 }, { "order": 274, - "name": "d4-n1", + "name": "robmxz", "count": 5, "languages": 1 }, { "order": 275, - "name": "lauracastrillonmp", + "name": "d4-n1", "count": 5, "languages": 1 }, { "order": 276, - "name": "joanfv-git", + "name": "lauracastrillonmp", "count": 5, "languages": 1 }, { "order": 277, - "name": "yharyarias", + "name": "joanfv-git", "count": 5, "languages": 1 }, { "order": 278, - "name": "jorgeadamowicz", + "name": "yharyarias", "count": 5, "languages": 1 }, { "order": 279, - "name": "franz-arzapalo", + "name": "jorgeadamowicz", "count": 5, "languages": 1 }, { "order": 280, - "name": "d0ubt0", + "name": "franz-arzapalo", "count": 5, "languages": 1 }, { "order": 281, - "name": "gmbarrios", + "name": "d0ubt0", "count": 5, "languages": 1 }, { "order": 282, - "name": "santiago434c", + "name": "gmbarrios", "count": 5, "languages": 1 }, { "order": 283, - "name": "augustdev2003", + "name": "santiago434c", "count": 5, "languages": 1 }, { "order": 284, - "name": "alberba", + "name": "augustdev2003", "count": 5, "languages": 1 }, { "order": 285, - "name": "gabrielramos02", + "name": "alberba", "count": 5, "languages": 1 }, { "order": 286, - "name": "thezhizn", + "name": "gabrielramos02", "count": 5, "languages": 1 }, { "order": 287, - "name": "jose-luis-lanza", + "name": "thezhizn", "count": 5, "languages": 1 }, { "order": 288, - "name": "nomellamodante", + "name": "jose-luis-lanza", "count": 5, "languages": 1 }, { "order": 289, - "name": "karolle", + "name": "nomellamodante", "count": 5, "languages": 1 }, { "order": 290, - "name": "jcrodmir", + "name": "karolle", "count": 5, "languages": 1 }, { "order": 291, - "name": "alvarofernandezavalos", + "name": "jcrodmir", "count": 5, "languages": 1 }, { "order": 292, - "name": "lucasag01", + "name": "alvarofernandezavalos", "count": 5, "languages": 1 }, { "order": 293, - "name": "thaishdz", + "name": "lucasag01", "count": 5, "languages": 1 }, { "order": 294, - "name": "bastianalq", + "name": "thaishdz", "count": 5, "languages": 1 }, { "order": 295, - "name": "w00k", + "name": "bastianalq", "count": 5, "languages": 1 }, { "order": 296, - "name": "boterop", + "name": "w00k", "count": 5, "languages": 1 }, { "order": 297, - "name": "zarakilancelot", - "count": 4, - "languages": 3 + "name": "boterop", + "count": 5, + "languages": 1 }, { "order": 298, - "name": "eonozux", - "count": 4, - "languages": 2 + "name": "rafacv23", + "count": 5, + "languages": 1 }, { "order": 299, - "name": "yablik", + "name": "zarakilancelot", "count": 4, - "languages": 2 + "languages": 3 }, { "order": 300, - "name": "fullovellas", + "name": "eonozux", "count": 4, "languages": 2 }, { "order": 301, - "name": "k3nvd", + "name": "yablik", "count": 4, "languages": 2 }, { "order": 302, - "name": "josefuentes-dev", + "name": "fullovellas", "count": 4, "languages": 2 }, { "order": 303, - "name": "willr30", + "name": "k3nvd", "count": 4, "languages": 2 }, { "order": 304, - "name": "ruthmp", + "name": "josefuentes-dev", "count": 4, "languages": 2 }, { "order": 305, - "name": "oixild", + "name": "willr30", "count": 4, "languages": 2 }, { "order": 306, - "name": "daeduol", + "name": "ruthmp", "count": 4, "languages": 2 }, { "order": 307, - "name": "mendozalz", + "name": "daeduol", "count": 4, "languages": 2 }, { "order": 308, - "name": "salkalero", + "name": "mendozalz", "count": 4, "languages": 2 }, { "order": 309, - "name": "elhacedordecosas", + "name": "salkalero", "count": 4, - "languages": 1 + "languages": 2 }, { "order": 310, - "name": "andeveling", + "name": "drvito1977", "count": 4, "languages": 1 }, { "order": 311, - "name": "santiago-munoz-garcia", + "name": "elhacedordecosas", "count": 4, "languages": 1 }, { "order": 312, - "name": "deivitdev", + "name": "andeveling", "count": 4, "languages": 1 }, { "order": 313, - "name": "joshbaez", + "name": "santiago-munoz-garcia", "count": 4, "languages": 1 }, { "order": 314, - "name": "marcoslombardo", + "name": "deivitdev", "count": 4, "languages": 1 }, { "order": 315, - "name": "lrpeset", + "name": "joshbaez", "count": 4, "languages": 1 }, { "order": 316, - "name": "dieswae", + "name": "marcoslombardo", "count": 4, "languages": 1 }, { "order": 317, - "name": "mateo423", + "name": "lrpeset", "count": 4, "languages": 1 }, { "order": 318, - "name": "joaquinlopez14", + "name": "dieswae", "count": 4, "languages": 1 }, { "order": 319, - "name": "angelurrutdev", + "name": "mateo423", "count": 4, "languages": 1 }, { "order": 320, - "name": "elianisdev", + "name": "joaquinlopez14", "count": 4, "languages": 1 }, { "order": 321, - "name": "omegatroy", + "name": "angelurrutdev", "count": 4, "languages": 1 }, { "order": 322, - "name": "socramwd", + "name": "elianisdev", "count": 4, "languages": 1 }, { "order": 323, - "name": "carzep09", + "name": "omegatroy", "count": 4, "languages": 1 }, { "order": 324, - "name": "mayerga", + "name": "socramwd", "count": 4, "languages": 1 }, { "order": 325, - "name": "hugovrc", + "name": "carzep09", "count": 4, "languages": 1 }, { "order": 326, - "name": "cdbiancotti", + "name": "mayerga", "count": 4, "languages": 1 }, { "order": 327, - "name": "h4ckxel", + "name": "hugovrc", "count": 4, "languages": 1 }, { "order": 328, - "name": "tobibordino", + "name": "cdbiancotti", "count": 4, "languages": 1 }, { "order": 329, - "name": "guillermo-k", + "name": "h4ckxel", "count": 4, "languages": 1 }, { "order": 330, - "name": "zakkdrte", + "name": "tobibordino", "count": 4, "languages": 1 }, { "order": 331, - "name": "sarismejiasanchez", + "name": "guillermo-k", "count": 4, "languages": 1 }, { "order": 332, - "name": "buriticasara", + "name": "zakkdrte", "count": 4, "languages": 1 }, { "order": 333, - "name": "davstudy", + "name": "sarismejiasanchez", "count": 4, "languages": 1 }, { "order": 334, - "name": "zerek247", + "name": "buriticasara", "count": 4, "languages": 1 }, { "order": 335, - "name": "vicman-182", + "name": "davstudy", "count": 4, "languages": 1 }, { "order": 336, - "name": "dlgai12", + "name": "zerek247", "count": 4, "languages": 1 }, { "order": 337, - "name": "rodrigoghr", + "name": "vicman-182", "count": 4, "languages": 1 }, { "order": 338, - "name": "txuky", + "name": "dlgai12", "count": 4, "languages": 1 }, { "order": 339, - "name": "nox456", + "name": "rodrigoghr", "count": 4, "languages": 1 }, { "order": 340, - "name": "mplatab", + "name": "txuky", "count": 4, "languages": 1 }, { "order": 341, - "name": "angell4s", + "name": "nox456", "count": 4, "languages": 1 }, { "order": 342, - "name": "quejuan52", + "name": "mplatab", "count": 4, "languages": 1 }, { "order": 343, - "name": "axelprz", + "name": "angell4s", "count": 4, "languages": 1 }, { "order": 344, - "name": "javirub", + "name": "quejuan52", "count": 4, "languages": 1 }, { "order": 345, - "name": "mallcca", + "name": "axelprz", "count": 4, "languages": 1 }, { "order": 346, - "name": "sunjamer", + "name": "javirub", "count": 4, "languages": 1 }, { "order": 347, - "name": "carrenoalexander", + "name": "mallcca", "count": 4, "languages": 1 }, { "order": 348, - "name": "jadraz", + "name": "sunjamer", "count": 4, "languages": 1 }, { "order": 349, - "name": "anvildestroyer", + "name": "carrenoalexander", "count": 4, "languages": 1 }, { "order": 350, - "name": "luissssoto", + "name": "jadraz", "count": 4, "languages": 1 }, { "order": 351, - "name": "albertorevel", + "name": "anvildestroyer", "count": 4, "languages": 1 }, { "order": 352, - "name": "juanca2805", + "name": "luissssoto", "count": 4, "languages": 1 }, { "order": 353, - "name": "bladi23", + "name": "albertorevel", "count": 4, "languages": 1 }, { "order": 354, - "name": "blasbarragan", + "name": "juanca2805", "count": 4, "languages": 1 }, { "order": 355, - "name": "jerrysantana", + "name": "bladi23", "count": 4, "languages": 1 }, { "order": 356, - "name": "abel-ade", + "name": "blasbarragan", "count": 4, "languages": 1 }, { "order": 357, - "name": "jairo-alejandro", + "name": "jerrysantana", "count": 4, "languages": 1 }, { "order": 358, - "name": "sbs24", + "name": "abel-ade", "count": 4, "languages": 1 }, { "order": 359, - "name": "traver79", + "name": "jairo-alejandro", "count": 4, "languages": 1 }, { "order": 360, - "name": "ramxv", + "name": "sbs24", "count": 4, "languages": 1 }, { "order": 361, - "name": "inkhemi", + "name": "traver79", "count": 4, "languages": 1 }, { "order": 362, - "name": "juperdev", + "name": "ramxv", "count": 4, "languages": 1 }, { "order": 363, - "name": "rafacv23", + "name": "inkhemi", "count": 4, "languages": 1 }, { "order": 364, - "name": "d1d4cum", + "name": "juperdev", "count": 4, "languages": 1 }, { "order": 365, - "name": "mohamedelderkaoui", + "name": "d1d4cum", "count": 4, "languages": 1 }, { "order": 366, + "name": "mohamedelderkaoui", + "count": 4, + "languages": 1 + }, + { + "order": 367, "name": "abelsrzz", "count": 3, "languages": 3 }, { - "order": 367, + "order": 368, "name": "angelo-eyama", "count": 3, "languages": 3 }, { - "order": 368, + "order": 369, "name": "akaisombra", "count": 3, "languages": 3 }, { - "order": 369, + "order": 370, "name": "oskarcali", "count": 3, "languages": 3 }, { - "order": 370, + "order": 371, "name": "owen-ian", "count": 3, "languages": 3 }, { - "order": 371, + "order": 372, "name": "jehiselruth", "count": 3, "languages": 3 }, { - "order": 372, + "order": 373, "name": "n-skot", "count": 3, "languages": 2 }, { - "order": 373, + "order": 374, + "name": "clotrack", + "count": 3, + "languages": 2 + }, + { + "order": 375, "name": "dimasb69", "count": 3, "languages": 2 }, { - "order": 374, + "order": 376, "name": "alfarog507", "count": 3, "languages": 2 }, { - "order": 375, + "order": 377, "name": "eloitr", "count": 3, "languages": 2 }, { - "order": 376, + "order": 378, "name": "diegopc-dev", "count": 3, "languages": 2 }, { - "order": 377, + "order": 379, "name": "robindev1812", "count": 3, "languages": 2 }, { - "order": 378, + "order": 380, "name": "arliumdev", "count": 3, "languages": 2 }, { - "order": 379, + "order": 381, "name": "skala2301", "count": 3, "languages": 2 }, { - "order": 380, + "order": 382, "name": "pablotaber", "count": 3, "languages": 2 }, { - "order": 381, + "order": 383, "name": "allanoscoding", "count": 3, "languages": 2 }, { - "order": 382, + "order": 384, "name": "seba9906", "count": 3, "languages": 2 }, { - "order": 383, + "order": 385, "name": "augustosdev", "count": 3, "languages": 2 }, { - "order": 384, + "order": 386, "name": "dylanb55", "count": 3, "languages": 1 }, { - "order": 385, + "order": 387, "name": "mellamoomar", "count": 3, "languages": 1 }, { - "order": 386, + "order": 388, "name": "oscar503sv", "count": 3, "languages": 1 }, { - "order": 387, + "order": 389, "name": "alejomazov", "count": 3, "languages": 1 }, { - "order": 388, + "order": 390, "name": "bryanalzate007", "count": 3, "languages": 1 }, { - "order": 389, + "order": 391, "name": "ivanpelu7", "count": 3, "languages": 1 }, { - "order": 390, + "order": 392, "name": "dmauricio4", "count": 3, "languages": 1 }, { - "order": 391, + "order": 393, "name": "davidr1594", "count": 3, "languages": 1 }, { - "order": 392, + "order": 394, "name": "vandresca", "count": 3, "languages": 1 }, { - "order": 393, + "order": 395, "name": "marlonleon2023", "count": 3, "languages": 1 }, { - "order": 394, + "order": 396, "name": "nikorasu-d", "count": 3, "languages": 1 }, { - "order": 395, + "order": 397, "name": "barbafebles", "count": 3, "languages": 1 }, { - "order": 396, + "order": 398, "name": "heliercamejo", "count": 3, "languages": 1 }, { - "order": 397, + "order": 399, "name": "aggranadoss", "count": 3, "languages": 1 }, { - "order": 398, + "order": 400, "name": "dannyvera1234", "count": 3, "languages": 1 }, { - "order": 399, + "order": 401, "name": "axelsparta", "count": 3, "languages": 1 }, { - "order": 400, + "order": 402, "name": "gitperalta", "count": 3, "languages": 1 }, { - "order": 401, + "order": 403, "name": "samuelarandia", "count": 3, "languages": 1 }, { - "order": 402, + "order": 404, "name": "jaimerocel96", "count": 3, "languages": 1 }, { - "order": 403, + "order": 405, "name": "sitnestic", "count": 3, "languages": 1 }, { - "order": 404, + "order": 406, "name": "matteozhao98", "count": 3, "languages": 1 }, { - "order": 405, + "order": 407, "name": "tebaah", "count": 3, "languages": 1 }, { - "order": 406, + "order": 408, "name": "sebasgrdev", "count": 3, "languages": 1 }, { - "order": 407, + "order": 409, "name": "14davidnkt", "count": 3, "languages": 1 }, { - "order": 408, + "order": 410, "name": "legs30011", "count": 3, "languages": 1 }, { - "order": 409, + "order": 411, "name": "dariorfm", "count": 3, "languages": 1 }, { - "order": 410, + "order": 412, "name": "orlas135", "count": 3, "languages": 1 }, { - "order": 411, + "order": 413, "name": "arbenisacosta", "count": 3, "languages": 1 }, { - "order": 412, + "order": 414, "name": "hectoriglesias", "count": 3, "languages": 1 }, { - "order": 413, + "order": 415, "name": "matrix-miguel", "count": 3, "languages": 1 }, { - "order": 414, + "order": 416, "name": "jacarrillob", "count": 3, "languages": 1 }, { - "order": 415, + "order": 417, "name": "jelozanov", "count": 3, "languages": 1 }, { - "order": 416, + "order": 418, "name": "andyfg0289", "count": 3, "languages": 1 }, { - "order": 417, + "order": 419, "name": "daniback95", "count": 3, "languages": 1 }, { - "order": 418, + "order": 420, "name": "r4kso", "count": 3, "languages": 1 }, { - "order": 419, + "order": 421, "name": "singularpigeon", "count": 3, "languages": 1 }, { - "order": 420, + "order": 422, "name": "sandracalatayud", "count": 3, "languages": 1 }, { - "order": 421, + "order": 423, "name": "andresargote", "count": 3, "languages": 1 }, { - "order": 422, + "order": 424, "name": "fernandog25", "count": 3, "languages": 1 }, { - "order": 423, + "order": 425, "name": "agusbelp", "count": 3, "languages": 1 }, { - "order": 424, + "order": 426, "name": "uyarra73", "count": 3, "languages": 1 }, { - "order": 425, + "order": 427, "name": "asaelz", "count": 3, "languages": 1 }, { - "order": 426, + "order": 428, "name": "davidb313", "count": 3, "languages": 1 }, { - "order": 427, + "order": 429, "name": "fdcorreadev", "count": 3, "languages": 1 }, { - "order": 428, + "order": 430, "name": "magupe09", "count": 3, "languages": 1 }, { - "order": 429, + "order": 431, "name": "nathaliamf", "count": 3, "languages": 1 }, { - "order": 430, + "order": 432, "name": "victorsschz", "count": 3, "languages": 1 }, { - "order": 431, + "order": 433, "name": "hatorob", "count": 3, "languages": 1 }, { - "order": 432, + "order": 434, "name": "zuluangel", "count": 3, "languages": 1 }, { - "order": 433, + "order": 435, "name": "matiascba27", "count": 3, "languages": 1 }, { - "order": 434, + "order": 436, "name": "faga01", "count": 3, "languages": 1 }, { - "order": 435, + "order": 437, "name": "ahinar", "count": 3, "languages": 1 }, { - "order": 436, + "order": 438, "name": "migueltfangche", "count": 3, "languages": 1 }, { - "order": 437, + "order": 439, "name": "josueeeee", "count": 3, "languages": 1 }, { - "order": 438, + "order": 440, "name": "emaenriquez", "count": 3, "languages": 1 }, { - "order": 439, + "order": 441, "name": "sebascmb", "count": 3, "languages": 1 }, { - "order": 440, + "order": 442, "name": "gpinedaoviedo", "count": 3, "languages": 1 }, { - "order": 441, + "order": 443, "name": "blfuentes", "count": 3, "languages": 1 }, { - "order": 442, + "order": 444, "name": "javiearth", "count": 3, "languages": 1 }, { - "order": 443, + "order": 445, "name": "atienzar", "count": 3, "languages": 1 }, { - "order": 444, + "order": 446, "name": "coshiloco", "count": 3, "languages": 1 }, { - "order": 445, + "order": 447, "name": "crisvigas", "count": 3, "languages": 1 }, { - "order": 446, + "order": 448, "name": "tomytsa", "count": 3, "languages": 1 }, { - "order": 447, + "order": 449, "name": "rocallejas", "count": 3, "languages": 1 }, { - "order": 448, + "order": 450, "name": "guido2288", "count": 3, "languages": 1 }, { - "order": 449, + "order": 451, "name": "githjuan", "count": 3, "languages": 1 }, { - "order": 450, + "order": 452, "name": "jeyker-dev", "count": 3, "languages": 1 }, { - "order": 451, + "order": 453, "name": "eliskopun", "count": 3, "languages": 1 }, { - "order": 452, + "order": 454, "name": "ramon-almeida", "count": 3, "languages": 1 }, { - "order": 453, + "order": 455, "name": "danielperezrubio", "count": 3, "languages": 1 }, { - "order": 454, + "order": 456, "name": "minn09", "count": 3, "languages": 1 }, { - "order": 455, + "order": 457, "name": "elkin-dev", "count": 3, "languages": 1 }, { - "order": 456, + "order": 458, "name": "bertolini-victor", "count": 3, "languages": 1 }, { - "order": 457, + "order": 459, "name": "jorgegarcia-dev", "count": 3, "languages": 1 }, { - "order": 458, + "order": 460, "name": "suescun845", "count": 3, "languages": 1 }, { - "order": 459, + "order": 461, "name": "carlosalberto05", "count": 3, "languages": 1 }, { - "order": 460, + "order": 462, "name": "mmacalli", "count": 3, "languages": 1 }, { - "order": 461, + "order": 463, "name": "mstaz4", "count": 3, "languages": 1 }, { - "order": 462, + "order": 464, "name": "emilianohoyos", "count": 3, "languages": 1 }, { - "order": 463, + "order": 465, "name": "rgeditv1", "count": 3, "languages": 1 }, { - "order": 464, + "order": 466, "name": "elder202", "count": 3, "languages": 1 }, { - "order": 465, + "order": 467, "name": "dandrusco", "count": 3, "languages": 1 }, { - "order": 466, + "order": 468, "name": "mizadlogcia", "count": 3, "languages": 1 }, { - "order": 467, + "order": 469, "name": "antii16", "count": 3, "languages": 1 }, { - "order": 468, + "order": 470, "name": "strooplab", "count": 3, "languages": 1 }, { - "order": 469, + "order": 471, "name": "marcoh2325", "count": 3, "languages": 1 }, { - "order": 470, + "order": 472, "name": "frostbitepy", "count": 3, "languages": 1 }, { - "order": 471, + "order": 473, "name": "zzepu", "count": 3, "languages": 1 }, { - "order": 472, + "order": 474, "name": "tekatoki", "count": 3, "languages": 1 }, { - "order": 473, + "order": 475, "name": "yeam-10", "count": 3, "languages": 1 }, { - "order": 474, + "order": 476, "name": "exanderguitar", "count": 3, "languages": 1 }, { - "order": 475, + "order": 477, "name": "camilo-zuluaga", "count": 3, "languages": 1 }, { - "order": 476, + "order": 478, "name": "macova96", "count": 3, "languages": 1 }, { - "order": 477, + "order": 479, "name": "betzadev", "count": 3, "languages": 1 }, { - "order": 478, + "order": 480, "name": "monikgbar", "count": 3, "languages": 1 }, { - "order": 479, + "order": 481, "name": "guillesese", "count": 3, "languages": 1 }, { - "order": 480, + "order": 482, "name": "artdugarte", "count": 3, "languages": 1 }, { - "order": 481, + "order": 483, "name": "jofedev", "count": 3, "languages": 1 }, { - "order": 482, + "order": 484, "name": "oscarhub90", "count": 3, "languages": 1 }, { - "order": 483, + "order": 485, "name": "tonywarcode", "count": 3, "languages": 1 }, { - "order": 484, + "order": 486, "name": "oscargeovannyrincon", "count": 3, "languages": 1 }, { - "order": 485, + "order": 487, "name": "joandevpy", "count": 3, "languages": 1 }, { - "order": 486, + "order": 488, "name": "estelacode", "count": 3, "languages": 1 }, { - "order": 487, + "order": 489, "name": "xurxogz", "count": 3, "languages": 1 }, { - "order": 488, + "order": 490, "name": "freedainew", "count": 3, "languages": 1 }, { - "order": 489, + "order": 491, "name": "swifty0705", "count": 3, "languages": 1 }, { - "order": 490, + "order": 492, "name": "marce1084", "count": 3, "languages": 1 }, { - "order": 491, + "order": 493, "name": "rubioj17", "count": 3, "languages": 1 }, { - "order": 492, + "order": 494, "name": "kingsaul22", "count": 3, "languages": 1 }, { - "order": 493, + "order": 495, "name": "ainoaran", "count": 3, "languages": 1 }, { - "order": 494, + "order": 496, "name": "francofmv", "count": 3, "languages": 1 }, { - "order": 495, + "order": 497, "name": "davidsorroche", "count": 3, "languages": 1 }, { - "order": 496, + "order": 498, "name": "david-quinones", "count": 3, "languages": 1 }, { - "order": 497, + "order": 499, "name": "fluna29", "count": 3, "languages": 1 }, { - "order": 498, + "order": 500, "name": "natalinacn", "count": 3, "languages": 1 }, { - "order": 499, + "order": 501, "name": "kine-jdf", "count": 3, "languages": 1 }, { - "order": 500, + "order": 502, "name": "yaretzyrb", "count": 3, "languages": 1 }, { - "order": 501, + "order": 503, "name": "confley", "count": 3, "languages": 1 }, { - "order": 502, + "order": 504, "name": "beonzj", "count": 3, "languages": 1 }, { - "order": 503, + "order": 505, "name": "juxxon23", "count": 3, "languages": 1 }, { - "order": 504, + "order": 506, "name": "frangarmez21", "count": 3, "languages": 1 }, { - "order": 505, + "order": 507, "name": "ikeragi05", "count": 3, "languages": 1 }, { - "order": 506, + "order": 508, "name": "johnalexguerrero", "count": 3, "languages": 1 }, { - "order": 507, + "order": 509, "name": "devvdroid01", "count": 2, "languages": 2 }, { - "order": 508, - "name": "clotrack", - "count": 2, - "languages": 2 - }, - { - "order": 509, + "order": 510, "name": "sgb004", "count": 2, "languages": 2 }, { - "order": 510, + "order": 511, "name": "chuanmi", "count": 2, "languages": 2 }, { - "order": 511, + "order": 512, "name": "jlcareglio", "count": 2, "languages": 2 }, { - "order": 512, + "order": 513, "name": "jurgen-alfaro", "count": 2, "languages": 2 }, { - "order": 513, + "order": 514, "name": "lydaf", "count": 2, "languages": 2 }, { - "order": 514, + "order": 515, "name": "carresoft", "count": 2, "languages": 2 }, { - "order": 515, + "order": 516, "name": "ismaelmatiz", "count": 2, "languages": 2 }, { - "order": 516, + "order": 517, "name": "tecfer", "count": 2, "languages": 2 }, { - "order": 517, + "order": 518, "name": "elsanty08", "count": 2, "languages": 2 }, { - "order": 518, + "order": 519, "name": "jorgesilencio", "count": 2, "languages": 2 }, { - "order": 519, + "order": 520, "name": "berentolkien", "count": 2, "languages": 2 }, { - "order": 520, + "order": 521, "name": "felipedev303", "count": 2, "languages": 2 }, { - "order": 521, + "order": 522, "name": "lemito66", "count": 2, "languages": 2 }, { - "order": 522, + "order": 523, "name": "alexsamboy", "count": 2, "languages": 2 }, { - "order": 523, + "order": 524, "name": "enrgarvic", "count": 2, "languages": 2 }, { - "order": 524, + "order": 525, "name": "jovany-java", "count": 2, "languages": 2 }, { - "order": 525, + "order": 526, "name": "raul-progr", "count": 2, "languages": 2 }, { - "order": 526, + "order": 527, "name": "jmofuture", "count": 2, "languages": 2 }, { - "order": 527, + "order": 528, "name": "angel-alvarez-dev", "count": 2, "languages": 2 }, { - "order": 528, + "order": 529, "name": "lilberick", "count": 2, "languages": 2 }, { - "order": 529, + "order": 530, "name": "camiloforero1997", "count": 2, "languages": 2 }, { - "order": 530, + "order": 531, "name": "alejosor", "count": 2, "languages": 2 }, { - "order": 531, + "order": 532, "name": "juan-wills", "count": 2, "languages": 2 }, { - "order": 532, + "order": 533, "name": "lurtur", "count": 2, "languages": 2 }, { - "order": 533, + "order": 534, "name": "jhonatanmustiolacas", "count": 2, "languages": 2 }, - { - "order": 534, - "name": "elmarqueli", - "count": 2, - "languages": 1 - }, { "order": 535, - "name": "tiaguiito3", + "name": "elmarqueli", "count": 2, "languages": 1 }, { "order": 536, - "name": "angelargumedo", + "name": "tiaguiito3", "count": 2, "languages": 1 }, { "order": 537, - "name": "reaien", + "name": "angelargumedo", "count": 2, "languages": 1 }, { "order": 538, - "name": "rikar20", + "name": "reaien", "count": 2, "languages": 1 }, { "order": 539, - "name": "vdroiid", + "name": "rikar20", "count": 2, "languages": 1 }, { "order": 540, - "name": "frannmv", + "name": "vdroiid", "count": 2, "languages": 1 }, { "order": 541, - "name": "rrcoder", + "name": "frannmv", "count": 2, "languages": 1 }, { "order": 542, - "name": "diegosilval", + "name": "rrcoder", "count": 2, "languages": 1 }, { "order": 543, - "name": "nandaalf", + "name": "diegosilval", "count": 2, "languages": 1 }, { "order": 544, - "name": "hawkbott", + "name": "nandaalf", "count": 2, "languages": 1 }, { "order": 545, - "name": "tomasmarquez81", + "name": "hawkbott", "count": 2, "languages": 1 }, { "order": 546, - "name": "poetry0354", + "name": "tomasmarquez81", "count": 2, "languages": 1 }, { "order": 547, - "name": "santiagocuevas2003", + "name": "poetry0354", "count": 2, "languages": 1 }, { "order": 548, - "name": "lmedina96", + "name": "santiagocuevas2003", "count": 2, "languages": 1 }, { "order": 549, - "name": "lorenamesa", + "name": "lmedina96", "count": 2, "languages": 1 }, { "order": 550, - "name": "raulallue", + "name": "lorenamesa", "count": 2, "languages": 1 }, { "order": 551, - "name": "luciarf", + "name": "raulallue", "count": 2, "languages": 1 }, { "order": 552, - "name": "aserranot", + "name": "luciarf", "count": 2, "languages": 1 }, { "order": 553, - "name": "devcherry1", + "name": "aserranot", "count": 2, "languages": 1 }, { "order": 554, - "name": "yowcloud", + "name": "devcherry1", "count": 2, "languages": 1 }, { "order": 555, - "name": "fefestuve", + "name": "yowcloud", "count": 2, "languages": 1 }, { "order": 556, - "name": "fsfigueroa77", + "name": "fefestuve", "count": 2, "languages": 1 }, { "order": 557, - "name": "nahuelborromeo", + "name": "fsfigueroa77", "count": 2, "languages": 1 }, { "order": 558, - "name": "peibolstrike", + "name": "nahuelborromeo", "count": 2, "languages": 1 }, { "order": 559, - "name": "drvito1977", + "name": "peibolstrike", "count": 2, "languages": 1 }, @@ -4113,3279 +4118,3321 @@ }, { "order": 606, - "name": "davhage", + "name": "duendeintemporal", "count": 2, "languages": 1 }, { "order": 607, - "name": "erikayeah", + "name": "davhage", "count": 2, "languages": 1 }, { "order": 608, - "name": "misterdan100", + "name": "erikayeah", "count": 2, "languages": 1 }, { "order": 609, - "name": "memogv", + "name": "misterdan100", "count": 2, "languages": 1 }, { "order": 610, - "name": "glaboryp", + "name": "memogv", "count": 2, "languages": 1 }, { "order": 611, - "name": "ovjohn", + "name": "glaboryp", "count": 2, "languages": 1 }, { "order": 612, - "name": "haryblanco20", + "name": "ovjohn", "count": 2, "languages": 1 }, { "order": 613, - "name": "christianhernandezb", + "name": "haryblanco20", "count": 2, "languages": 1 }, { "order": 614, - "name": "akzorla", + "name": "christianhernandezb", "count": 2, "languages": 1 }, { "order": 615, - "name": "0pio", + "name": "akzorla", "count": 2, "languages": 1 }, { "order": 616, - "name": "porto1090", + "name": "0pio", "count": 2, "languages": 1 }, { "order": 617, - "name": "johannhsdev", + "name": "porto1090", "count": 2, "languages": 1 }, { "order": 618, - "name": "jago86", + "name": "johannhsdev", "count": 2, "languages": 1 }, { "order": 619, - "name": "diegokarabin", + "name": "jago86", "count": 2, "languages": 1 }, { "order": 620, - "name": "gugliio", + "name": "diegokarabin", "count": 2, "languages": 1 }, { "order": 621, - "name": "kcx46", + "name": "gugliio", "count": 2, "languages": 1 }, { "order": 622, - "name": "nachodev7", + "name": "kcx46", "count": 2, "languages": 1 }, { "order": 623, - "name": "fernandoatello", + "name": "nachodev7", "count": 2, "languages": 1 }, { "order": 624, - "name": "pablosalme", + "name": "fernandoatello", "count": 2, "languages": 1 }, { "order": 625, - "name": "jsacristanbeltri", + "name": "pablosalme", "count": 2, "languages": 1 }, { "order": 626, - "name": "baauus", + "name": "jsacristanbeltri", "count": 2, "languages": 1 }, { "order": 627, - "name": "s384", + "name": "baauus", "count": 2, "languages": 1 }, { "order": 628, - "name": "lauradiazm29", + "name": "s384", "count": 2, "languages": 1 }, { "order": 629, - "name": "pakomor", + "name": "lauradiazm29", "count": 2, "languages": 1 }, { "order": 630, - "name": "adogdev", + "name": "pakomor", "count": 2, "languages": 1 }, { "order": 631, - "name": "eriickm", + "name": "adogdev", "count": 2, "languages": 1 }, { "order": 632, - "name": "christiancoc", + "name": "eriickm", "count": 2, "languages": 1 }, { "order": 633, - "name": "rojasricoo", + "name": "christiancoc", "count": 2, "languages": 1 }, { "order": 634, - "name": "inf015", + "name": "rojasricoo", "count": 2, "languages": 1 }, { "order": 635, - "name": "csaraugusto2", + "name": "inf015", "count": 2, "languages": 1 }, { "order": 636, - "name": "zalazarmartin", + "name": "csaraugusto2", "count": 2, "languages": 1 }, { "order": 637, - "name": "ziellucio01", + "name": "zalazarmartin", "count": 2, "languages": 1 }, { "order": 638, - "name": "dota43ver", + "name": "ziellucio01", "count": 2, "languages": 1 }, { "order": 639, - "name": "fjsubero", + "name": "dota43ver", "count": 2, "languages": 1 }, { "order": 640, - "name": "julind0", + "name": "fjsubero", "count": 2, "languages": 1 }, { "order": 641, - "name": "dariangl", + "name": "julind0", "count": 2, "languages": 1 }, { "order": 642, - "name": "ggtorca", + "name": "jmontoyac", "count": 2, "languages": 1 }, { "order": 643, - "name": "soydaviddev", + "name": "dariangl", "count": 2, "languages": 1 }, { "order": 644, - "name": "e-techgod", + "name": "ggtorca", "count": 2, "languages": 1 }, { "order": 645, - "name": "aboredllama", + "name": "soydaviddev", "count": 2, "languages": 1 }, { "order": 646, - "name": "nevaito", + "name": "e-techgod", "count": 2, "languages": 1 }, { "order": 647, - "name": "nach012", + "name": "aboredllama", "count": 2, "languages": 1 }, { "order": 648, - "name": "dans182", + "name": "nevaito", "count": 2, "languages": 1 }, { "order": 649, - "name": "freyfonseca", + "name": "nach012", "count": 2, "languages": 1 }, { "order": 650, - "name": "aegpgrafologo", + "name": "dans182", "count": 2, "languages": 1 }, { "order": 651, - "name": "alejandrovelasquezr", + "name": "freyfonseca", "count": 2, "languages": 1 }, { "order": 652, - "name": "fabianpa505", + "name": "aegpgrafologo", "count": 2, "languages": 1 }, { "order": 653, - "name": "carlosmarte23", + "name": "alejandrovelasquezr", "count": 2, "languages": 1 }, { "order": 654, - "name": "anblackter", + "name": "fabianpa505", "count": 2, "languages": 1 }, { "order": 655, + "name": "carlosmarte23", + "count": 2, + "languages": 1 + }, + { + "order": 656, + "name": "anblackter", + "count": 2, + "languages": 1 + }, + { + "order": 657, "name": "tic4", "count": 2, "languages": 1 }, { - "order": 656, + "order": 658, "name": "josephfaster", "count": 2, "languages": 1 }, { - "order": 657, + "order": 659, "name": "gregfc95", "count": 2, "languages": 1 }, { - "order": 658, + "order": 660, "name": "victore16", "count": 2, "languages": 1 }, { - "order": 659, + "order": 661, "name": "dokeys28", "count": 2, "languages": 1 }, { - "order": 660, + "order": 662, "name": "noaregui", "count": 2, "languages": 1 }, { - "order": 661, + "order": 663, "name": "alejandro-mantilla", "count": 2, "languages": 1 }, { - "order": 662, + "order": 664, "name": "gmigues", "count": 2, "languages": 1 }, { - "order": 663, + "order": 665, "name": "juanseevn", "count": 2, "languages": 1 }, { - "order": 664, + "order": 666, "name": "vesubius", "count": 2, "languages": 1 }, { - "order": 665, + "order": 667, "name": "zeti1231", "count": 2, "languages": 1 }, { - "order": 666, + "order": 668, "name": "cipollalucas", "count": 2, "languages": 1 }, { - "order": 667, + "order": 669, "name": "miguelberrio0810", "count": 2, "languages": 1 }, { - "order": 668, + "order": 670, "name": "santiagodc8", "count": 2, "languages": 1 }, { - "order": 669, + "order": 671, "name": "pedrojog", "count": 2, "languages": 1 }, { - "order": 670, + "order": 672, "name": "culebropalido", "count": 2, "languages": 1 }, { - "order": 671, + "order": 673, "name": "marioyellowy", "count": 2, "languages": 1 }, { - "order": 672, + "order": 674, "name": "jcknot", "count": 2, "languages": 1 }, { - "order": 673, + "order": 675, "name": "peeanoot", "count": 2, "languages": 1 }, { - "order": 674, + "order": 676, "name": "coronelsam", "count": 2, "languages": 1 }, { - "order": 675, + "order": 677, "name": "arhl2023", "count": 2, "languages": 1 }, { - "order": 676, + "order": 678, "name": "marianoemir", "count": 2, "languages": 1 }, { - "order": 677, + "order": 679, "name": "isidrojng", "count": 2, "languages": 1 }, { - "order": 678, + "order": 680, "name": "anaroncero", "count": 2, "languages": 1 }, { - "order": 679, + "order": 681, "name": "hersac", "count": 2, "languages": 1 }, { - "order": 680, + "order": 682, "name": "vecinacoo", "count": 2, "languages": 1 }, { - "order": 681, + "order": 683, "name": "juanmjimenezs", "count": 2, "languages": 1 }, { - "order": 682, + "order": 684, "name": "armentaangel", "count": 2, "languages": 1 }, { - "order": 683, + "order": 685, "name": "lordzzz777", "count": 2, "languages": 1 }, { - "order": 684, + "order": 686, "name": "sdm29gh", "count": 2, "languages": 1 }, { - "order": 685, + "order": 687, "name": "zonnen69", "count": 2, "languages": 1 }, { - "order": 686, + "order": 688, "name": "jmichael39", "count": 2, "languages": 1 }, { - "order": 687, + "order": 689, "name": "davidvilem", "count": 2, "languages": 1 }, { - "order": 688, + "order": 690, + "name": "mantaras96", + "count": 2, + "languages": 1 + }, + { + "order": 691, "name": "torvicv", "count": 1, "languages": 1 }, { - "order": 689, + "order": 692, "name": "dgquintero", "count": 1, "languages": 1 }, { - "order": 690, + "order": 693, "name": "c-blskv", "count": 1, "languages": 1 }, { - "order": 691, + "order": 694, "name": "emaerniquez", "count": 1, "languages": 1 }, { - "order": 692, + "order": 695, "name": "carolhs92", "count": 1, "languages": 1 }, { - "order": 693, + "order": 696, "name": "leonardo-henao", "count": 1, "languages": 1 }, { - "order": 694, + "order": 697, "name": "juancamilofvx", "count": 1, "languages": 1 }, { - "order": 695, + "order": 698, "name": "vikernes27666", "count": 1, "languages": 1 }, { - "order": 696, + "order": 699, "name": "cub-tor", "count": 1, "languages": 1 }, { - "order": 697, + "order": 700, "name": "nightmare79", "count": 1, "languages": 1 }, { - "order": 698, + "order": 701, "name": "carlosmperezm", "count": 1, "languages": 1 }, { - "order": 699, + "order": 702, "name": "gonzalinuz18", "count": 1, "languages": 1 }, { - "order": 700, + "order": 703, "name": "qwik-zghieb", "count": 1, "languages": 1 }, { - "order": 701, + "order": 704, "name": "miquelrr", "count": 1, "languages": 1 }, { - "order": 702, + "order": 705, "name": "miguel2rar", "count": 1, "languages": 1 }, { - "order": 703, + "order": 706, "name": "eamartin", "count": 1, "languages": 1 }, { - "order": 704, + "order": 707, "name": "gabriel-dangelo", "count": 1, "languages": 1 }, { - "order": 705, + "order": 708, "name": "agustinfccll", "count": 1, "languages": 1 }, { - "order": 706, + "order": 709, "name": "anitandil", "count": 1, "languages": 1 }, { - "order": 707, + "order": 710, "name": "evilpodato04", "count": 1, "languages": 1 }, { - "order": 708, + "order": 711, "name": "francomyburg", "count": 1, "languages": 1 }, { - "order": 709, + "order": 712, "name": "neicervb", "count": 1, "languages": 1 }, { - "order": 710, + "order": 713, "name": "josephinoo", "count": 1, "languages": 1 }, { - "order": 711, + "order": 714, "name": "arathhh8", "count": 1, "languages": 1 }, { - "order": 712, + "order": 715, "name": "paluzz", "count": 1, "languages": 1 }, { - "order": 713, + "order": 716, "name": "theposi", "count": 1, "languages": 1 }, { - "order": 714, + "order": 717, "name": "vinyoles", "count": 1, "languages": 1 }, { - "order": 715, + "order": 718, "name": "omarroman29", "count": 1, "languages": 1 }, { - "order": 716, + "order": 719, + "name": "1cel4nc3", + "count": 1, + "languages": 1 + }, + { + "order": 720, "name": "sergio-strazzacappa", "count": 1, "languages": 1 }, { - "order": 717, + "order": 721, "name": "corvo-99", "count": 1, "languages": 1 }, { - "order": 718, + "order": 722, "name": "danielcastillo1112", "count": 1, "languages": 1 }, { - "order": 719, + "order": 723, "name": "malkarmah", "count": 1, "languages": 1 }, { - "order": 720, + "order": 724, "name": "sirvega83", "count": 1, "languages": 1 }, { - "order": 721, + "order": 725, "name": "franpua", "count": 1, "languages": 1 }, { - "order": 722, + "order": 726, "name": "van-02", "count": 1, "languages": 1 }, { - "order": 723, + "order": 727, "name": "x3mboy", "count": 1, "languages": 1 }, { - "order": 724, + "order": 728, "name": "mickysoft", "count": 1, "languages": 1 }, { - "order": 725, + "order": 729, "name": "deimoshall", "count": 1, "languages": 1 }, { - "order": 726, + "order": 730, "name": "palons29", "count": 1, "languages": 1 }, { - "order": 727, + "order": 731, "name": "serg032", "count": 1, "languages": 1 }, { - "order": 728, + "order": 732, "name": "seigigim", "count": 1, "languages": 1 }, { - "order": 729, + "order": 733, "name": "cibacoa", "count": 1, "languages": 1 }, { - "order": 730, + "order": 734, "name": "axelwestman", "count": 1, "languages": 1 }, { - "order": 731, + "order": 735, "name": "javodevon", "count": 1, "languages": 1 }, { - "order": 732, + "order": 736, "name": "mauricioyair", "count": 1, "languages": 1 }, { - "order": 733, + "order": 737, "name": "manuhssj", "count": 1, "languages": 1 }, { - "order": 734, + "order": 738, "name": "coletonosh", "count": 1, "languages": 1 }, { - "order": 735, + "order": 739, "name": "manugonzalito", "count": 1, "languages": 1 }, { - "order": 736, + "order": 740, "name": "gizelads", "count": 1, "languages": 1 }, { - "order": 737, + "order": 741, "name": "lucc4sz", "count": 1, "languages": 1 }, { - "order": 738, + "order": 742, "name": "feliaguirre7", "count": 1, "languages": 1 }, { - "order": 739, + "order": 743, "name": "rulo77", "count": 1, "languages": 1 }, { - "order": 740, + "order": 744, "name": "is2095", "count": 1, "languages": 1 }, { - "order": 741, + "order": 745, "name": "jancalos", "count": 1, "languages": 1 }, { - "order": 742, + "order": 746, "name": "marcosapodaca", "count": 1, "languages": 1 }, { - "order": 743, + "order": 747, "name": "angelcruzg23", "count": 1, "languages": 1 }, { - "order": 744, + "order": 748, "name": "ca2puntosv", "count": 1, "languages": 1 }, { - "order": 745, + "order": 749, "name": "armm77", "count": 1, "languages": 1 }, { - "order": 746, + "order": 750, "name": "afacorroloscos", "count": 1, "languages": 1 }, { - "order": 747, + "order": 751, "name": "rocadev2714", "count": 1, "languages": 1 }, { - "order": 748, + "order": 752, "name": "chrisfelixgil", "count": 1, "languages": 1 }, { - "order": 749, + "order": 753, "name": "sandrarg85", "count": 1, "languages": 1 }, { - "order": 750, + "order": 754, "name": "rootqui", "count": 1, "languages": 1 }, { - "order": 751, + "order": 755, "name": "ishimaku", "count": 1, "languages": 1 }, { - "order": 752, + "order": 756, "name": "pkmaventura", "count": 1, "languages": 1 }, { - "order": 753, + "order": 757, "name": "miguelgargallo", "count": 1, "languages": 1 }, { - "order": 754, + "order": 758, "name": "astriebeck", "count": 1, "languages": 1 }, { - "order": 755, + "order": 759, "name": "lobogeekmx", "count": 1, "languages": 1 }, { - "order": 756, + "order": 760, "name": "marvinagui", "count": 1, "languages": 1 }, { - "order": 757, + "order": 761, "name": "marqitos", "count": 1, "languages": 1 }, { - "order": 758, + "order": 762, "name": "nunezlagos", "count": 1, "languages": 1 }, { - "order": 759, + "order": 763, "name": "jcrobles99", "count": 1, "languages": 1 }, { - "order": 760, + "order": 764, "name": "ledyam", "count": 1, "languages": 1 }, { - "order": 761, + "order": 765, "name": "jatomas", "count": 1, "languages": 1 }, { - "order": 762, + "order": 766, "name": "jaennova", "count": 1, "languages": 1 }, { - "order": 763, + "order": 767, "name": "luisalberto22", "count": 1, "languages": 1 }, { - "order": 764, + "order": 768, "name": "francisleble", "count": 1, "languages": 1 }, { - "order": 765, + "order": 769, "name": "deiiviitdev", "count": 1, "languages": 1 }, { - "order": 766, + "order": 770, "name": "braiso-22", "count": 1, "languages": 1 }, { - "order": 767, + "order": 771, "name": "daniel-cas", "count": 1, "languages": 1 }, { - "order": 768, + "order": 772, "name": "acirdevelper", "count": 1, "languages": 1 }, { - "order": 769, + "order": 773, "name": "borjadelgadodev", "count": 1, "languages": 1 }, { - "order": 770, + "order": 774, "name": "elpeque29", "count": 1, "languages": 1 }, { - "order": 771, + "order": 775, "name": "jhordanluyo", "count": 1, "languages": 1 }, { - "order": 772, + "order": 776, "name": "davidcv-dev", "count": 1, "languages": 1 }, { - "order": 773, + "order": 777, "name": "mbmaeso", "count": 1, "languages": 1 }, { - "order": 774, + "order": 778, "name": "alvarominarro", "count": 1, "languages": 1 }, { - "order": 775, + "order": 779, "name": "bjchavez", "count": 1, "languages": 1 }, { - "order": 776, + "order": 780, "name": "madelefonb", "count": 1, "languages": 1 }, { - "order": 777, + "order": 781, "name": "lfwzk", "count": 1, "languages": 1 }, { - "order": 778, + "order": 782, "name": "ercky1980", "count": 1, "languages": 1 }, { - "order": 779, + "order": 783, "name": "jsruedatorres", "count": 1, "languages": 1 }, { - "order": 780, + "order": 784, "name": "jacobrwx", "count": 1, "languages": 1 }, { - "order": 781, + "order": 785, "name": "abengl", "count": 1, "languages": 1 }, { - "order": 782, + "order": 786, "name": "jd-gm", "count": 1, "languages": 1 }, { - "order": 783, + "order": 787, "name": "lucianogriffa", "count": 1, "languages": 1 }, { - "order": 784, + "order": 788, "name": "quirogapau", "count": 1, "languages": 1 }, { - "order": 785, + "order": 789, "name": "joseperesini", "count": 1, "languages": 1 }, { - "order": 786, + "order": 790, "name": "mhrosariom", "count": 1, "languages": 1 }, { - "order": 787, + "order": 791, "name": "sergioab7", "count": 1, "languages": 1 }, { - "order": 788, + "order": 792, "name": "santaravena", "count": 1, "languages": 1 }, { - "order": 789, + "order": 793, "name": "datrujillog", "count": 1, "languages": 1 }, { - "order": 790, + "order": 794, "name": "johnniew81", "count": 1, "languages": 1 }, { - "order": 791, + "order": 795, "name": "chriszaldana", "count": 1, "languages": 1 }, { - "order": 792, + "order": 796, "name": "antonioverdugo", "count": 1, "languages": 1 }, { - "order": 793, + "order": 797, "name": "kronomio", "count": 1, "languages": 1 }, { - "order": 794, + "order": 798, "name": "kevinramirez28", "count": 1, "languages": 1 }, { - "order": 795, + "order": 799, "name": "juanpablo-a", "count": 1, "languages": 1 }, { - "order": 796, + "order": 800, "name": "gerespinosa", "count": 1, "languages": 1 }, { - "order": 797, + "order": 801, "name": "1978acb", "count": 1, "languages": 1 }, { - "order": 798, + "order": 802, "name": "alexxawada", "count": 1, "languages": 1 }, { - "order": 799, + "order": 803, "name": "ricarsur", "count": 1, "languages": 1 }, { - "order": 800, + "order": 804, "name": "alemar16", "count": 1, "languages": 1 }, { - "order": 801, + "order": 805, "name": "pointfs", "count": 1, "languages": 1 }, { - "order": 802, + "order": 806, "name": "edperez07", "count": 1, "languages": 1 }, { - "order": 803, + "order": 807, "name": "dacronik", "count": 1, "languages": 1 }, { - "order": 804, + "order": 808, "name": "abraham9804", "count": 1, "languages": 1 }, { - "order": 805, + "order": 809, "name": "afl0r3s", "count": 1, "languages": 1 }, { - "order": 806, + "order": 810, "name": "dianelis1", "count": 1, "languages": 1 }, { - "order": 807, + "order": 811, "name": "fernandofl", "count": 1, "languages": 1 }, { - "order": 808, + "order": 812, "name": "conrado85", "count": 1, "languages": 1 }, { - "order": 809, + "order": 813, "name": "agus-ig", "count": 1, "languages": 1 }, { - "order": 810, + "order": 814, "name": "alvarommedia", "count": 1, "languages": 1 }, { - "order": 811, + "order": 815, "name": "maximotoro", "count": 1, "languages": 1 }, { - "order": 812, + "order": 816, "name": "m4xisil", "count": 1, "languages": 1 }, { - "order": 813, + "order": 817, "name": "francomoreira", "count": 1, "languages": 1 }, { - "order": 814, + "order": 818, "name": "aleclto7", "count": 1, "languages": 1 }, { - "order": 815, + "order": 819, "name": "nnunezmedina", "count": 1, "languages": 1 }, { - "order": 816, + "order": 820, "name": "codejoss", "count": 1, "languages": 1 }, { - "order": 817, + "order": 821, "name": "yaojema", "count": 1, "languages": 1 }, { - "order": 818, + "order": 822, "name": "romanocoder", "count": 1, "languages": 1 }, { - "order": 819, + "order": 823, "name": "sixtodev", "count": 1, "languages": 1 }, { - "order": 820, + "order": 824, "name": "cgomezadolfo", "count": 1, "languages": 1 }, { - "order": 821, + "order": 825, "name": "rojasvargas", "count": 1, "languages": 1 }, { - "order": 822, + "order": 826, "name": "carlosdiaz-dev", "count": 1, "languages": 1 }, { - "order": 823, + "order": 827, "name": "l3v1xx", "count": 1, "languages": 1 }, { - "order": 824, + "order": 828, "name": "patricioguerra30", "count": 1, "languages": 1 }, { - "order": 825, + "order": 829, "name": "lytsar", "count": 1, "languages": 1 }, { - "order": 826, + "order": 830, "name": "siuldev", "count": 1, "languages": 1 }, { - "order": 827, + "order": 831, "name": "brayancordova1", "count": 1, "languages": 1 }, { - "order": 828, + "order": 832, "name": "ronnieruuz", "count": 1, "languages": 1 }, { - "order": 829, + "order": 833, "name": "yessikamichelle", "count": 1, "languages": 1 }, { - "order": 830, + "order": 834, "name": "vainsito1", "count": 1, "languages": 1 }, { - "order": 831, + "order": 835, "name": "oscarletelier", "count": 1, "languages": 1 }, { - "order": 832, + "order": 836, "name": "kocho03", "count": 1, "languages": 1 }, { - "order": 833, + "order": 837, "name": "aidicoop", "count": 1, "languages": 1 }, { - "order": 834, + "order": 838, "name": "albabp", "count": 1, "languages": 1 }, { - "order": 835, + "order": 839, "name": "nozodev", "count": 1, "languages": 1 }, { - "order": 836, + "order": 840, "name": "mvillegas18", "count": 1, "languages": 1 }, { - "order": 837, + "order": 841, "name": "augustbs", "count": 1, "languages": 1 }, { - "order": 838, + "order": 842, "name": "luchof5", "count": 1, "languages": 1 }, { - "order": 839, + "order": 843, "name": "fullstackarlo", "count": 1, "languages": 1 }, { - "order": 840, + "order": 844, "name": "mdemena", "count": 1, "languages": 1 }, { - "order": 841, + "order": 845, "name": "cliverjimny123", "count": 1, "languages": 1 }, { - "order": 842, + "order": 846, "name": "rodmiggithub", "count": 1, "languages": 1 }, { - "order": 843, + "order": 847, "name": "s9code", "count": 1, "languages": 1 }, { - "order": 844, + "order": 848, "name": "javieradev", "count": 1, "languages": 1 }, { - "order": 845, + "order": 849, "name": "xnomada", "count": 1, "languages": 1 }, { - "order": 846, + "order": 850, "name": "miguelsarm", "count": 1, "languages": 1 }, { - "order": 847, + "order": 851, "name": "royhuamanavila", "count": 1, "languages": 1 }, { - "order": 848, + "order": 852, "name": "imista", "count": 1, "languages": 1 }, { - "order": 849, + "order": 853, "name": "denisortega", "count": 1, "languages": 1 }, { - "order": 850, + "order": 854, "name": "kouski", "count": 1, "languages": 1 }, { - "order": 851, + "order": 855, "name": "leydimadrid", "count": 1, "languages": 1 }, { - "order": 852, + "order": 856, "name": "frannm29", "count": 1, "languages": 1 }, { - "order": 853, + "order": 857, "name": "saintsluis", "count": 1, "languages": 1 }, { - "order": 854, + "order": 858, "name": "gc796", "count": 1, "languages": 1 }, { - "order": 855, + "order": 859, "name": "pierre-ol", "count": 1, "languages": 1 }, { - "order": 856, + "order": 860, "name": "francescoalterio", "count": 1, "languages": 1 }, { - "order": 857, + "order": 861, "name": "gustavoguerrero", "count": 1, "languages": 1 }, { - "order": 858, + "order": 862, "name": "diegoxxd", "count": 1, "languages": 1 }, { - "order": 859, + "order": 863, "name": "walkerlyna", "count": 1, "languages": 1 }, { - "order": 860, - "name": "sejotaz", + "order": 864, + "name": "erysnell", "count": 1, "languages": 1 }, { - "order": 861, - "name": "duendeintemporal", + "order": 865, + "name": "sejotaz", "count": 1, "languages": 1 }, { - "order": 862, + "order": 866, "name": "frcan89", "count": 1, "languages": 1 }, { - "order": 863, + "order": 867, "name": "nicorey89", "count": 1, "languages": 1 }, { - "order": 864, + "order": 868, "name": "alexis0717", "count": 1, "languages": 1 }, { - "order": 865, + "order": 869, "name": "edgonzz", "count": 1, "languages": 1 }, { - "order": 866, + "order": 870, "name": "vmga09", "count": 1, "languages": 1 }, { - "order": 867, + "order": 871, "name": "lfam200", "count": 1, "languages": 1 }, { - "order": 868, + "order": 872, "name": "kenzambrano", "count": 1, "languages": 1 }, { - "order": 869, + "order": 873, "name": "dmhenaopa", "count": 1, "languages": 1 }, { - "order": 870, + "order": 874, "name": "jpiacaruso", "count": 1, "languages": 1 }, { - "order": 871, + "order": 875, "name": "isnatthy", "count": 1, "languages": 1 }, { - "order": 872, + "order": 876, "name": "peticas", "count": 1, "languages": 1 }, { - "order": 873, + "order": 877, "name": "flarien", "count": 1, "languages": 1 }, { - "order": 874, + "order": 878, "name": "franciscokarriere", "count": 1, "languages": 1 }, { - "order": 875, + "order": 879, "name": "pipeyz21", "count": 1, "languages": 1 }, { - "order": 876, + "order": 880, "name": "luisgarm", "count": 1, "languages": 1 }, { - "order": 877, + "order": 881, "name": "tetotille", "count": 1, "languages": 1 }, { - "order": 878, + "order": 882, "name": "vorosdev", "count": 1, "languages": 1 }, { - "order": 879, + "order": 883, "name": "santiagomac", "count": 1, "languages": 1 }, { - "order": 880, + "order": 884, "name": "implevacui", "count": 1, "languages": 1 }, { - "order": 881, + "order": 885, "name": "fede6299", "count": 1, "languages": 1 }, { - "order": 882, + "order": 886, "name": "kevin05m", "count": 1, "languages": 1 }, { - "order": 883, + "order": 887, "name": "diegomm27", "count": 1, "languages": 1 }, { - "order": 884, + "order": 888, "name": "pablo-lnx", "count": 1, "languages": 1 }, { - "order": 885, + "order": 889, "name": "darkohokage", "count": 1, "languages": 1 }, { - "order": 886, + "order": 890, "name": "jhonnfl", "count": 1, "languages": 1 }, { - "order": 887, + "order": 891, "name": "jarzatedev", "count": 1, "languages": 1 }, { - "order": 888, + "order": 892, "name": "brunom-93", "count": 1, "languages": 1 }, { - "order": 889, + "order": 893, "name": "alejandroruiz23", "count": 1, "languages": 1 }, { - "order": 890, + "order": 894, "name": "trollface77", "count": 1, "languages": 1 }, { - "order": 891, + "order": 895, "name": "jaimesoftdev", "count": 1, "languages": 1 }, { - "order": 892, + "order": 896, "name": "edm1ya", "count": 1, "languages": 1 }, { - "order": 893, + "order": 897, "name": "tartabullroberto", "count": 1, "languages": 1 }, { - "order": 894, + "order": 898, "name": "serg-pq", "count": 1, "languages": 1 }, { - "order": 895, + "order": 899, "name": "lara-vel-dev", "count": 1, "languages": 1 }, { - "order": 896, + "order": 900, "name": "alexisbarradev", "count": 1, "languages": 1 }, { - "order": 897, + "order": 901, "name": "kelvincb", "count": 1, "languages": 1 }, { - "order": 898, + "order": 902, "name": "carlostoledoe", "count": 1, "languages": 1 }, { - "order": 899, + "order": 903, "name": "gilbertho502", "count": 1, "languages": 1 }, { - "order": 900, + "order": 904, "name": "v0l0v", "count": 1, "languages": 1 }, { - "order": 901, + "order": 905, "name": "johao23", "count": 1, "languages": 1 }, { - "order": 902, + "order": 906, "name": "geridage", "count": 1, "languages": 1 }, { - "order": 903, + "order": 907, "name": "vmarialuzm", "count": 1, "languages": 1 }, { - "order": 904, + "order": 908, "name": "snowcardenas", "count": 1, "languages": 1 }, { - "order": 905, + "order": 909, "name": "and-y21", "count": 1, "languages": 1 }, { - "order": 906, + "order": 910, "name": "arturodlapaz17", "count": 1, "languages": 1 }, { - "order": 907, + "order": 911, "name": "manuu42", "count": 1, "languages": 1 }, { - "order": 908, + "order": 912, "name": "howlett9999", "count": 1, "languages": 1 }, { - "order": 909, + "order": 913, + "name": "dkp-dev", + "count": 1, + "languages": 1 + }, + { + "order": 914, "name": "hnaranjog", "count": 1, "languages": 1 }, { - "order": 910, + "order": 915, "name": "wallsified", "count": 1, "languages": 1 }, { - "order": 911, + "order": 916, "name": "lluistech", "count": 1, "languages": 1 }, { - "order": 912, + "order": 917, "name": "mamartinez14", "count": 1, "languages": 1 }, { - "order": 913, + "order": 918, "name": "ambrociojrdelacruz", "count": 1, "languages": 1 }, { - "order": 914, + "order": 919, "name": "bassalex27", "count": 1, "languages": 1 }, { - "order": 915, + "order": 920, "name": "yetlanezils", "count": 1, "languages": 1 }, { - "order": 916, + "order": 921, "name": "ndepaul82", "count": 1, "languages": 1 }, { - "order": 917, + "order": 922, "name": "amitchellg", "count": 1, "languages": 1 }, { - "order": 918, + "order": 923, "name": "turudev1979", "count": 1, "languages": 1 }, { - "order": 919, + "order": 924, "name": "deivimiller", "count": 1, "languages": 1 }, { - "order": 920, + "order": 925, "name": "haroldalb", "count": 1, "languages": 1 }, { - "order": 921, + "order": 926, "name": "dakkaj", "count": 1, "languages": 1 }, { - "order": 922, + "order": 927, + "name": "jheisonquiroga", + "count": 1, + "languages": 1 + }, + { + "order": 928, "name": "juli-m4", "count": 1, "languages": 1 }, { - "order": 923, + "order": 929, "name": "sergiomhernandez", "count": 1, "languages": 1 }, { - "order": 924, + "order": 930, "name": "masenace", "count": 1, "languages": 1 }, { - "order": 925, + "order": 931, "name": "e-xtian", "count": 1, "languages": 1 }, { - "order": 926, + "order": 932, "name": "vickalck", "count": 1, "languages": 1 }, { - "order": 927, + "order": 933, "name": "gmedinat911", "count": 1, "languages": 1 }, { - "order": 928, + "order": 934, "name": "eljavi0", "count": 1, "languages": 1 }, { - "order": 929, + "order": 935, "name": "yeisongil", "count": 1, "languages": 1 }, { - "order": 930, + "order": 936, "name": "julioorozco05", "count": 1, "languages": 1 }, { - "order": 931, + "order": 937, "name": "fergz1988", "count": 1, "languages": 1 }, { - "order": 932, + "order": 938, "name": "marcos0803", "count": 1, "languages": 1 }, { - "order": 933, + "order": 939, "name": "xcortes", "count": 1, "languages": 1 }, { - "order": 934, + "order": 940, "name": "facundorsabia", "count": 1, "languages": 1 }, { - "order": 935, + "order": 941, "name": "nico70012", "count": 1, "languages": 1 }, { - "order": 936, + "order": 942, "name": "charly024", "count": 1, "languages": 1 }, { - "order": 937, + "order": 943, "name": "devjerez", "count": 1, "languages": 1 }, { - "order": 938, + "order": 944, "name": "gersonoroz", "count": 1, "languages": 1 }, { - "order": 939, + "order": 945, "name": "jafuma0320", "count": 1, "languages": 1 }, { - "order": 940, + "order": 946, "name": "g4nd4lf", "count": 1, "languages": 1 }, { - "order": 941, + "order": 947, "name": "obed-tc", "count": 1, "languages": 1 }, { - "order": 942, + "order": 948, "name": "devkenn", "count": 1, "languages": 1 }, { - "order": 943, + "order": 949, "name": "xalejandrow", "count": 1, "languages": 1 }, { - "order": 944, + "order": 950, "name": "henrydavidprimera", "count": 1, "languages": 1 }, { - "order": 945, + "order": 951, "name": "luceldasilva", "count": 1, "languages": 1 }, { - "order": 946, + "order": 952, "name": "mjordanaam", "count": 1, "languages": 1 }, { - "order": 947, + "order": 953, "name": "betulioo", "count": 1, "languages": 1 }, { - "order": 948, + "order": 954, "name": "judithernandez", "count": 1, "languages": 1 }, { - "order": 949, + "order": 955, "name": "dimanu-py", "count": 1, "languages": 1 }, { - "order": 950, + "order": 956, "name": "snowale", "count": 1, "languages": 1 }, { - "order": 951, + "order": 957, "name": "cd1974", "count": 1, "languages": 1 }, { - "order": 952, + "order": 958, "name": "acobo3", "count": 1, "languages": 1 }, { - "order": 953, + "order": 959, "name": "isaacdci", "count": 1, "languages": 1 }, { - "order": 954, + "order": 960, "name": "manueldenisdev", "count": 1, "languages": 1 }, { - "order": 955, + "order": 961, "name": "anexo01", "count": 1, "languages": 1 }, { - "order": 956, + "order": 962, "name": "yamiyugi25", "count": 1, "languages": 1 }, { - "order": 957, + "order": 963, "name": "gl-informatica", "count": 1, "languages": 1 }, { - "order": 958, + "order": 964, "name": "miguelmancebo", "count": 1, "languages": 1 }, { - "order": 959, + "order": 965, "name": "neusier101", "count": 1, "languages": 1 }, { - "order": 960, + "order": 966, "name": "emmanuelmmontesinos ", "count": 1, "languages": 1 }, { - "order": 961, + "order": 967, "name": "xhinto", "count": 1, "languages": 1 }, { - "order": 962, + "order": 968, "name": "dacaldev", "count": 1, "languages": 1 }, { - "order": 963, + "order": 969, "name": "juan-cruz01", "count": 1, "languages": 1 }, { - "order": 964, + "order": 970, "name": "juanalbornoz32", "count": 1, "languages": 1 }, { - "order": 965, + "order": 971, "name": "cisneros2404", "count": 1, "languages": 1 }, { - "order": 966, + "order": 972, "name": "neftalyr", "count": 1, "languages": 1 }, { - "order": 967, + "order": 973, "name": "latorredev", "count": 1, "languages": 1 }, { - "order": 968, + "order": 974, "name": "osneidert", "count": 1, "languages": 1 }, { - "order": 969, + "order": 975, "name": "jrgranadosb", "count": 1, "languages": 1 }, { - "order": 970, + "order": 976, "name": "vicvilla30", "count": 1, "languages": 1 }, { - "order": 971, + "order": 977, "name": "carlosbb70", "count": 1, "languages": 1 }, { - "order": 972, + "order": 978, "name": "pablom-2015", "count": 1, "languages": 1 }, { - "order": 973, + "order": 979, "name": "xtinarita", "count": 1, "languages": 1 }, { - "order": 974, + "order": 980, "name": "wilsonbarrera", "count": 1, "languages": 1 }, { - "order": 975, + "order": 981, "name": "jereaguilar", "count": 1, "languages": 1 }, { - "order": 976, + "order": 982, "name": "giovanni-schmaily", "count": 1, "languages": 1 }, { - "order": 977, + "order": 983, "name": "danidan1214", "count": 1, "languages": 1 }, { - "order": 978, + "order": 984, "name": "demegorash", "count": 1, "languages": 1 }, { - "order": 979, + "order": 985, "name": "cris10026", "count": 1, "languages": 1 }, { - "order": 980, + "order": 986, "name": "davidgramiro", "count": 1, "languages": 1 }, { - "order": 981, + "order": 987, "name": "jgarteag", "count": 1, "languages": 1 }, { - "order": 982, + "order": 988, "name": "adcarret", "count": 1, "languages": 1 }, { - "order": 983, + "order": 989, "name": "natanaelzubiri", "count": 1, "languages": 1 }, { - "order": 984, + "order": 990, "name": "diegogomezcor4", "count": 1, "languages": 1 }, { - "order": 985, + "order": 991, "name": "perla-zg", "count": 1, "languages": 1 }, { - "order": 986, + "order": 992, "name": "neshurtado", "count": 1, "languages": 1 }, { - "order": 987, + "order": 993, "name": "marcelinoarias369", "count": 1, "languages": 1 }, { - "order": 988, + "order": 994, "name": "pushodev", "count": 1, "languages": 1 }, { - "order": 989, + "order": 995, "name": "sherkla12e", "count": 1, "languages": 1 }, { - "order": 990, + "order": 996, "name": "luisangeles20", "count": 1, "languages": 1 }, { - "order": 991, + "order": 997, "name": "omar8102", "count": 1, "languages": 1 }, { - "order": 992, + "order": 998, "name": "eatsangels", "count": 1, "languages": 1 }, { - "order": 993, + "order": 999, "name": "alejarandro", "count": 1, "languages": 1 }, { - "order": 994, + "order": 1000, "name": "tashidian", "count": 1, "languages": 1 }, { - "order": 995, + "order": 1001, "name": "alejandro000", "count": 1, "languages": 1 }, { - "order": 996, + "order": 1002, "name": "francgci", "count": 1, "languages": 1 }, { - "order": 997, + "order": 1003, "name": "krisipo", "count": 1, "languages": 1 }, { - "order": 998, + "order": 1004, "name": "jalonso76", "count": 1, "languages": 1 }, { - "order": 999, + "order": 1005, "name": "leo18q", "count": 1, "languages": 1 }, { - "order": 1000, + "order": 1006, "name": "sofiamfernandez", "count": 1, "languages": 1 }, { - "order": 1001, + "order": 1007, "name": "jgregoris", "count": 1, "languages": 1 }, { - "order": 1002, + "order": 1008, "name": "josuelopez5", "count": 1, "languages": 1 }, { - "order": 1003, + "order": 1009, "name": "mrf1989", "count": 1, "languages": 1 }, { - "order": 1004, + "order": 1010, "name": "zeraven09", "count": 1, "languages": 1 }, { - "order": 1005, + "order": 1011, "name": "pr1de-23", "count": 1, "languages": 1 }, { - "order": 1006, + "order": 1012, "name": "kronoscba", "count": 1, "languages": 1 }, { - "order": 1007, + "order": 1013, "name": "erickcis", "count": 1, "languages": 1 }, { - "order": 1008, + "order": 1014, "name": "experthacker444", "count": 1, "languages": 1 }, { - "order": 1009, + "order": 1015, "name": "javirr4", "count": 1, "languages": 1 }, { - "order": 1010, + "order": 1016, "name": "ignacioskm", "count": 1, "languages": 1 }, { - "order": 1011, + "order": 1017, "name": "jchernandez87", "count": 1, "languages": 1 }, { - "order": 1012, + "order": 1018, "name": "ferngpv", "count": 1, "languages": 1 }, { - "order": 1013, + "order": 1019, "name": "kshields51", "count": 1, "languages": 1 }, { - "order": 1014, + "order": 1020, "name": "salas89", "count": 1, "languages": 1 }, { - "order": 1015, + "order": 1021, "name": "90dread", "count": 1, "languages": 1 }, { - "order": 1016, + "order": 1022, "name": "chema-dw", "count": 1, "languages": 1 }, { - "order": 1017, + "order": 1023, "name": "sbngl", "count": 1, "languages": 1 }, { - "order": 1018, + "order": 1024, "name": "m4xxdev", "count": 1, "languages": 1 }, { - "order": 1019, + "order": 1025, "name": "cristianvergaraf", "count": 1, "languages": 1 }, { - "order": 1020, + "order": 1026, "name": "lizzymaken", "count": 1, "languages": 1 }, { - "order": 1021, + "order": 1027, + "name": "jandortiz", + "count": 1, + "languages": 1 + }, + { + "order": 1028, "name": "claudios1980", "count": 1, "languages": 1 }, { - "order": 1022, + "order": 1029, "name": "sergiovelayos", "count": 1, "languages": 1 }, { - "order": 1023, + "order": 1030, "name": "miguelangel861", "count": 1, "languages": 1 }, { - "order": 1024, + "order": 1031, "name": "marcosjarrin", "count": 1, "languages": 1 }, { - "order": 1025, + "order": 1032, "name": "jandresalvar", "count": 1, "languages": 1 }, { - "order": 1026, + "order": 1033, "name": "joferpg", "count": 1, "languages": 1 }, { - "order": 1027, + "order": 1034, "name": "jlrojano", "count": 1, "languages": 1 }, { - "order": 1028, + "order": 1035, "name": "ivanserran", "count": 1, "languages": 1 }, { - "order": 1029, + "order": 1036, "name": "dany3gs", "count": 1, "languages": 1 }, { - "order": 1030, + "order": 1037, "name": "lizandev", "count": 1, "languages": 1 }, { - "order": 1031, + "order": 1038, "name": "adriangonzalezroble", "count": 1, "languages": 1 }, { - "order": 1032, + "order": 1039, "name": "dariel800xd", "count": 1, "languages": 1 }, { - "order": 1033, + "order": 1040, "name": "cristian-encalada", "count": 1, "languages": 1 }, { - "order": 1034, + "order": 1041, "name": "lewisoneil", "count": 1, "languages": 1 }, { - "order": 1035, + "order": 1042, "name": "hanzd07", "count": 1, "languages": 1 }, { - "order": 1036, + "order": 1043, "name": "bycris13", "count": 1, "languages": 1 }, { - "order": 1037, + "order": 1044, "name": "santiagopereiraviroga", "count": 1, "languages": 1 }, { - "order": 1038, + "order": 1045, "name": "v1k770r", "count": 1, "languages": 1 }, { - "order": 1039, + "order": 1046, "name": "gianellannie", "count": 1, "languages": 1 }, { - "order": 1040, + "order": 1047, "name": "alefine", "count": 1, "languages": 1 }, { - "order": 1041, + "order": 1048, "name": "chalaito88", "count": 1, "languages": 1 }, { - "order": 1042, + "order": 1049, "name": "fredylopez01", "count": 1, "languages": 1 }, { - "order": 1043, + "order": 1050, "name": "dsmhp0", "count": 1, "languages": 1 }, { - "order": 1044, + "order": 1051, "name": "lautimorales", "count": 1, "languages": 1 }, { - "order": 1045, + "order": 1052, "name": "alexeigio", "count": 1, "languages": 1 }, { - "order": 1046, + "order": 1053, "name": "angeldevsarrollo", "count": 1, "languages": 1 }, { - "order": 1047, + "order": 1054, "name": "pguillo", "count": 1, "languages": 1 }, { - "order": 1048, + "order": 1055, "name": "vikinghost", "count": 1, "languages": 1 }, { - "order": 1049, + "order": 1056, "name": "derkopath", "count": 1, "languages": 1 }, { - "order": 1050, + "order": 1057, "name": "adriansaint07", "count": 1, "languages": 1 }, { - "order": 1051, + "order": 1058, "name": "javiir", "count": 1, "languages": 1 }, { - "order": 1052, + "order": 1059, "name": "sxxnzdev", "count": 1, "languages": 1 }, { - "order": 1053, + "order": 1060, "name": "det3992", "count": 1, "languages": 1 }, { - "order": 1054, + "order": 1061, "name": "frankmon03", "count": 1, "languages": 1 }, { - "order": 1055, + "order": 1062, "name": "xhaloidx", "count": 1, "languages": 1 }, { - "order": 1056, + "order": 1063, "name": "iguerrerov", "count": 1, "languages": 1 }, { - "order": 1057, + "order": 1064, "name": "jrgim", "count": 1, "languages": 1 }, { - "order": 1058, + "order": 1065, "name": "cristianmr87", "count": 1, "languages": 1 }, { - "order": 1059, + "order": 1066, "name": "rumacar05", "count": 1, "languages": 1 }, { - "order": 1060, + "order": 1067, "name": "jose-zga", "count": 1, "languages": 1 }, { - "order": 1061, + "order": 1068, "name": "mathiur", "count": 1, "languages": 1 }, { - "order": 1062, + "order": 1069, "name": "robermejia", "count": 1, "languages": 1 }, { - "order": 1063, + "order": 1070, "name": "sanuka78", "count": 1, "languages": 1 }, { - "order": 1064, + "order": 1071, "name": "reneguzman7", "count": 1, "languages": 1 }, { - "order": 1065, + "order": 1072, "name": "durwian", "count": 1, "languages": 1 }, { - "order": 1066, + "order": 1073, "name": "martinaq", "count": 1, "languages": 1 }, { - "order": 1067, + "order": 1074, "name": "kgrc05", "count": 1, "languages": 1 }, { - "order": 1068, + "order": 1075, + "name": "queralesdev", + "count": 1, + "languages": 1 + }, + { + "order": 1076, "name": "dovinhoyos", "count": 1, "languages": 1 }, { - "order": 1069, + "order": 1077, "name": "maynor06", "count": 1, "languages": 1 }, { - "order": 1070, + "order": 1078, "name": "jaimenar", "count": 1, "languages": 1 }, { - "order": 1071, + "order": 1079, "name": "chrystiancalderon", "count": 1, "languages": 1 }, { - "order": 1072, + "order": 1080, "name": "alvaropg15", "count": 1, "languages": 1 }, { - "order": 1073, + "order": 1081, "name": "deathbato", "count": 1, "languages": 1 }, { - "order": 1074, + "order": 1082, "name": "rreyes0424", "count": 1, "languages": 1 }, { - "order": 1075, + "order": 1083, "name": "algeloro", "count": 1, "languages": 1 }, { - "order": 1076, + "order": 1084, "name": "jony_english22", "count": 1, "languages": 1 }, { - "order": 1077, + "order": 1085, "name": "antoniojzp86", "count": 1, "languages": 1 }, { - "order": 1078, + "order": 1086, "name": "serg_pq", "count": 1, "languages": 1 }, { - "order": 1079, + "order": 1087, "name": "zyn7e", "count": 1, "languages": 1 }, { - "order": 1080, + "order": 1088, "name": "diegopardomontero", "count": 1, "languages": 1 }, { - "order": 1081, + "order": 1089, "name": "cristobalbelcor", "count": 1, "languages": 1 }, { - "order": 1082, + "order": 1090, "name": "albert-29", "count": 1, "languages": 1 }, { - "order": 1083, + "order": 1091, "name": "pvigo10", "count": 1, "languages": 1 }, { - "order": 1084, + "order": 1092, "name": "clespinosa2024", "count": 1, "languages": 1 }, { - "order": 1085, + "order": 1093, "name": "danisaurio94", "count": 1, "languages": 1 }, { - "order": 1086, + "order": 1094, "name": "jaquelinetorres", "count": 1, "languages": 1 }, { - "order": 1087, + "order": 1095, "name": "javosss", "count": 1, "languages": 1 }, { - "order": 1088, + "order": 1096, "name": "eduardo282", "count": 1, "languages": 1 }, { - "order": 1089, + "order": 1097, "name": "franespina", "count": 1, "languages": 1 }, { - "order": 1090, + "order": 1098, "name": "davidbastosg", "count": 1, "languages": 1 }, { - "order": 1091, + "order": 1099, "name": "carlosmares", "count": 1, "languages": 1 }, { - "order": 1092, + "order": 1100, "name": "rawc1nnamon", "count": 1, "languages": 1 }, { - "order": 1093, + "order": 1101, "name": "deivisaherreraj", "count": 1, "languages": 1 }, { - "order": 1094, + "order": 1102, "name": "alfaroo1", "count": 1, "languages": 1 }, { - "order": 1095, + "order": 1103, "name": "astrarothdlcxvi", "count": 1, "languages": 1 }, { - "order": 1096, + "order": 1104, "name": "kerunaru", "count": 1, "languages": 1 }, { - "order": 1097, + "order": 1105, "name": "marcosalvarezcalabria", "count": 1, "languages": 1 }, { - "order": 1098, + "order": 1106, "name": "orzefox", "count": 1, "languages": 1 }, { - "order": 1099, + "order": 1107, "name": "acirdeveloper", "count": 1, "languages": 1 }, { - "order": 1100, + "order": 1108, "name": "emiliordev", "count": 1, "languages": 1 }, { - "order": 1101, + "order": 1109, "name": "sve-nnn", "count": 1, "languages": 1 }, { - "order": 1102, + "order": 1110, "name": "edgarmedranoa", "count": 1, "languages": 1 }, { - "order": 1103, + "order": 1111, "name": "rafapg93", "count": 1, "languages": 1 }, { - "order": 1104, + "order": 1112, "name": "vickalc", "count": 1, "languages": 1 }, { - "order": 1105, + "order": 1113, "name": "riukac", "count": 1, "languages": 1 }, { - "order": 1106, + "order": 1114, "name": "rusian69", "count": 1, "languages": 1 }, { - "order": 1107, + "order": 1115, "name": "wijimenezz", "count": 1, "languages": 1 }, { - "order": 1108, + "order": 1116, "name": "albertovf", "count": 1, "languages": 1 }, { - "order": 1109, + "order": 1117, "name": "markayala13", "count": 1, "languages": 1 }, { - "order": 1110, + "order": 1118, "name": "rocha30", "count": 1, "languages": 1 }, { - "order": 1111, + "order": 1119, "name": "righelch", "count": 1, "languages": 1 }, { - "order": 1112, + "order": 1120, "name": "deathbat00", "count": 1, "languages": 1 }, { - "order": 1113, + "order": 1121, "name": "nicoloboo02", "count": 1, "languages": 1 }, { - "order": 1114, + "order": 1122, "name": "sergiopq", "count": 1, "languages": 1 }, { - "order": 1115, + "order": 1123, "name": "angeloro", "count": 1, "languages": 1 }, { - "order": 1116, + "order": 1124, "name": "jony-english22", "count": 1, "languages": 1 }, { - "order": 1117, + "order": 1125, "name": "lordzzz", "count": 1, "languages": 1 }, { - "order": 1118, + "order": 1126, "name": "alinares94", "count": 1, "languages": 1 }, { - "order": 1119, + "order": 1127, "name": "jferchotorres", "count": 1, "languages": 1 }, { - "order": 1120, + "order": 1128, "name": "713avo", "count": 1, "languages": 1 }, { - "order": 1121, + "order": 1129, "name": "micendev", "count": 1, "languages": 1 }, { - "order": 1122, + "order": 1130, "name": "ingjavierpinilla", "count": 1, "languages": 1 }, { - "order": 1123, + "order": 1131, "name": "batmarc91", "count": 1, "languages": 1 }, { - "order": 1124, + "order": 1132, "name": "angel-agis", "count": 1, "languages": 1 }, { - "order": 1125, + "order": 1133, "name": "lesterdavid31", "count": 1, "languages": 1 }, { - "order": 1126, + "order": 1134, "name": "joancharles07", "count": 1, "languages": 1 }, { - "order": 1127, + "order": 1135, "name": "mauricioobgo", "count": 1, "languages": 1 }, { - "order": 1128, + "order": 1136, "name": "cuervo23alpha", "count": 1, "languages": 1 }, { - "order": 1129, + "order": 1137, "name": "h4cker54n", "count": 1, "languages": 1 }, { - "order": 1130, + "order": 1138, "name": "derobpe", "count": 1, "languages": 1 }, { - "order": 1131, + "order": 1139, "name": "willypaz243", "count": 1, "languages": 1 }, { - "order": 1132, + "order": 1140, "name": "emersonxinay", "count": 1, "languages": 1 }, { - "order": 1133, + "order": 1141, "name": "alecraft8", "count": 1, "languages": 1 }, { - "order": 1134, + "order": 1142, "name": "greenalpak", "count": 1, "languages": 1 }, { - "order": 1135, + "order": 1143, "name": "juampaweb", "count": 1, "languages": 1 }, { - "order": 1136, + "order": 1144, "name": "girngoma", "count": 1, "languages": 1 }, { - "order": 1137, + "order": 1145, "name": "jjaljuria", "count": 1, "languages": 1 }, { - "order": 1138, + "order": 1146, "name": "ddaniel27", "count": 1, "languages": 1 }, { - "order": 1139, + "order": 1147, "name": "dfc201692", "count": 1, "languages": 1 }, { - "order": 1140, + "order": 1148, "name": "angelramirez02", "count": 1, "languages": 1 }, { - "order": 1141, + "order": 1149, "name": "lesclaz", "count": 1, "languages": 1 }, { - "order": 1142, + "order": 1150, "name": "giovannipeirone", "count": 1, "languages": 1 }, { - "order": 1143, + "order": 1151, "name": "whiterbb", "count": 1, "languages": 1 }, { - "order": 1144, + "order": 1152, "name": "adridiazz", "count": 1, "languages": 1 }, { - "order": 1145, + "order": 1153, "name": "jesus2421", "count": 1, "languages": 1 }, { - "order": 1146, + "order": 1154, "name": "euu92", "count": 1, "languages": 1 }, { - "order": 1147, + "order": 1155, "name": "santyjl44", "count": 1, "languages": 1 }, { - "order": 1148, + "order": 1156, "name": "luism95", "count": 1, "languages": 1 }, { - "order": 1149, + "order": 1157, "name": "ouendinga", "count": 1, "languages": 1 }, { - "order": 1150, + "order": 1158, "name": "melonconyogurt", "count": 1, "languages": 1 - }, - { - "order": 1151, - "name": "mantaras96", - "count": 1, - "languages": 1 } ] } \ No newline at end of file