2020年12月13日日曜日

言語処理100本ノック 問題09

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


解答例

#ライブラリrandomを読み込み

import random

#関数shuffleの定義
def shuffle(words):
  result = []
  for word in words.split():
    if len(word) > 4:  # 長さが4超であればシャッフル
      word = word[:1] + ''.join(random.sample(word[1:-1], len(word) - 2)) + word[-1:]
    result.append(word)

  return ' '.join(result)

#読み込む文章(words)の定義
words = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."
 

#shuffleの出力(ans)を定義

ans = shuffle(words)

#ansの表示
print(ans)


出力(ランダムにシャッフルしているので、答えは毎回変わります)

 I clundo't beevile that I could acultaly udntsnaerd what I was rnediag : the pnmnheaoel poewr of the hamun mind .

 

参考リンク

【言語処理100本ノック 2020】第1章: 準備運動 


0 件のコメント:

コメントを投稿