ami tambien hace 1 mes estoy seguro que no habria entendido pero entendi los 3 (y el tercero ni lo habria echo solo lo entendi por como voy escribiendo xDD)
Es correcto, varios me han hecho esa recomendación, el tema es que para efectos de este ejercicio no creo que en un futuro cercano se agreguen más días a la semana 😂
que significa eso bro, voy a empezar la u y voy a seguir programacion... yo entiendo ese mensaje algo asi: si los numeros naturales menores a cero.... los numeros naturales mayores a ... lo demas no entiendo xd
"mucha memoria" para un mapa que, en este caso particular, tiene a lo más 7 elementos y que siempre va a ser pasado por referencia, nunca serán copias por valor... No hay que optimizar prematuramente. En este caso el gasto en memoria es mínimo.
@@EliukBlau más aún cuando las alternativas, precisamente, gastan igual o más espacio en memoria al declarar los arrays, o los valores de las variables...
Depende el lenguaje también, en Java el switch es más performante porque hace el salto al puntero al string a nivel código binario saltándose desreferenciar el puntero al arreglo de String, sigue estando en O(1), pero de son menos pasos. Un abrazo.
@@pablodm9 Concuerdo, es un gran 'depende'. Pero como siempre tiran en los foros, la que va (cuando vale la pena optimizar) es hacer profiling, ver qué tarda y porqué, optimizar, profiling de nuevo y (pivotando si fue más lento cosa que puede pasar con optimizaciones muy finas, para) seguir así hasta que funcione como se espera.
La solución es correcta, pero a mí gusto lo haría implementando un diccionario de esta manera { 1:"lunes", 2:"martes"...}, Y usando la construcción basica de if o con operador ternario y sale un bonito one line code, pero complejo para los que no están acostumbrados a ese tipo de códigos "incomprensibles"
Si, se ahorra de escribir la clave, pero las estructuras de datos tienen semántica. Significan algo. Tener el valor de entrada y el valor de salida en una estructura tipo mapa, puede ayudar a tener una semántica unificada en esos datos. Imagina que de pronto, por cualquier motivo, piden adicionalmente que el valor 99 devuelva el día viernes. En el mapa bastaría agregar una nueva clave y ya. Mientras que para el array habría que agregar condicionales, o rellenar espacios vacíos en el array hasta el 99, etc. En general, siempre es mejor que las propias estructuras de datos mapeen también la lógica (en lo posible), y el código imperativo solo extraiga los datos de esas estructuras, sin lógicas extras.
Buena, pero si pones como parámetro 1, un humano esperaría que le retorne lunes, pero como los índices empiezan en 0 en javascript va a retornar martes así que yo pondría return weekDays[num - 1]
excelente consejo, actulmente trabajo en optimizar mis programas, algo que he notado es la base de datos, sea una lista, tupla o diccionario, dependiendo de esto el programa puede volverse mas optimo
Depende de la semántica de la función. ¿Tiene sentido pasar, por ejemplo, 99, y que me siga devolviendo un día de la semana? La semántica de las funciones y sus parámetros siempre es contextual respecto a si, en su uso, tiene sentido ocuparlas de tal o cuál manera.
si, tambien es otra opcion, aunque igual el acceso es O(1) tanto para el diccionario como para el arreglo si se sabe el indice, sino el diccionario es mejor
tecnicamente ya el array esta asociando numeros a cada valor (como lo hacen las tablas de hash), en este caso no hay necesidad de diccionario, a menos que necesites que te devuelvan los dias de la semana asociado a otros valores string.
No, realmente no lo es. Es muy mala. Esta solución es limpia, pero es completamente ineficiente para el compilador. Es mucho mejor, definir un objeto constante del tipo: const week = { "1": "lunes", "2": "martes", .... } Y luego acceder así al objeto: week["1"] No declaras un array, no se reserva memoria de forma dinámica, no se realizan cálculos como ese n-1, No necesitas un try-catch que es súper ineficiente y no puedes obtener fallo al acceder , ya que retorna null si le pasas un valor inexistente. No os fíeis mucho de estos gurús de la programación que salen ahora por CZcams porque de un desarrollador a un ingeniero hay un siglo de dedicación y análisis. Y ya porque no has traducido a ensamblador ambos códigos, si no verías una diferencia brutal. La mejor opción es un switch sin ninguna duda. Es casi igual de eficiente que los if encadenados y es más limpio que esos ifs.
@@imandrezz3399 Esto tampoco es eficiente para todos los casos, todo tiene un costo, usar varios if-elif-else cuesta menos memoria. Si trabajas con microprocesadores es mejor usar ese código largo a utilizar la otra opción.
@@xr8102 Justo es lo que estuve viendo en unos retos de una página. Me esforcé en hacer código con las nuevas prestaciones del lenguaje y resultaban muy cositas en recursos y en tiempo. Pero cuando utilizaba una programación tipo lenguaje C (todo hecho a mano) resultaba más rápido y eficiente. Me pareció muy curioso eso porque yo creía que todas las funciones nuevas y especiales estaba bien optimizadas.
¿Por que la necesidad de recorrer un array? creo que es mas simple y mantenible realizar un diccionario con ello const getDay = (day) => { const days = { 0: "Lunes", 1: "Martes", 2: "Miercoles", 3: "Jueves", 4: "Viernes", 5: "Sabado", 6: "Domingo" } return days[day] ?? "Out of the range" } Así si por x o y razón lunes ya no es 0 sino 1 o que ya no sea por numero sino por sus primeras 3 letras es sencillo cambiarle, al final siempre tendrás el mismo output
Realmente escribir menos código no siempre es mejor. Es cierto que en JS las constantes igualadas a una arrow function son bastante estándar, pero yo sigo prefiriendo utilizar named functions en esos casos. Mi argumento es que el código debe describirse a sí mismo de la mejor forma posible, y "function getDay(...)" cumple su trabajo ("esta es la función getDay"), mientras que "const getDays = (...)" es como decir "esta es la constante getDay, cuyo valor es una función". Para mi gusto, descriptivamente, es menos directo.
Hay que seguir estudiando. Antes no era capaz de entender eso, ahora tampoco. Nah broma, ahora con el tiempo llevo de 2018 en el mundo de la programación y entiendo todo. Incluso se puede hacer aún más corto como dice un comentario de más arriba. El tiempo de estudio da sus frutos, ánimos!!
@@zadkielgd5137 La universidad me dió la base. Pero todo lo demás lo fui descubriendo. Por ejemplo yo me quise dedicar a ser FullStack y busqué en internet que era lo que necesitaba para formarme como FullStack y ahí fuí aprendiendo ciertos lenguajes
Es bastante sencillo creo. Si no entendes literalmente un array y como acceder a él todavia te falta aprender. Es algo super basico. No lo digo de malo, es la verdad.
Buen video! También consideraría crear una clase Enum con cada uno de los días y una función que retorne el name del valueOf del número indicado por parámetro. Sin olvidar el catch!
El código switch era más eficiente. Y de todas maneras con un enum (const) es mejor (Más legible, menos código, limita el rango de la variable porque viene oredefinido...), no?
Creo que por eso existen los comentarios, ademas es una opcion que agrega un POQUITO de seguridad a tu programa, mayor complejidad, mayor nivel de conocimiento se requiere para descifrarlo, asi funciona la base de un hackeo
En cuanto a eficiencia, en JavaScript es exactamente igual de rápido. En otros lenguajes, la diferencia de tiempo acceso entre un valor de array y un hashmap es abismal (el array es obviamente más rápido)
Esta es otra opción un poco más fácil: semana = ["Lunes","Martes","Miércoles","Jueves","Viernes"] numero = int(input("Ingrese un número del 1 al 5: ")) resultado = semana.pop(numero-1) print(resultado)
O sea si está bien pero el escenario no está enfocado en ver cómo puedes obtener el día de la semana jajaja, sino cómo puedes simplificar la sintaxis. Ya dependiendo de cada escenario en las apps es que lo acomodas a cómo más te guste 👍🏻
Bro te doy un consejo, no respondas mensajes de haters, literalmente cada uno programa como se canta el viento del culo... Y no te rebajes al nivel de la gente que te dice que está mal, mal está si no funciona... Si no, importa poco y nada como esté hecho un código... Si vas a ser creador de contenido ocupate de buscar comentarios que aporten al canal, porque aunque no lo creas, das mucha más confianza y seriedad si ignoras a los bobos que se creen Anonymous en CZcams. Saludos
@Andrés lo que dices de que cada uno programa como le venga es cierto si son para proyectos propios que nunca se hará pública . Si el hace contenido pues por cosas como estás ya se ve la calidad de profesional que es . Por qué cuando al futuro programes para el exterior y empresas de renombre , estos usan reglas y más cosas para el código . Y si pues uno hace lo que quiere no podrá adaptarse a esos estándares . Y pues el que hizo este video aclara sobre la eficiencia yo creo q con eso nadie diría nada verdad .
"Si no, importa poco y nada como esté hecho un código". No es cierto, si vas a trabajar de esto si es importantisima la calidad de codigo. Garantiza mantenibilidad y extensibilidad a largo plazo. Si solo te de dedicas a aprender o hacer proyectos propios lo entiendo, pero para casos reales donde tendrás que interactuar con compañeros te recomiendo darle prioridad a la calidad. Es algo que es medible y objetivo, hay cosas que son subjetivas segun opinion personal pero hay muchas otras que no.
Es absurdo hacer arreglos por cada caso, ya que eso solo aumenta la "consulta". Bien puedes usar lo mas basico que es return true y el valor. Otro mas complejo y embebido es hacer arrays o class que se podra acceder a cualquier script y en cualquier codigo. public enum DiaSemana { LUNES, MARTES, MIÉRCOLES, JUEVES, VIERNES, SÁBADO, DOMINGO } class Program { static void Main() { int indice = 3; string texto = (Enum.IsDefined(typeof(DiaSemana), indice - 1)) ? $"Hoy es {(DiaSemana)(indice - 1)}." : "Índice fuera de rango."; Console.WriteLine(texto); } }
interesante pero aveces la mayoria solo quiere simplificar codigo para tener menos lineas y no piensan en el costo de procesamiento ya eso depende para q se usa 😳
Sería muchísimo más rápido con un diccionario days_dict = { 1 : “lunes”, 2 : “martes”, etc..} try: print(days_dict[n]) except ValueError as e: print(e) Recuerda que el tiempo de acceso de un diccionario es constante.
Wow, que bien se siente entender algo que hace 1 mes no entendia, por fin entiendo los arrays 😂
Jaja me ha pasado últimamente varias veces, se siente muy gratificante ... Y al mismo tiempo uno piensa, "¿en esta tontería, invertí días de mi vida?"
👶
X2
ami tambien
hace 1 mes estoy seguro que no habria entendido pero entendi los 3 (y el tercero ni lo habria echo solo lo entendi por como voy escribiendo xDD)
para evitar el harcodeo, podrias hacer if(n=days.length) asi no tienes que cambiar la condicion si es que agregas mas entradas al array
Es correcto, varios me han hecho esa recomendación, el tema es que para efectos de este ejercicio no creo que en un futuro cercano se agreguen más días a la semana 😂
@@vidamrr bueno cierto 😐 yo digo nomas pa que los novatos no se acostumbren a fixear los limites 🥴
@federico fernandez correcto, hay que siempre estar atento a esos detalles
No creo que inventen más días a la semana ohhhh
que significa eso bro, voy a empezar la u y voy a seguir programacion... yo entiendo ese mensaje algo asi: si los numeros naturales menores a cero.... los numeros naturales mayores a ... lo demas no entiendo xd
No es mejor crear un objeto donde las Keys son números y los values los días de la semana ?
Eso gasta mucha memoria
Un mapa perro ?
"mucha memoria" para un mapa que, en este caso particular, tiene a lo más 7 elementos y que siempre va a ser pasado por referencia, nunca serán copias por valor... No hay que optimizar prematuramente. En este caso el gasto en memoria es mínimo.
@@HEADEAR4U es irrelevante para pequeñas cantidades de datos, el mejor código en estos casos es el código más legible
@@EliukBlau más aún cuando las alternativas, precisamente, gastan igual o más espacio en memoria al declarar los arrays, o los valores de las variables...
Depende el lenguaje también, en Java el switch es más performante porque hace el salto al puntero al string a nivel código binario saltándose desreferenciar el puntero al arreglo de String, sigue estando en O(1), pero de son menos pasos. Un abrazo.
no creo que 7 strings vayan a ser un daño tremendo al performance. Hay que saber cuando vale la pensa optimizar
@@pablodm9 Concuerdo, es un gran 'depende'. Pero como siempre tiran en los foros, la que va (cuando vale la pena optimizar) es hacer profiling, ver qué tarda y porqué, optimizar, profiling de nuevo y (pivotando si fue más lento cosa que puede pasar con optimizaciones muy finas, para) seguir así hasta que funcione como se espera.
La solución es correcta, pero a mí gusto lo haría implementando un diccionario de esta manera { 1:"lunes", 2:"martes"...}, Y usando la construcción basica de if o con operador ternario y sale un bonito one line code, pero complejo para los que no están acostumbrados a ese tipo de códigos "incomprensibles"
En JavaScript termina siendo exactamente lo mismo que un array, excepto que el índice empieza por 0. Por lo tanto te ahorras escribir cada clave.
Si, se ahorra de escribir la clave, pero las estructuras de datos tienen semántica. Significan algo. Tener el valor de entrada y el valor de salida en una estructura tipo mapa, puede ayudar a tener una semántica unificada en esos datos. Imagina que de pronto, por cualquier motivo, piden adicionalmente que el valor 99 devuelva el día viernes. En el mapa bastaría agregar una nueva clave y ya. Mientras que para el array habría que agregar condicionales, o rellenar espacios vacíos en el array hasta el 99, etc.
En general, siempre es mejor que las propias estructuras de datos mapeen también la lógica (en lo posible), y el código imperativo solo extraiga los datos de esas estructuras, sin lógicas extras.
Los diccionarios son los más en cualquier leguaje y si los unís con enumeraciones, tenes código super limpio y entendible.
Depende del lenguaje pero JS haría:
function getWeekday(num) {
const weekDays = ['Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado', 'Domingo'];
return weekDays[num] || new Error('Invalid weekday');
}
Buena, pero si pones como parámetro 1, un humano esperaría que le retorne lunes, pero como los índices empiezan en 0 en javascript va a retornar martes así que yo pondría
return weekDays[num - 1]
@@rubiusoficial oh sí, olvidé poner el - 1 😅
Y en phyton?
@@emmanuelfernandochimilpach8190
def week(day):
dicc={0:"Lunes",1:"Martes",2:"Miércoles",3:"Jueves",4:"Viernes",5:"Sábado",6:"Domingo"}
if day 6:
return "Error"
else:
return dicc[day]
print(week(0))
const days =
{lunes: () =>{todo1},
martes: ()=>{todo2},
...
}
days["lunes"]()
Se puede hacer aún más corto:
try {
return days[n - 1]
} catch {
throw new Error("Out of range")
}
Depende del lenguaje. En Javascript, OutOfBounds no es un error, solo `undefined`
Ok
Que lenguaje es ese ? 👀
@@jimfreecss6391 JavaScript
@Bbzhitto Games comparte la idea por favor
Que gran ejemplo 👏🏼
excelente consejo, actulmente trabajo en optimizar mis programas, algo que he notado es la base de datos, sea una lista, tupla o diccionario, dependiendo de esto el programa puede volverse mas optimo
Hermoso ejemplo!!
Gran ejemplo. Gracias
Para uno que va aprendiendo (como yo) es mejor aprenderse switch, pero ahora ya para ahorrar y más simplicidad, como lo pusiste al ultimo
Excelente, gracias por compartir.
Wow, justamente estoy viendo patrones de diseño
Muy bueno! Gracias!
que programa estás usando para señarar con tu cursor se ve útil.
buen video gracias
Muy buena que programa usa para marcar loss rectángulos verdes?
No es necesario lanzar una excepción si está fuera de range... si el usuario pasa el valor 8, devuelve "Lunes" usando el operador %... return (n%7)-1
Depende de la semántica de la función. ¿Tiene sentido pasar, por ejemplo, 99, y que me siga devolviendo un día de la semana? La semántica de las funciones y sus parámetros siempre es contextual respecto a si, en su uso, tiene sentido ocuparlas de tal o cuál manera.
Tengo una duda, hace poco hice un piedra, papel y tijeras y me "repeti" como en el ejemplo 1, como deberia haber aplicado esto,¿ haciendo una lista?
Yo me voy con el switch, creo que es la opción más entendible además otros porgramadores tocaran ese código y pues tiene que ser entendible
muchas gracias
:)
Buen video!
Se puede hacer aún más eficiente con un diccionario clave valor, así vas directo a la key y no tienes que hacer un loop 🔁
si, tambien es otra opcion, aunque igual el acceso es O(1) tanto para el diccionario como para el arreglo si se sabe el indice, sino el diccionario es mejor
¿Dónde está el loop?
Tambien se puede usar un patron strtategy.
en c# podrias usar un diccionario y hacerle un out var para sacar el dia de la semana segun su id
Pero y si cada día tendrá un texto diferente ¿El if sería necesario?
Buena idea gracias!! En mi caso prefiero las estructuras mas primitivas como un switch o un if. Me resulta mas agradable de trabajar y de retomar.
Todavía no he estudiado JavaScript pero, no es aún mejor idea hacer un diccionario?
tecnicamente ya el array esta asociando numeros a cada valor (como lo hacen las tablas de hash), en este caso no hay necesidad de diccionario, a menos que necesites que te devuelvan los dias de la semana asociado a otros valores string.
Con map también se simplificará
Cómo que la variable días es Let y no Const pues cuántos días más quedan por descubrir??
una forma limpia y sencilla seria algo como esto: weekendDays = {1: 'lunes', 2: 'martes'}
weekendDays[day] // for example weekendDays[1]
¿No es mejor poner la array dentro de la función?
La condicion del if, que es: n < 1 || n > 7
no se podria reemplazar por:
n < days.length || n > days.length
??.
no, si lo haces la condición se cumple con cualquier número positivo que pases en "n" al menos que sea igual al de la longitud del array
Como consumiría más Ram? Con el array o con un if o Switch ?
De ninguna forma, a nivel de eficiencia ninguno es más rápido o más lento, porque el acceso es bigO(1)
Puedes hacerlo pero en python ?
Me parece que un objeto se vería más claro. Igual con un array se ve bien amigo felicidades
como se llama el tipo de fuente que usas? esta bonito
Es : jetbrains mono
Se puede solo con un objeto pasas el valor al prop y que regrese el value
Que lenguaje es? Saludos.
No lo habia pensado, gran tip
No, realmente no lo es. Es muy mala.
Esta solución es limpia, pero es completamente ineficiente para el compilador.
Es mucho mejor, definir un objeto constante del tipo:
const week = {
"1": "lunes",
"2": "martes",
....
}
Y luego acceder así al objeto:
week["1"]
No declaras un array, no se reserva memoria de forma dinámica, no se realizan cálculos como ese n-1,
No necesitas un try-catch que es súper ineficiente y no puedes obtener fallo al acceder , ya que retorna null si le pasas un valor inexistente.
No os fíeis mucho de estos gurús de la programación que salen ahora por CZcams porque de un desarrollador a un ingeniero hay un siglo de dedicación y análisis.
Y ya porque no has traducido a ensamblador ambos códigos, si no verías una diferencia brutal.
La mejor opción es un switch sin ninguna duda. Es casi igual de eficiente que los if encadenados y es más limpio que esos ifs.
Es muy mala idea. Muy ineficiente
@ correcto
Un potip
Ta chido 😃 👍
Prefiero lo simple, aunque a veces sea más largo, pues alguien más en su momento deberá tocar el código
Pero lo simple no siempre es eficiente
@@imandrezz3399 Esto tampoco es eficiente para todos los casos, todo tiene un costo, usar varios if-elif-else cuesta menos memoria. Si trabajas con microprocesadores es mejor usar ese código largo a utilizar la otra opción.
@@xr8102 Justo es lo que estuve viendo en unos retos de una página. Me esforcé en hacer código con las nuevas prestaciones del lenguaje y resultaban muy cositas en recursos y en tiempo. Pero cuando utilizaba una programación tipo lenguaje C (todo hecho a mano) resultaba más rápido y eficiente. Me pareció muy curioso eso porque yo creía que todas las funciones nuevas y especiales estaba bien optimizadas.
@@imandrezz3399 y no siempre lo mas dificil es lo mas eficiente
@@imandrezz3399 Precisamente en este caso el Switch es tanto lo más simple como lo más eficiente 😅
¿Por que la necesidad de recorrer un array? creo que es mas simple y mantenible realizar un diccionario con ello
const getDay = (day) => {
const days = { 0: "Lunes", 1: "Martes", 2: "Miercoles", 3: "Jueves", 4: "Viernes", 5: "Sabado", 6: "Domingo" }
return days[day] ?? "Out of the range"
}
Así si por x o y razón lunes ya no es 0 sino 1 o que ya no sea por numero sino por sus primeras 3 letras es sencillo cambiarle, al final siempre tendrás el mismo output
Y que tal usando el método map? También es posible ?
Disculpa, sabes como puedo hacer eso en c++
Tengo una pregunta. ¿No sería mejor crear una función de flecha para escribir menos código y así retornar el mismo resultado?
Realmente escribir menos código no siempre es mejor. Es cierto que en JS las constantes igualadas a una arrow function son bastante estándar, pero yo sigo prefiriendo utilizar named functions en esos casos. Mi argumento es que el código debe describirse a sí mismo de la mejor forma posible, y "function getDay(...)" cumple su trabajo ("esta es la función getDay"), mientras que "const getDays = (...)" es como decir "esta es la constante getDay, cuyo valor es una función". Para mi gusto, descriptivamente, es menos directo.
Don't you have dictionaries in JS?
Usando un objeto en vez de switch y if statement tambien serviria?
Si
En mi opinión sacrificar legibilidad por no repetir líneas hace el código menos mantenible porque se convierte en código que da miedo tocar
Pero es fácil de entender. Solo debe estar bien comentado
Para que sirve la dos barra verticales?? Es para separar o para que?? Primera ves que veo
El OR en Javascript.
Lo malo es que si no tienes suficiente conocimiento se te dificulta entenderlo
Hay que seguir estudiando. Antes no era capaz de entender eso, ahora tampoco. Nah broma, ahora con el tiempo llevo de 2018 en el mundo de la programación y entiendo todo. Incluso se puede hacer aún más corto como dice un comentario de más arriba. El tiempo de estudio da sus frutos, ánimos!!
@@MatroxSe donde aprendiste tu?
@@zadkielgd5137 La universidad me dió la base. Pero todo lo demás lo fui descubriendo. Por ejemplo yo me quise dedicar a ser FullStack y busqué en internet que era lo que necesitaba para formarme como FullStack y ahí fuí aprendiendo ciertos lenguajes
Soy
Es bastante sencillo creo. Si no entendes literalmente un array y como acceder a él todavia te falta aprender. Es algo super basico.
No lo digo de malo, es la verdad.
¿como se llama ese mouse que usas ? Quiero dar una presentación y estaria bueno saberlo jaja
Es una app que hice especificamente para eso pero no esta publicada ni nada, si tienes WIndows me parece que hay una app para eso
se podría usar un Enum?
claro que sí
evitaría el if y le haría funcional directamente
Agregar complejidad ciclomatica donde no se necesita?
xd en donde?
Una vez le puse esto a unos cuantos dev y no supieron incluso hasta se puede hacer de otra manera con poo y if en foreach
Yo programo en C# lo quería es tener un diccionario Key Days, Value lunes martes etc. y asi lo manejas :)
Estaba pensando en un Enum, pero supongo que por detrás es un diccionario
Bien visto broder
@@DavidPerez-Reostatico Justo para esos casos donde se requiere una determinada cantidad de valores constantes se utiliza el Enum, buen pensado. 👍
En typescript la otra opción sería usar un enum.
buena esa.
La próxima vez empiezo a escribirlo medio mal y le pregunto a ChatGPT.
Buen video! También consideraría crear una clase Enum con cada uno de los días y una función que retorne el name del valueOf del número indicado por parámetro. Sin olvidar el catch!
El código switch era más eficiente. Y de todas maneras con un enum (const) es mejor (Más legible, menos código, limita el rango de la variable porque viene oredefinido...), no?
creo que se puede usar un mapa directamente no?
A veces es mejor tener mas líneas de codigo y que cualquiera pueda entenderlo a escribir cosas que en una semana ni tu sabes que hacian xD
Creo que por eso existen los comentarios, ademas es una opcion que agrega un POQUITO de seguridad a tu programa, mayor complejidad, mayor nivel de conocimiento se requiere para descifrarlo, asi funciona la base de un hackeo
Para eso estan los enum o dict, pero el ejemplo en si esta bien
Colocarlo en un objeto también sería genial
Y porque no un mapa o set ?
También puedes crear un objeto
function getDay(n){
const map={
"1":"lunes",
"2":"martes",
//Así para cada día
}
return map[n] ?? 'N/A'
}
Eso es javascript o java
yo con else en la mochila:
Buena
Un map, con clave-valor seria aun mas eficiente
No realmente. Acceder una llave en un mapa tiene coste O(1) y acceder un elemento en un array utilizando un indice también tiene un costo de O(1).
En cuanto a eficiencia, en JavaScript es exactamente igual de rápido. En otros lenguajes, la diferencia de tiempo acceso entre un valor de array y un hashmap es abismal (el array es obviamente más rápido)
He hecho alguna vez eso, ni idea que se llamaba así
Un hashmap fixed
mejor un array de string y solo obtienes el dia por el indice, XDD
Iba a decir que simplmente usar un enum xd.
Esta es otra opción un poco más fácil:
semana = ["Lunes","Martes","Miércoles","Jueves","Viernes"]
numero = int(input("Ingrese un número del 1 al 5: "))
resultado = semana.pop(numero-1)
print(resultado)
O sea si está bien pero el escenario no está enfocado en ver cómo puedes obtener el día de la semana jajaja, sino cómo puedes simplificar la sintaxis. Ya dependiendo de cada escenario en las apps es que lo acomodas a cómo más te guste 👍🏻
@@vidamrr Ah vale vale jaja gracias
Yo quitaría el for y solo accedería al Array por su index
Que es ese signo =? Como se pone y que significa?
Cual es ese lenguaje ?
Bro te doy un consejo, no respondas mensajes de haters, literalmente cada uno programa como se canta el viento del culo... Y no te rebajes al nivel de la gente que te dice que está mal, mal está si no funciona... Si no, importa poco y nada como esté hecho un código... Si vas a ser creador de contenido ocupate de buscar comentarios que aporten al canal, porque aunque no lo creas, das mucha más confianza y seriedad si ignoras a los bobos que se creen Anonymous en CZcams. Saludos
Exacto, gracias Andrés 👍🏻👍🏻
@Andrés lo que dices de que cada uno programa como le venga es cierto si son para proyectos propios que nunca se hará pública . Si el hace contenido pues por cosas como estás ya se ve la calidad de profesional que es . Por qué cuando al futuro programes para el exterior y empresas de renombre , estos usan reglas y más cosas para el código . Y si pues uno hace lo que quiere no podrá adaptarse a esos estándares . Y pues el que hizo este video aclara sobre la eficiencia yo creo q con eso nadie diría nada verdad .
"Si no, importa poco y nada como esté hecho un código".
No es cierto, si vas a trabajar de esto si es importantisima la calidad de codigo. Garantiza mantenibilidad y extensibilidad a largo plazo. Si solo te de dedicas a aprender o hacer proyectos propios lo entiendo, pero para casos reales donde tendrás que interactuar con compañeros te recomiendo darle prioridad a la calidad. Es algo que es medible y objetivo, hay cosas que son subjetivas segun opinion personal pero hay muchas otras que no.
No amigo, siempre se puede mejorar todo y no necesariamente te hacen un hater, es comunicación efectiva
Me quedo con mi switch case
Es absurdo hacer arreglos por cada caso, ya que eso solo aumenta la "consulta". Bien puedes usar lo mas basico que es return true y el valor. Otro mas complejo y embebido es hacer arrays o class que se podra acceder a cualquier script y en cualquier codigo.
public enum DiaSemana {
LUNES, MARTES, MIÉRCOLES, JUEVES, VIERNES, SÁBADO, DOMINGO
}
class Program {
static void Main() {
int indice = 3;
string texto = (Enum.IsDefined(typeof(DiaSemana), indice - 1))
? $"Hoy es {(DiaSemana)(indice - 1)}."
: "Índice fuera de rango.";
Console.WriteLine(texto);
}
}
*El caballo se llama viernes*
En todo caso mejor me armo un diccionario
interesante pero aveces la mayoria solo quiere simplificar codigo para tener menos lineas y no piensan en el costo de procesamiento ya eso depende para q se usa 😳
cual es mejor, las funciones flecha o una funcion normal?
Siempre usa arrows y cuando las tienes que nombrar meterlas a un const
Te lo digo porque luego es más fácil copiar el segmento de código de un arrow
Grcias por tic
Estos tipos de vídeos son oro por los tips
Más fácil con un diccionario, lo haces en una linea.
No sería más fácil crear un ENUM y usar todo lo que incluye?
Enumerados llorando en la esquina viendo que no han sido usados.
Y si se usa un objeto?
Sería muchísimo más rápido con un diccionario
days_dict = { 1 : “lunes”, 2 : “martes”, etc..}
try:
print(days_dict[n])
except ValueError as e:
print(e)
Recuerda que el tiempo de acceso de un diccionario es constante.
El tiempo de acceso de un array también es constante
Este video se deberia llamar: Como hacer tu codigo altamente dificil de entender simple vista
Me faltó hacerlo a nivel ensamblador para ponerlo más difícil jajajaja
Totalmente de acuerdo Yayo xD
@Ezequiel Lozano Guerrero Es muy sencillo pero altamente dificil de entender a simple vista solo por ahorrate 1kb de memoria en disco duro
@Ezequiel Lozano Guerrero No todos tienen tu nivel de entendimiento 🙄.
Esto es muy fácil de entender a simple vista si es que llevas un tiempo trabajando en programación
O mejor aún, un mapa donde la clave es un número y el valor es el día
Aver curso rust
Pues sinceramente hace un año no le hubiera entendido. veo comentarios de que es muy dificil de entender. Pero depende del tiempo que lleves en esto.
pueden usar un for(int i=0; i>6;i++)
tienes un error en el ciclo, tiene que ser mayor a 0 no a 1