第1週課題3自己番号

1103 ワード


  • 質問リンク
    自動番号付け

  • 計画と思考
    まず,いくつかの数字がセルフサービス番号ではない条件を考慮した.では、その数字がほぼ2つの数字の和で構成されている場合、セルフサービス番号ではないものがc=a+bの場合、bがaの各桁数の和であれば、cはセルフサービス番号ではない.そしてbはaより大きくてはならない.従って、bを0からc/2に増やし、cをa,bで割った後、aの各数の和がbに等しいことを決定する.bがaより大きい前に同じ数字がない場合は、自作番号と言える.

  • に答える
  • def get_self_number(highest_number):
    	sel_number_set=[]
    	number = 1
    	while number < highest_number:
    		for part_of_number in range(number+1):
    			large_number = number - part_of_number
    			if sum_each_pos(large_number) == part_of_number:
    				break
    			if large_number < part_of_number:
    				sel_number_set.append(number)
    				break
    		number += 1
    	return sel_number_set
    
    
    def sum_each_pos(number):
    	if number // 10 == 0:
    		return number % 10
    	return number % 10 + sum_each_pos(number // 10)
    
    print(get_self_number(100))

  • 説明するときに出会う困難と苦悩.
    各ビット数の和はどのように符号化しやすいか.どんな条件で自分の番号を書きますか.

  • 釈義後に知る概念と感想
    各ビット数の和を再帰関数で求めることができることが分かった.