Python×インド式算数②一の位同士が足すと10になるかつ十の位が同じ値の場合について






 ということで昨日に引き続きなんですけど、今回は一桁目が足して10になるかつ十の桁が同じ場合の話ですね。


 なので66×64とか、82×88とかかなり限定されるんですけど、当てはまれば瞬殺できる方法ですね。
 ①片方の十の桁に+1して互いに掛ける。その数値が左にくる。
 ②一の桁同士をかける。sの数値が右にくる。
 という非常に簡単なものですね。

 なので66×64であれば
 ①6に1足して7なので、6×7=42
 ②6×4=24
 合わせて4224となると。
 これを練習できるコードがこれです。


import random
num1 = random.randint(1,9)
num2 = 10 - num1
num3 = random.randint(1,9)
print(num1,num2,num3)
hoge = 10*num3 + 1*num1
hage = 10*num3 + 1*num2
print(hoge)
print(hage)
print(hoge, "*", hage)
print('①十の桁について左×(右+1)とする②一の位同士をかける')
hege = hoge * hage
print(hege)
print('答えは?')
while True:
    e =int(input('>>'))
    if e == hege:
        print('正解!天才!!素晴らしい!')
        break
    else:
        print('やり直し')
        continue

 動画内では解説しているんですけど、
    if e == hege:
 の行を最初
  if e is hege:
 にしてました。
 これのおかげでなぜかある数値まではうまくいくのに、ある数値から先は間違い扱いが続出してしまって、なぜうまくいったりうまくいかなかったりするのかが謎でここだけものすごく時間を食いましたね(笑)かえって全部うまくいかない方が楽だし、いっそエラーが起きてくれた方が余程助かるなと痛感しました(笑)
 まあここだけクリアできれば後はスムーズにもう20個くらい作れてますので、本当にこれがクリアできてよかったなと思っています。


 あとは注意点としては80×80みたいな場合はダメということですね。
 一の桁同士を足しても10ではなく0なので80×90=7200とか計算しだしたらミスりますね。
 80×80=6400で、この方法を使うまでもないかもしれませんが一応付記しておきます。








この記事へのコメント

にほんブログ村 ゲームブログ ゲーム評論・レビューへ
にほんブログ村