My Coding Quiz #3

avatar

My Coding Quiz #3 👨‍💻🛠️🧩

Welcome to the new installment of my series of Coding Quizzes, in which you will be able to test your knowledge and skills about programming and software development in a simple and fun way. If you want to learn more about it visit my blog here on Hive and the first post where I introduced it.

Without further ado, here's the riddle...


Quiz


What's your choice?

Solution to the previous quiz: 1. This is a bit tricky in that we are dealing with an array of string elements, not numeric elements, which is what is declared in line 1. Then in line 2 we create a b identifier that references the identifier a, so a points to the same memory address as b. However, in line 3, b changes reference and now points to a new object, but doesn't overwrite what it previously pointed to. The references issue could be considered a red herring, although if you had any doubts when analyzing this, it means you should probably brush up on it!

Now this is the tricky part, because the object returned in line 3 is an ordered array of strings. This is: ['-0', '-1', '1', '2']. String ordering is lexicographical, so it does not behave the same as numeric ordering. To understand this, imagine that you are asked to sort this array ["Shanon", "Turing", "Church"]. Surely you will know how to order it by comparing each position of a string with its equivalent in the others (this one is rather easy).

By applying this to the original ['2', '1', '-1', '-0'] array, we'll figure out the trick. It is important to know that the character '-' is less than the characters '1' and '2', so it is sorted first. Then, to break a tie between '-0' and '-1', the second position of both strings is compared. It turns out that '0' is less than '1', so it is sorted first. Hence, ['-0', '-1', '1', '2'] is the final result of the lexicographical ordering.

Finally, in line 4 the conversions are made to integer values and we have: 2 + -1, which is 2 - 1 which is 1. This one managed to trick all the participants this time!


If you want to blog about computer science and programming content, I invite you to join Hive and participate in its communities, such as STEM-social, Develop Spanish, Programming & Dev and even Hive Learners.


Mi Quiz de Programación #3 👨‍💻🛠️🧩

Bienvenido a mi nueva serie de Quizzes de Programación, en la cual podrás poner a prueba tus conocimientos y habilidades sobre programación y desarrollo de software de una manera sencilla y divertida. Si quieres aprender más sobre ella visita mi blog aquí en Hive y el primer post donde la presenté.

Sin más preámbulos, he aquí el acertijo...


Quiz


¿Cuál es tu elección?

Solución al quiz anterior: 1. Este es un poco engañoso por cuanto estamos lidiando con un arreglo de cadenas de caracteres, no de números, que es lo que se declara en la línea 1. Luego, en la línea 2 se crea un indentificador b que hace referencia al identificador a, de modo que a apunta a la misma dirección de memoria que b. Sin embargo, en la línea 3, b cambia de referencia y ahora apunta a un nuevo objeto, más no sobreescribe lo que anteriormente apuntaba. El asunto de las referencias podría ser considerado una pista falsa, aunque si tuviste dudas, significa que probablemente deberías repasar este asunto!

Ahora bien, esta es la parte complicada, pues el objeto retornado en la línea 3 es un arreglo de cadenas de caracteres ordenado. Este es: ['-0', '-1', '1', '2']. El ordenamiento de caracteres es lexicográfico, por lo que no se comporta igual que el ordenamiento numérico. Para entender esto, imagina que se pide ordenar este arreglo ["Shanon", "Turing", "Church"]. Seguro sabrás ordenarlo comparando cada posición de una cadena de caracteres con su equivalente en las demás (en realidad este ejemplo es muy fácil).

Aplicando esto al arreglo original ['2', '1', '-1', '-0'], descubriremos el truco. Importa saber que el caracter '-' es menor que los caracteres '1' y '2', por lo que se ordena de primero. Luego, para desempatar entre '-0' y '-1', se compara la segunda posición de ambas cadenas. Resulta que '0' es menor que '1', por lo que se ordena de primero. De allí que ['-0', '-1', '1', '2'] sea el resultado final del ordenamiento lexicográfico.

Finalmente, en la línea 4 se hacen las conversiones a valores enteros y se tiene: 2 + -1, que es 2 - 1 que es 1. Éste ha conseguido engañar a todos los participantes esta vez.


Si quieres bloguear sobre contenido informático y de programación, te invito a unirte a Hive y participar en sus comunidades, tales como STEM-social, Develop Spanish, Programming & Dev e incluso Hive Learners.



0
0
0.000
7 comments
avatar
avatar

Thanks for your contribution to the STEMsocial community. Feel free to join us on discord to get to know the rest of us!

Please consider delegating to the @stemsocial account (85% of the curation rewards are returned).

You may also include @stemsocial as a beneficiary of the rewards of this post to get a stronger support. 
 

0
0
0.000
avatar

The last time I checked, I found coding to be a difficult task to perform. Lol but I see how you're playing with the codes here. Quite interesting

0
0
0.000
avatar

Thank you! Try to solve it if you want.

0
0
0.000
avatar

Smile, time is no longer on my side, maybe I'll try that when I graduate from college

0
0
0.000