s1Eva2017TI_T1 Palabras puntaje

Ejercicio: 1Eva2017TI_T1 Palabras puntaje

scrable letters

Propuesta de solución en Python, revisar tema indicado como tarea:

Para iniciar el algoritmo se presenta un ejemplo busca como resultado: mostrar cada palabra y su puntaje.

Al final se muestra la palabra que obtuvo mayor puntaje.

palabra, puntaje:
CAS*A* 6
S*ASTR*E* 6
R*EY* 6
A*ZOTE* 14
Mayor puntaje: 
A*ZOTE* 14
>>> 

En el bloque de ingreso se ha optado por incluir las palabras del ejercicio del enunciado.

alfabeto = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
equivale = [1,3,3,2,1,4,2,4,1,9,5,1,3,1,1,3,10,1,1,1,1,4,4,9,4,10]

Para simplificar la identificación de las letras se convierten todas a mayúsculas en caso que el usuario las escriba en minúsculas.

# unifica a mayúsculas
variaspalabras = variaspalabras.upper()

# separa las palabras por ','
palabras = variaspalabras.split(',')

Se utiliza un contador de "puntos" por cada "palabra".

Luego se procesa cada palabra, analizando cada letra para encontrar el puntaje equivalente.

    # Analiza palabra, letra por letra
    j = 0
    while (j<m):
        letra = unapalabra[j]
        if (letra in abecedario):
            donde = abecedario.index(letra)
            puntos[i] = puntos[i]+equivale[donde]
        j = j+1 # siguiente letra

Algoritmo en Python

# 1Eva2017TI_T1 Palabras puntaje
# Tarea: considere los '*'como doble puntaje
#        para letra anterior
import numpy as np

# INGRESO
# variaspalabras = input('Analizar: ')
variaspalabras ='CAS*A*,S*ASTR*E*,R*EY*,A*ZOTE*'

# PROCEDIMIENTO
abecedario = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
equivale = [1,3,3,2,1,4,2,4,1,9,5,1,3,1,1,3,
            10,1,1,1,1,4,4,9,4,10]

# unifica a mayúsculas
variaspalabras = variaspalabras.upper()

# separa las palabras por ','
palabras = variaspalabras.split(',')

n = len(palabras)

# arreglo de puntos por cada palabra
puntos = np.zeros(n,dtype=int)

i = 0
while (i<n):
    unapalabra = palabras[i]
    m = len(unapalabra)

    # Analiza palabra, letra por letra
    j = 0
    while (j<m):
        letra = unapalabra[j]
        if (letra in abecedario):
            donde = abecedario.index(letra)
            puntos[i] = puntos[i]+equivale[donde]
        j = j+1 # siguiente letra
    
    i = i+1  #siguiente palabra

# encuentra posición del máximo puntaje
cual = np.argmax(puntos)

# SALIDA
print('palabra, puntaje: ')
i = 0
while (i<n):
    print(palabras[i],puntos[i])
    i = i+1

print('Mayor puntaje: ')
print(palabras[cual],puntos[cual])

Ejercicios resueltos/Ejemplos por año

Ejemplos 1ra Evaluación

1ra Eva 2020-2011

1ra Eva 2010-2001

Ejemplos 2da Evaluación

2da Eva 2020-2011

2da Eva 2010-2001

Ejemplos 3ra Evaluación

3ra Eva 2020-2011

3ra Eva 2010-2001