三つの手段と大きな基地


週間チャレンジ157


私は、3週中断の後、帰ります!
Challenge , My solution

タスク1 - 1ピタゴラス


タスク


整数を指定します.
すべてを計算するスクリプトを書くPythagorean Means 整数の与えられたセットのI算術平均、幾何平均と調和平均.

マイソリューション


これは比較的まっすぐ進むタスクです.Wikipediaページは必要な数式を提供しますsum reduce and lambda 必要な数値を計算する機能.最後にround 関数を結果を小数点以下の位置に出力します.
PerlコードはPythonのバージョンと似ていますが、list ::utilsでproducts ()メソッドを使用しています.Pythonの数学.製品はPython 3.8 +
一つの注意点は、整数の和が0の場合、高調波平均を計算するときにゼロ誤差による除算が発生する場合があります.私はこれをキャッチしていないし、ユーザーにエラーを渡すことができます.


$ ./ch-1.py 1 3 5 6 9
AM = 4.8, GM = 3.8, HM = 2.8

$ ./ch-1.py 2 4 6 8 10
AM = 6.0, GM = 5.2, HM = 4.4

$ ./ch-1.py 1 2 3 4 5
AM = 3.0, GM = 2.6, HM = 2.2

タスク1号2番ブラジル数字


タスク


あなたは数を与えられます$n > 3 .
指定された数がブラジルの数であるかどうかを調べるためにスクリプトを書く.正整数数N 少なくとも1つの自然数B どこ1 < B < N-1 where the representation of N イン・ベースB 同じ数字です.

マイソリューション


これは面白い仕事だった.文字と数字を使用するだけで、異なるベースに番号を変換することはできません.例1282は、ベース640の22ですが、どのように639を同じベースで表現するのでしょうか?
このタスクでは、数字自体が異なる数字を持っていても、同じ数字を持つ値を考えました.例えば、925はベース36の(25)(25)として表現される.
このタスクのガット数を変換することですn ベース10で指定されたベースにb . この関数はsame_digits . の剰余(剰余)を取るn and b そして、この値d . 次に、整数除算を行い、n % b is d . 返しますFalse 桁が同じでないならばTrue 彼ら全員がそうであるならば.
それから、それはちょうど2から5までループを持つことの問題ですn - 2 , を呼び出すとsame_digits 各基地のための機能.マッチがあれば、私は印刷します1 (と基底)0 を返します.
PerlコードはPythonコードの字訳です.


$ ./ch-2.py 6
0

$ ./ch-2.py 7
1 (base 2)

$ ./ch-2.py 8
1 (base 3)