Hướng dẫn make_chocolate python - trăn make_chocolat

Permalink

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

# Chúng tôi muốn làm một gói mục tiêu của sô cô la. Chúng tôi có những thanh nhỏ (1
# Kilo mỗi) và các thanh lớn (5 kg mỗi thanh). Trả lại số lượng thanh nhỏ cho
# Sử dụng, giả sử chúng tôi luôn sử dụng các thanh lớn trước các thanh nhỏ. Trả lại -1 nếu nó
# Không thể thực hiện được.
DEFMAKE_CHOCOLATE (nhỏ, lớn, mục tiêu): make_chocolate(small, big, goal):
ifgoal> = 5*lớn: goal >= 5 * big:
remainder=goal-5*big = goal - 5 * big
khác::
remainder=goal%5 = goal % 5
ifremainder remainder <= small:
trả lại remainder
return-1 -1

Có một vấn đề mã hóa trên CodingBat.com (phần Python logic-2) yêu cầu một chức năng để xác định có bao nhiêu thanh sô cô la nhỏ được sử dụng cho yêu cầu trọng lượng. Câu hỏi như sau:

Chúng tôi muốn làm một gói mục tiêu của sô cô la. Chúng tôi có các thanh nhỏ (mỗi thanh 1 kg) và các thanh lớn (mỗi thanh 5 kg). Trả lại số lượng thanh nhỏ để sử dụng, giả sử chúng tôi luôn sử dụng các thanh lớn trước các thanh nhỏ. Trả lại -1 nếu không thể thực hiện được.

make_chocolate (4, 1, 9) → 4make_chocolate (4, 1, 10) → -1make_chocolate (4, 1, 7) → 2

... Lưu, biên dịch, Chạy (Ctrl-Enter)

Code:

def make_chocolate(small, big, goal):
    if (small + 5*big < goal) or (goal % 5 > small):
        return -1

    elif small >= goal:
        return small
    else:
        smallnum = 0
        for i in range(1,big+1):
            if 5*i + small >= goal:
                if 5*i > goal:
                    break
                smallnum = goal - 5*i
        return smallnum

def make_chocolate (nhỏ, lớn, mục tiêu):

def make_chocolate(small, big, goal):
    if (small + 5*big < goal) or (goal % 5 > small):
        return -1

    elif 5 <= goal:
        smallnum = 0
        for i in range(1,big+1):
            if 5*i + small >= goal:
                if 5*i > goal:
                    break
                smallnum = goal - 5*i
        return smallnum
  return goal

Logic-2> make_chocolateprev & nbsp; | & nbsp; Tiếp theo & nbsp; | & nbsp; cơ hội > make_chocolate
prev  |  next  |  chance

Chúng tôi muốn làm một gói mục tiêu của sô cô la. Chúng tôi có các thanh nhỏ (mỗi thanh 1 kg) và các thanh lớn (mỗi thanh 5 kg). Trả lại số lượng thanh nhỏ để sử dụng, giả sử chúng tôi luôn sử dụng các thanh lớn trước các thanh nhỏ. Trả lại -1 nếu không thể thực hiện được.goal kilos of chocolate. We have small bars (1 kilo each) and big bars (5 kilos each). Return the number of small bars to use, assuming we always use big bars before small bars. Return -1 if it can't be done.


make_chocolate (4, 1, 9) → 4make_chocolate (4, 1, 10) → -1make_chocolate (4, 1, 7) → 2
make_chocolate(4, 1, 10) → -1
make_chocolate(4, 1, 7) → 2

... Lưu, biên dịch, Chạy (Ctrl-Enter)

def make_chocolate (nhỏ, lớn, mục tiêu):

Biên tập Phông chữ Kích thước %: Đầu ra ngắn hơn Quên nó đi!- Xóa mã của tôi cho vấn đề này
Shorter output
Forget It! -- delete my code for this problem

Tất cả các giải pháp đã được thử nghiệm thành công vào ngày 18 tháng 4 năm 2013.

make_bricks:

def make_bricks(small, big, goal):
  return goal%5 >= 0 and goal%5 - small <= 0 and small + 5*big >= goal

lone_sum:

def lone_sum(a, b, c):
  if a == b == c:
    return 0
  if b == c:
    return a
  if a == c:
    return b
  if a == b:
    return c  
  return a + b + c

lucky_sum:

def lucky_sum(a, b, c):
  if a == 13:
    return 0
  if b == 13:
    return a
  if c == 13:
    return a + b
  return a + b + c

no_teen_sum:

def no_teen_sum(a, b, c):
  return fix_teen(a) + fix_teen(b) + fix_teen(c)

def fix_teen(n):
  #if 13 <= n <= 14 or 17 <= n <= 19:
  if n in [13, 14, 17, 18, 19]:
    return 0
  return n

Tôi coi việc kiểm tra tư cách thành viên danh sách là thanh lịch hơn nhiều hoạt động so sánh.

round_sum:

def round_sum(a, b, c):
  return round10(a) + round10(b) + round10(c)

def round10(n):
  if n % 10 >= 5:
    return n + 10 - (n % 10)
  return n - (n % 10)  

close_far:

def close_far(a, b, c):
  cond1 = abs(a-b) <= 1 and abs(b-c) >=2 and abs(a-c) >= 2
  cond2 = abs(a-c) <= 1 and abs(a-b) >=2 and abs(c-b) >= 2
  return cond1 or cond2

make_chocolate:

def make_chocolate(small, big, goal):
  maxBig = goal / 5
  
  if big >= maxBig:
    if small >= (goal - maxBig * 5):
      return goal - maxBig * 5
  if big < maxBig:
    if small >= (goal - big * 5):
      return goal - big * 5
  return -1