- プログラミングのお題スレ Part5
194 :デフォルトの名無しさん[sage]:2014/10/04(土) 10:00:58.88 ID:m0RM23AG - >>178 Python
変に工夫しようとしてハマったの俺だけ? 他の人の回答チラ見して単純に書いたら簡単だった・・・ def search_nums(): for nums in [[i, j, k, l] for i in xrange(1, 10) for j in xrange(1, 10) for k in xrange(1, 10) for l in xrange(1, 10)]: s = '11233{}{}{}{}'.format(*nums) if (map(s.count, ['1', '2', '3']) == nums[:3] and len(s) - sum(map(s.count, ['1', '2', '3'])) == nums[3]): print('この文字列には1が{}個,2が{}個,3が{}個,1から3以外の数字が{}個ある。'.format(*nums)) search_nums() →この文字列には1が4個,2が1個,3が3個,1から3以外の数字が1個ある。
| - プログラミングのお題スレ Part5
195 :デフォルトの名無しさん[sage]:2014/10/04(土) 19:49:23.11 ID:m0RM23AG - >>175 Python 間違ってたら、ご愛嬌・・・
def get_otakara(otakara_list): res = [] while len(otakara_list) > 0: target_list = [otakara_list[0]] otakara_list.remove(target_list[0]) center_xy = (target_list[0][0], target_list[0][1]) for otakara in otakara_list[:]: #次の景品も取れるかもって仮定で円の中央を計算してみよっかなぁ・・・整数じゃなきゃって話でややこしぃなぁ・・・ new_x = round((max([target[0] for target in target_list + [otakara]]) + min([target[0] for target in target_list + [otakara]])) / 2.0) new_y = round((max([target[1] for target in target_list + [otakara]]) + min([target[1] for target in target_list + [otakara]])) / 2.0) #選んだ景品も取れればラッキー☆ どうかなー?仮定してみた円にはいるかなぁ・・・ if len([target for target in target_list + [otakara] if abs(target[0] - new_x) ** 2 + abs(target[1] - new_y) ** 2 <= 25]) == len(target_list) + 1: target_list.append(otakara) otakara_list.remove(otakara) center_xy = (int(new_x), int(new_y)) res.append(center_xy) return res def get_otakara_sort_by_density(otakara_list): #半径5以内の景品の密度によってソートするよっ! res = [] for otakara in otakara_list: # るーと((x1 - x2)^2 + (y1 - y2)^2)が距離だってさー、ぐぐったんだよ☆ res.append((otakara, len([neighbor for neighbor in otakara_list if abs(otakara[0] - neighbor[0]) ** 2 + abs(otakara[1] - neighbor[1]) ** 2 < 25]))) res.sort(lambda e1, e2: -cmp(e1[1], e2[1])) #密度によってソートするお return [e[0] for e in res] print(get_otakara(get_otakara_sort_by_density([(-5, 0), (5, 0)]))) →[(0, 0)] print(get_otakara(get_otakara_sort_by_density([(0, 5), (3, 3), (4, 4), (10, -1), (-9, 0), (-7, 0), (-6, 2), (0, -5), (3, -3)]))) →[(2, 1), (-8, 1), (0, -5), (10, -1)]
|
|