Palabras Entrelazadas


Descripción

Una palabra está entrelazada (en inglés “interlocked”) si podemos dividirla en dos palabras tomando alternadamente sus letras. Por ejemplo, “schooled” es una palabra entrelazada porqué puede ser separada en las palabras “shoe” y “cold” (Más adelante se muestra el código para obtener estas palabras).

Para seleccionar letras de una cadena de forma alternada, puedes usar el operador slice (:) con tres componentes que indiquen dónde comenzar, dónde terminar, y cuántos lugares avanzar (step size) en la cadena.

En el siguiente código, el primer componente es 0, así que empezamos con la primera letra. La El segundo componente es None, el cual significa que debemos de ir hasta el final de la cadena. Y el tercer componente es 2, así que avanzamos 2 espacios entre las letras que seleccionamos.

word = 'schooled'
first = word[0:None:2]
first

'shoe'

Podemos lograr el mismo efecto, si en lugar de user None como segundo componente simplemente no lo indicamos. Por ejemplo, el siguiente código alterna entre letras, comenzando con la segunda letra.

second = word[1::2]
second

'cold'

Escribe una función llamada is_interlocking la cual tome una palabra como argumento y devuelva True si puede ser dividida en dos palabras entrelazadas. Puedes usar la lista de palabras del archivo words.txt para verificar las palabras.

Ejemplo de Ejecución:

print(is_interlocked('schooled'))
True

Solución

Mostrar solución
with open('/content/drive/MyDrive/words.txt') as f:
  words = f.read().splitlines()

def is_interlocked(word):
  first = word[0::2]
  second = word[1::2]

  print(first)
  print(second)

  return first in words and second in words

print(is_interlocked('schooled'))

Probar solución en Google Colab

Fuente del ejercicio: https://allendowney.github.io/ThinkPython/chap10.html#id4