トップページ > プログラム > 2014年10月04日 > m0RM23AG

書き込み順位&時間帯一覧

40 位/213 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000100000000100002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
プログラミングのお題スレ Part5

書き込みレス一覧

プログラミングのお題スレ 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)]


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。