My Coding Quiz #53 👨💻🛠️🧩
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...
By @eniolw
What's your choice?
Solution to the previous quiz: '8/KppppPPk/8/8/8/8/8/8'. As always, let's analyze the script line by line. First we define a string fen
with the value "8/KPPppppppk/8/8/8/8/8/8/8/8/8/8 w - - 0 1"
and you may wonder, what the hell is this? Well, although it doesn't look like it, it's a representation of a chess position. It is not a diagram, but it is a format that is readable by a chess program and contains all the essential elements that describe a chess position.
These elements are extracted from the FEN in the following line p, t, r1, r2, o, m = fen.split()
. Here we have used the split
method and then unpacked the content in the variables p
(piece arrangement), t
(turn), r1
(castling possibilities), r2
(square for the en passant pawn; I should have named this variable differently), o
(number of half moves to apply the fifty move rule) and m
(number of full moves since the game started).
These are all attributes of a chess position, but for this script we are only interested in the first one, p
, that is, the piece arrangement itself.
What we basically do is to apply the replace
method to replace the characters "P"
in the string with the character "p"
, but by specifying the third numerical argument of replace
, we are telling it to do the replacement only for that number of characters. Since in this case we said 2
, only two "P"
characters will be replaced. That explains why the value of new
is '8/KppppPPPPk/8/8/8/8/8/8/8/8/8/8'.
I know, it might be annoying for a human to read that string, but it's not impossible. By the way, the capital P stands for white pawn, while the small p stands for black pawn, so with this operation what we did was to replace two white pawns by two black ones.
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 others.
Mi Quiz de Programación #53 👨💻🛠️🧩
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...
Por @eniolw
¿Cuál es tu elección?
Solución al quiz anterior: '8/KppppPPk/8/8/8/8/8/8'. Como siempre, analicemos el script línea por línea. Primero definimos la cadena fen
con el valor "8/KPPppppppk/8/8/8/8/8/8/8/8/8/8 w - - 0 1"
y te preguntarás, ¿qué carajos es esto? Pues aunque no lo parezca, es una representación de una posición de ajedrez. No es un diagrama, pero es un formato que es legible por un programa de ajedrez y contiene todos los elementos esenciales que describen una posición de ajedrez.
Estos elementos son extraídos del FEN en la siguiente línea p, t, r1, r2, o, m = fen.split()
. Aquí hemos utilizado el método split
y luego descomprimimos el contenido en las variables p
(disposición de piezas), t
(turno), r1
(posibilidades de enroque), r2
(casilla para el peón al paso; debería haber nombrado esta variable de otra manera), o
(número de medios movimientos para aplicar la regla de los cincuenta movimientos) y m
(número de movimientos completos desde que comenzó la partida).
Todos estos son atributos de una posición de ajedrez, pero para este script sólo nos interesa el primero, p
, es decir, la disposición de las piezas en sí.
Lo que básicamente hacemos es aplicar el método replace
para reemplazar los caracteres "P"
en la cadena con el carácter "p"
, pero al especificar el tercer argumento numérico de replace
, le estamos diciendo que reemplace solo esa cantidad de caracteres. Como en este caso dijimos 2
, solo se reemplazarán dos caracteres "P"
. Eso explica por qué el valor de new
es '8/KppppPPPPk/8/8/8/8/8/8/8/8/8/8'.
Lo sé, puede resultar molesto para un humano leer esa cadena, pero no es imposible. Por cierto, la P mayúscula representa un peón blanco, mientras que la p minúscula representa un peón negro, entonces con esta operación lo que hicimos fue sustituir dos peones blancos por dos negros.
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 y otras.