読者です 読者をやめる 読者になる 読者になる

mu chance or much chance ?

日々の戯れ言

言語処理100本ノック 2015 09

  • 問題

09. Typoglycemia
スペースで区切られた単語列に対して,各単語の先頭と末尾の文字は残し,それ以外の文字の順序をランダムに並び替えるプログラムを作成せよ.ただし,長さが4以下の単語は並び替えないこととする.適当な英語の文(例えば"I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind .")を与え,その実行結果を確認せよ.

  • 解答例
import random

def wordShuffle(word):
    if len(word) <= 4:
        return word
    shuffleWord = list(word)[1:-1]
    random.shuffle(shuffleWord)
    return word[0] + ''.join(shuffleWord) + word[-1]

def typoglycemia(str):
    wordList = []
    for word in str.split():
        wordList.append(wordShuffle(word))
    return wordList

str = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."
print(' '.join(typoglycemia(str)));
  • コメント

これまでの総まとめを感じた問題でした.
random.shuffleで簡単にランダムに並び替えられるので,
とても楽ですね.

2章もそのうち解こうと思います.