2016-04-01 10 views
0

数値を並べ替えることで簡単な数学的ジャグリングを行うスクリプトを作成しました。この計算では、Python "magic"を解決してください。

x = 777.0 
y = 5 
calc = x/y # 155.4 

を... 擬似コード:

Rearrange numbers (last digit + first) = 555. 
Difference from 777 and 555 = 222 
Add 222 to 555 = 777 

基本的に、それは本当の計算を行うことなく、元の変数を再作成する必要がありますが、代わりに数字だけを再配置し、追加し、それが何をすべき

私はそれが333.3のような4桁の数字でのみ動作することを期待していました。少なくとも私の(非学問的な)見解からは不可能であるように見える2543.6452のような数字でも働くようです。 誰かがここで何が起こるか教えてもらえますか?コードが正しく動作しているのか、私は何かを作成してしまったのですか?私には錯覚のように見えます。 :D

x = 5.0 
y = 7345.3297 
z= y/x 
print "Initial Value = " + str(y) 
print "Calculate:" 
print str(y) + "/" + str(x) 
print z # 177.6 
print 
a = int(str(z)[0]) 
print "First Number = " + str(a) 
print 
b = int(str(z)[1]) 
c = int(str(z)[2]) 
print "In between = " + str(b) + str(c) 
d = int(str(z)[-1]) # treat z as string, take first string after . from z and format it back to int 
print "Last Number = " + str(d) 
print 
print "Rearrange Numbers" 
res = str(a+d) +str(b) +str(c) 
to_int = int(res) 
dif = y - to_int 
add = to_int + dif 
print "number = " + str(add) 
+2

コードはあなたがしたいことを正確に実行しています。それはやっている? – DavidG

+0

本当にありません。それはあまりにもよく、あまりにも良いことです。 :D たとえば、23135.34674という数値をとり、計算を実行すると、23135.34674とは非常に異なる結果になるはずです。 コードは666.666や888.8のような "対称"の値でしか使えないと思っています。少なくとも私のコードは変数yをとり、結果として出力します。 :D "in_between"の値は、2番目と3番目の数字だけを考慮に入れます。大きな数字で正しい結果を得ることは不可能です。 – Horst23

答えて

1

ここでいくつかの置換をしましょう。一番下の行は読み:

dif = y - to_int 
add = to_int + dif 

をこのとして1行で記述することができます。

add = y - to_int + to_int 

か:

add = y 

ですから、すべてこの「魔法」を行い、その後、それを完全に無視しますあなたが始めたものを印刷する。あなたはこれの上に何かを置くことができます。このコードは最後にすべてy :-)で印刷されます。

+0

なぜy - to_intが違うのですか? to_intが555、yが777の場合は222となるはずです。より長い(非対称の)浮動小数点数を使用してコードを実行すると、zの部分だけが残っているため完全に異なるものを出力するはずです。 zのすべての計算ベース。 "dif = y - to_int"では、yから並べ替えられたzを減算したいだけです。 – Horst23

+1

私はそのコメントを理解しているかどうかは分かりません。確かにdifはy - to_intです。しかし、私はなぜそれが重要かわかりません。最後に、その量が*正確にyと等しい「追加」と呼ばれる数量を印刷します。これを実証するには、 'dif = y to_int'行の前に' to_int = to_int * 129736912876348723564'のようなことをしてください。そして、コードはまだ最後に 'y'を出力します。 (これによってint/floatのオーバーフローが発生しない限り) – Xirtaminu

+0

私はdifの値をテストしましたが、yと同じではありません! これは私の理論が真実であると思われ、数字/ 5に基づくすべての計算は結果* 5を計算せずに元に戻すことができますが、代わりに数字を並べ替えることができます。これはクレイジーか、それとも私のスパゲッティモンスターの幻想なのですか? o_0 – Horst23

関連する問題