しーなのたらたらプログラミング学習日記

よれたOLの、びみょーなプログラム学習日記です

Chapter36: アナグラム(anagram) :sorted,replace,lowerとか

どうもどうもこんばんは、しーなです!

今日の課題はアナグラムだよ。
アナグラム:言葉や単語の文字を並び替えて別の意味を持つ言葉や単語を作ること)

アナグラムっていうと、一番最初に思い出すのは、
ダヴィンチコードかなぁ。

ラングトン教授が登場してくるときに最初の事件があって
そこにダイニングメッセージがのこされているんですよね。
本棚で埃まみれになってたのを、発掘してきたよ。そして下巻がなかった・・・w
どこにいったんだー!


O, Draconian devil! Oh, lame saint!

これがアナグラムで、並び替えると、こんな風になる。

“Leonardo da Vinci! The Mona Lisa!”

ダヴィンチコードは、最初に読んだ当時、衝撃的で。。。
聖杯の意味の解釈とか、だいぶわくわくしましたよ。
いつか、聖地訪問でローズライン(ダンブラウンの創作らしいけどw)とか、
めぐってみたいなー。

久しぶりに読み返してみたくなったかもw
ないと思うと余計よみたくなるよね。TSUTAYAにいってこよう!

はい、歴史オカルト系とかが大好きなので、この本は好みど真ん中でございます。


Checkio 36:Electronic Station  アナグラム
問題:2 つの単語またはフレーズが与えられます。
それらがアナグラムであるかどうかを確認してください

verify_anagrams("Programming", "Gram Ring Mop") == True
verify_anagrams("Hello", "Ole Oh") == False
verify_anagrams("Kyoto", "Tokyo") == True


解き方

  • アナグラムは文字の入れ替えだから、同じ文字であるかどうかを確認すればよいよね
  • 全部小文字にする、空白は削除する、順番を同じにソートして、比較すればいいと思う

答え

def verify_anagrams(aset,bset):
  astl= sorted(aset.lower().replace(" ","")) 
  bstl= sorted(bset.lower().replace(" ",""))
  #print(astl,bstl)
  #print("True")  if astl==bstl else print("False") 
  return True if astl==bstl else False

今日の問題は、悩まずとけたよ!
if elseも一文にしてみた。なるべく短く書いてみたかったの。

そんなに素敵解と違いがなかったのがうれしかったかも。
素敵解は、1行でやってたけど、私は凡人なので、分解してた方が読みやすいのです。




今回復習した、いままでの記事はこちら。

以上(・∀・)!