Bläddra i källkod

Number letter counts

Adel Qalieh 12 år sedan
förälder
incheckning
63dfb1a96e
1 ändrade filer med 70 tillägg och 0 borttagningar
  1. 70 0
      17.py

+ 70 - 0
17.py

@@ -0,0 +1,70 @@
+# Dictionaries that map from number to number of letters
+ones = {
+	0: 0,                   # 'one'
+	1: 3,                   # 'two'
+	2: 3,
+	3: 5,
+	4: 4,
+	5: 4,
+	6: 3,
+	7: 5,
+	8: 5,
+	9: 4,
+	}
+teens = {
+	10: 3,                  # 'ten'
+	11: 6,                  # 'eleven'
+	12: 6,
+	13: 8,
+	14: 8,
+	15: 7,
+	16: 7,
+	17: 9,
+	18: 8,
+	19: 8,
+	}
+tens = {
+	2: 6,                   # 'twenty'
+	3: 6,                   # 'thirty'
+	4: 5,
+	5: 5,
+	6: 5,
+	7: 7,
+	8: 6,
+	9: 6,
+	}
+hundred = {
+	0: 10,                  
+	1: 13,                  # 'one hundred and '
+	2: 13,                  # 'two hundred and '
+	3: 15,
+	4: 14,
+	5: 14,
+	6: 13,
+	7: 15,
+	8: 15,
+	9: 14,
+	}
+
+def number_length(n):
+	if n < 10:
+		return ones[n]
+	elif n < 100:
+		if n < 20:
+			return teens[n]
+		else:
+			return tens[n/10] + ones[n % 10]
+	elif n < 1000:
+		if n % 100 == 0:
+			return ones[n/100] + 7 # Add 7 for length of 'hundred'
+		else:
+			return hundred[n/100] + number_length(n % 100)
+
+def main(n):
+	total = 0
+	for i in xrange(1, n):
+		total += number_length(i)
+	return total + 11 # Add 11 for length of 'one thousand'
+
+if __name__ == "__main__":
+	print main(1000)