2013-02-21 50 views
-1

對不起,長度。使用更少的代碼很難做到這一點。問題描述如下:項目歐拉17錯誤代碼與長度測試

如果數字1到5用字寫出:1,2,3,4,5,那麼使用3 + 3 + 5 + 4 + 4 = 19個字母總共。 如果所有從1到1000(包括1000)在內的數字都是用文字寫出來的,那麼會使用多少個字母? 注意:不要計算空格或連字符。例如,342(三百四十二)包含23個字母,115(一百一十五)包含20個字母。在編寫數字時使用「和」符合英國的用法。

def buildRef(): 
    wordRef = {0: 0} 
    twentyRefList = [0, 3, 3, 5, 4, 4, 3, 5, 5, 4, 3, 6, 6, 8, 8, 7, 7, 9, 8, 8, 6] 
    tensRefList = [6, 5, 5, 5, 7, 6, 6] 
    for i in range(1, 21): 
     wordRef[i] = twentyRefList[i] 
    for i in range(3, 10): 
     wordRef[i*10] = tensRefList[i - 3] 
    for i in range(1, 10): 
     wordRef[i * 100] = twentyRefList[i] + 7 
    wordRef[1000] = 11 
    return wordRef 

def wordSum(num): 
    wordSum = 0 
    wordRef = buildRef() 
    tens, hundreds, tempSum = 0, 0, 0 
    for i in range(1, num + 1): 
     if i in wordRef: 
      tempSum = wordRef[i] 
      wordSum += wordRef[i] 
     elif i < 100: 
      tempSum = wordRef[int(i/10) * 10] + wordRef[i % 10] 
      wordSum += wordRef[int(i/10) * 10] + wordRef[i % 10] 
     else: 
      tempSum = wordRef[int(i/100) * 100] + wordRef[int((i % 100)/10) * 10] + wordRef[i % 10] + 3 
      wordSum += tempSum 
     print(i, tempSum, wordSum) 
    return wordSum 

print(wordSum(1000)) 

測試輸出:第一欄是當前數,第二個是在該號碼的字母數。第三是總字母數。

1 3 3 
2 3 6 
3 5 11 
4 4 15 
5 4 19 
6 3 22 
7 5 27 
8 5 32 
9 4 36 
10 3 39 
11 6 45 
12 6 51 
13 8 59 
14 8 67 
15 7 74 
16 7 81 
17 9 90 
18 8 98 
19 8 106 
20 6 112 
21 9 121 
22 9 130 
23 11 141 
24 10 151 
25 10 161 
26 9 170 
27 11 181 
28 11 192 
29 10 202 
30 6 208 
31 9 217 
32 9 226 
33 11 237 
34 10 247 
35 10 257 
36 9 266 
37 11 277 
38 11 288 
39 10 298 
40 5 303 
41 8 311 
42 8 319 
43 10 329 
44 9 338 
45 9 347 
46 8 355 
47 10 365 
48 10 375 
49 9 384 
50 5 389 
51 8 397 
52 8 405 
53 10 415 
54 9 424 
55 9 433 
56 8 441 
57 10 451 
58 10 461 
59 9 470 
60 5 475 
61 8 483 
62 8 491 
63 10 501 
64 9 510 
65 9 519 
66 8 527 
67 10 537 
68 10 547 
69 9 556 
70 7 563 
71 10 573 
72 10 583 
73 12 595 
74 11 606 
75 11 617 
76 10 627 
77 12 639 
78 12 651 
79 11 662 
80 6 668 
81 9 677 
82 9 686 
83 11 697 
84 10 707 
85 10 717 
86 9 726 
87 11 737 
88 11 748 
89 10 758 
90 6 764 
91 9 773 
92 9 782 
93 11 793 
94 10 803 
95 10 813 
96 9 822 
97 11 833 
98 11 844 
99 10 854 
100 10 864 
101 16 880 
102 16 896 
103 18 914 
104 17 931 
105 17 948 
106 16 964 
107 18 982 
108 18 1000 
109 17 1017 
110 16 1033 
111 19 1052 
112 19 1071 
113 21 1092 
114 20 1112 
115 20 1132 
116 19 1151 
117 21 1172 
118 21 1193 
119 20 1213 
120 19 1232 
121 22 1254 
122 22 1276 
123 24 1300 
124 23 1323 
125 23 1346 
126 22 1368 
127 24 1392 
128 24 1416 
129 23 1439 
130 19 1458 
131 22 1480 
132 22 1502 
133 24 1526 
134 23 1549 
135 23 1572 
136 22 1594 
137 24 1618 
138 24 1642 
139 23 1665 
140 18 1683 
141 21 1704 
142 21 1725 
143 23 1748 
144 22 1770 
145 22 1792 
146 21 1813 
147 23 1836 
148 23 1859 
149 22 1881 
150 18 1899 
151 21 1920 
152 21 1941 
153 23 1964 
154 22 1986 
155 22 2008 
156 21 2029 
157 23 2052 
158 23 2075 
159 22 2097 
160 18 2115 
161 21 2136 
162 21 2157 
163 23 2180 
164 22 2202 
165 22 2224 
166 21 2245 
167 23 2268 
168 23 2291 
169 22 2313 
170 20 2333 
171 23 2356 
172 23 2379 
173 25 2404 
174 24 2428 
175 24 2452 
176 23 2475 
177 25 2500 
178 25 2525 
179 24 2549 
180 19 2568 
181 22 2590 
182 22 2612 
183 24 2636 
184 23 2659 
185 23 2682 
186 22 2704 
187 24 2728 
188 24 2752 
189 23 2775 
190 19 2794 
191 22 2816 
192 22 2838 
193 24 2862 
194 23 2885 
195 23 2908 
196 22 2930 
197 24 2954 
198 24 2978 
199 23 3001 
200 10 3011 
201 16 3027 
202 16 3043 
203 18 3061 
204 17 3078 
205 17 3095 
206 16 3111 
207 18 3129 
208 18 3147 
209 17 3164 
210 16 3180 
211 19 3199 
212 19 3218 
213 21 3239 
214 20 3259 
215 20 3279 
216 19 3298 
217 21 3319 
218 21 3340 
219 20 3360 
220 19 3379 
221 22 3401 
222 22 3423 
223 24 3447 
224 23 3470 
225 23 3493 
226 22 3515 
227 24 3539 
228 24 3563 
229 23 3586 
230 19 3605 
231 22 3627 
232 22 3649 
233 24 3673 
234 23 3696 
235 23 3719 
236 22 3741 
237 24 3765 
238 24 3789 
239 23 3812 
240 18 3830 
241 21 3851 
242 21 3872 
243 23 3895 
244 22 3917 
245 22 3939 
246 21 3960 
247 23 3983 
248 23 4006 
249 22 4028 
250 18 4046 
251 21 4067 
252 21 4088 
253 23 4111 
254 22 4133 
255 22 4155 
256 21 4176 
257 23 4199 
258 23 4222 
259 22 4244 
260 18 4262 
261 21 4283 
262 21 4304 
263 23 4327 
264 22 4349 
265 22 4371 
266 21 4392 
267 23 4415 
268 23 4438 
269 22 4460 
270 20 4480 
271 23 4503 
272 23 4526 
273 25 4551 
274 24 4575 
275 24 4599 
276 23 4622 
277 25 4647 
278 25 4672 
279 24 4696 
280 19 4715 
281 22 4737 
282 22 4759 
283 24 4783 
284 23 4806 
285 23 4829 
286 22 4851 
287 24 4875 
288 24 4899 
289 23 4922 
290 19 4941 
291 22 4963 
292 22 4985 
293 24 5009 
294 23 5032 
295 23 5055 
296 22 5077 
297 24 5101 
298 24 5125 
299 23 5148 
300 12 5160 
301 18 5178 
302 18 5196 
303 20 5216 
304 19 5235 
305 19 5254 
306 18 5272 
307 20 5292 
308 20 5312 
309 19 5331 
310 18 5349 
311 21 5370 
312 21 5391 
313 23 5414 
314 22 5436 
315 22 5458 
316 21 5479 
317 23 5502 
318 23 5525 
319 22 5547 
320 21 5568 
321 24 5592 
322 24 5616 
323 26 5642 
324 25 5667 
325 25 5692 
326 24 5716 
327 26 5742 
328 26 5768 
329 25 5793 
330 21 5814 
331 24 5838 
332 24 5862 
333 26 5888 
334 25 5913 
335 25 5938 
336 24 5962 
337 26 5988 
338 26 6014 
339 25 6039 
340 20 6059 
341 23 6082 
342 23 6105 
343 25 6130 
344 24 6154 
345 24 6178 
346 23 6201 
347 25 6226 
348 25 6251 
349 24 6275 
350 20 6295 
351 23 6318 
352 23 6341 
353 25 6366 
354 24 6390 
355 24 6414 
356 23 6437 
357 25 6462 
358 25 6487 
359 24 6511 
360 20 6531 
361 23 6554 
362 23 6577 
363 25 6602 
364 24 6626 
365 24 6650 
366 23 6673 
367 25 6698 
368 25 6723 
369 24 6747 
370 22 6769 
371 25 6794 
372 25 6819 
373 27 6846 
374 26 6872 
375 26 6898 
376 25 6923 
377 27 6950 
378 27 6977 
379 26 7003 
380 21 7024 
381 24 7048 
382 24 7072 
383 26 7098 
384 25 7123 
385 25 7148 
386 24 7172 
387 26 7198 
388 26 7224 
389 25 7249 
390 21 7270 
391 24 7294 
392 24 7318 
393 26 7344 
394 25 7369 
395 25 7394 
396 24 7418 
397 26 7444 
398 26 7470 
399 25 7495 
400 11 7506 
401 17 7523 
402 17 7540 
403 19 7559 
404 18 7577 
405 18 7595 
406 17 7612 
407 19 7631 
408 19 7650 
409 18 7668 
410 17 7685 
411 20 7705 
412 20 7725 
413 22 7747 
414 21 7768 
415 21 7789 
416 20 7809 
417 22 7831 
418 22 7853 
419 21 7874 
420 20 7894 
421 23 7917 
422 23 7940 
423 25 7965 
424 24 7989 
425 24 8013 
426 23 8036 
427 25 8061 
428 25 8086 
429 24 8110 
430 20 8130 
431 23 8153 
432 23 8176 
433 25 8201 
434 24 8225 
435 24 8249 
436 23 8272 
437 25 8297 
438 25 8322 
439 24 8346 
440 19 8365 
441 22 8387 
442 22 8409 
443 24 8433 
444 23 8456 
445 23 8479 
446 22 8501 
447 24 8525 
448 24 8549 
449 23 8572 
450 19 8591 
451 22 8613 
452 22 8635 
453 24 8659 
454 23 8682 
455 23 8705 
456 22 8727 
457 24 8751 
458 24 8775 
459 23 8798 
460 19 8817 
461 22 8839 
462 22 8861 
463 24 8885 
464 23 8908 
465 23 8931 
466 22 8953 
467 24 8977 
468 24 9001 
469 23 9024 
470 21 9045 
471 24 9069 
472 24 9093 
473 26 9119 
474 25 9144 
475 25 9169 
476 24 9193 
477 26 9219 
478 26 9245 
479 25 9270 
480 20 9290 
481 23 9313 
482 23 9336 
483 25 9361 
484 24 9385 
485 24 9409 
486 23 9432 
487 25 9457 
488 25 9482 
489 24 9506 
490 20 9526 
491 23 9549 
492 23 9572 
493 25 9597 
494 24 9621 
495 24 9645 
496 23 9668 
497 25 9693 
498 25 9718 
499 24 9742 
500 11 9753 
501 17 9770 
502 17 9787 
503 19 9806 
504 18 9824 
505 18 9842 
506 17 9859 
507 19 9878 
508 19 9897 
509 18 9915 
510 17 9932 
511 20 9952 
512 20 9972 
513 22 9994 
514 21 10015 
515 21 10036 
516 20 10056 
517 22 10078 
518 22 10100 
519 21 10121 
520 20 10141 
521 23 10164 
522 23 10187 
523 25 10212 
524 24 10236 
525 24 10260 
526 23 10283 
527 25 10308 
528 25 10333 
529 24 10357 
530 20 10377 
531 23 10400 
532 23 10423 
533 25 10448 
534 24 10472 
535 24 10496 
536 23 10519 
537 25 10544 
538 25 10569 
539 24 10593 
540 19 10612 
541 22 10634 
542 22 10656 
543 24 10680 
544 23 10703 
545 23 10726 
546 22 10748 
547 24 10772 
548 24 10796 
549 23 10819 
550 19 10838 
551 22 10860 
552 22 10882 
553 24 10906 
554 23 10929 
555 23 10952 
556 22 10974 
557 24 10998 
558 24 11022 
559 23 11045 
560 19 11064 
561 22 11086 
562 22 11108 
563 24 11132 
564 23 11155 
565 23 11178 
566 22 11200 
567 24 11224 
568 24 11248 
569 23 11271 
570 21 11292 
571 24 11316 
572 24 11340 
573 26 11366 
574 25 11391 
575 25 11416 
576 24 11440 
577 26 11466 
578 26 11492 
579 25 11517 
580 20 11537 
581 23 11560 
582 23 11583 
583 25 11608 
584 24 11632 
585 24 11656 
586 23 11679 
587 25 11704 
588 25 11729 
589 24 11753 
590 20 11773 
591 23 11796 
592 23 11819 
593 25 11844 
594 24 11868 
595 24 11892 
596 23 11915 
597 25 11940 
598 25 11965 
599 24 11989 
600 10 11999 
601 16 12015 
602 16 12031 
603 18 12049 
604 17 12066 
605 17 12083 
606 16 12099 
607 18 12117 
608 18 12135 
609 17 12152 
610 16 12168 
611 19 12187 
612 19 12206 
613 21 12227 
614 20 12247 
615 20 12267 
616 19 12286 
617 21 12307 
618 21 12328 
619 20 12348 
620 19 12367 
621 22 12389 
622 22 12411 
623 24 12435 
624 23 12458 
625 23 12481 
626 22 12503 
627 24 12527 
628 24 12551 
629 23 12574 
630 19 12593 
631 22 12615 
632 22 12637 
633 24 12661 
634 23 12684 
635 23 12707 
636 22 12729 
637 24 12753 
638 24 12777 
639 23 12800 
640 18 12818 
641 21 12839 
642 21 12860 
643 23 12883 
644 22 12905 
645 22 12927 
646 21 12948 
647 23 12971 
648 23 12994 
649 22 13016 
650 18 13034 
651 21 13055 
652 21 13076 
653 23 13099 
654 22 13121 
655 22 13143 
656 21 13164 
657 23 13187 

659 22 13232 
660 18 13250 
661 21 13271 
662 21 13292 
663 23 13315 
664 22 13337 
665 22 13359 
666 21 13380 
667 23 13403 
668 23 13426 
669 22 13448 
670 20 13468 
671 23 13491 
672 23 13514 
673 25 13539 
674 24 13563 
675 24 13587 
676 23 13610 
677 25 13635 
678 25 13660 
679 24 13684 
680 19 13703 
681 22 13725 
682 22 13747 
683 24 13771 
684 23 13794 
685 23 13817 
686 22 13839 
687 24 13863 
688 24 13887 
689 23 13910 
690 19 13929 
691 22 13951 
692 22 13973 
693 24 13997 
694 23 14020 
695 23 14043 
696 22 14065 
697 24 14089 
698 24 14113 
699 23 14136 
700 12 14148 
701 18 14166 
702 18 14184 
703 20 14204 
704 19 14223 
705 19 14242 
706 18 14260 
707 20 14280 
708 20 14300 
709 19 14319 
710 18 14337 
711 21 14358 
712 21 14379 
713 23 14402 
714 22 14424 
715 22 14446 
716 21 14467 
717 23 14490 
718 23 14513 
719 22 14535 
720 21 14556 
721 24 14580 
722 24 14604 
723 26 14630 
724 25 14655 
725 25 14680 
726 24 14704 
727 26 14730 
728 26 14756 
729 25 14781 
730 21 14802 
731 24 14826 
732 24 14850 
733 26 14876 
734 25 14901 
735 25 14926 
736 24 14950 
737 26 14976 
738 26 15002 
739 25 15027 
740 20 15047 
741 23 15070 
742 23 15093 
743 25 15118 
744 24 15142 
745 24 15166 
746 23 15189 
747 25 15214 
748 25 15239 
749 24 15263 
750 20 15283 
751 23 15306 
752 23 15329 
753 25 15354 
754 24 15378 
755 24 15402 
756 23 15425 
757 25 15450 
758 25 15475 
759 24 15499 
760 20 15519 
761 23 15542 
762 23 15565 
763 25 15590 
764 24 15614 
765 24 15638 
766 23 15661 
767 25 15686 
768 25 15711 
769 24 15735 
770 22 15757 
771 25 15782 
772 25 15807 
773 27 15834 
774 26 15860 
775 26 15886 
776 25 15911 
777 27 15938 
778 27 15965 
779 26 15991 
780 21 16012 
781 24 16036 
782 24 16060 
783 26 16086 
784 25 16111 
785 25 16136 
786 24 16160 
787 26 16186 
788 26 16212 
789 25 16237 
790 21 16258 
791 24 16282 
792 24 16306 
793 26 16332 
794 25 16357 
795 25 16382 
796 24 16406 
797 26 16432 
798 26 16458 
799 25 16483 
800 12 16495 
801 18 16513 
802 18 16531 
803 20 16551 
804 19 16570 
805 19 16589 
806 18 16607 
807 20 16627 
808 20 16647 
809 19 16666 
810 18 16684 
811 21 16705 
812 21 16726 
813 23 16749 
814 22 16771 
815 22 16793 
816 21 16814 
817 23 16837 
818 23 16860 
819 22 16882 
820 21 16903 
821 24 16927 
822 24 16951 
823 26 16977 
824 25 17002 
825 25 17027 
826 24 17051 
827 26 17077 
828 26 17103 
829 25 17128 
830 21 17149 
831 24 17173 
832 24 17197 
833 26 17223 
834 25 17248 
835 25 17273 
836 24 17297 
837 26 17323 
838 26 17349 
839 25 17374 
840 20 17394 
841 23 17417 
842 23 17440 
843 25 17465 
844 24 17489 
845 24 17513 
846 23 17536 
847 25 17561 
848 25 17586 
849 24 17610 
850 20 17630 
851 23 17653 
852 23 17676 
853 25 17701 
854 24 17725 
855 24 17749 
856 23 17772 
857 25 17797 
858 25 17822 
859 24 17846 
860 20 17866 
861 23 17889 
862 23 17912 
863 25 17937 
864 24 17961 
865 24 17985 
866 23 18008 
867 25 18033 
868 25 18058 
869 24 18082 
870 22 18104 
871 25 18129 
872 25 18154 
873 27 18181 
874 26 18207 
875 26 18233 
876 25 18258 
877 27 18285 
878 27 18312 
879 26 18338 
880 21 18359 
881 24 18383 
882 24 18407 
883 26 18433 
884 25 18458 
885 25 18483 
886 24 18507 
887 26 18533 
888 26 18559 
889 25 18584 
890 21 18605 
891 24 18629 
892 24 18653 
893 26 18679 
894 25 18704 
895 25 18729 
896 24 18753 
897 26 18779 
898 26 18805 
899 25 18830 
900 11 18841 
901 17 18858 
902 17 18875 
903 19 18894 
904 18 18912 
905 18 18930 
906 17 18947 
907 19 18966 
908 19 18985 
909 18 19003 
910 17 19020 
911 20 19040 
912 20 19060 
913 22 19082 
914 21 19103 
915 21 19124 
916 20 19144 
917 22 19166 
918 22 19188 
919 21 19209 
920 20 19229 
921 23 19252 
922 23 19275 
923 25 19300 
924 24 19324 
925 24 19348 
926 23 19371 
927 25 19396 
928 25 19421 
929 24 19445 
930 20 19465 
931 23 19488 
932 23 19511 
933 25 19536 
934 24 19560 
935 24 19584 
936 23 19607 
937 25 19632 
938 25 19657 
939 24 19681 
940 19 19700 
941 22 19722 
942 22 19744 
943 24 19768 
944 23 19791 
945 23 19814 
946 22 19836 
947 24 19860 
948 24 19884 
949 23 19907 
950 19 19926 
951 22 19948 
952 22 19970 
953 24 19994 
954 23 20017 
955 23 20040 
956 22 20062 
957 24 20086 
958 24 20110 
959 23 20133 
960 19 20152 
961 22 20174 
962 22 20196 
963 24 20220 
964 23 20243 
965 23 20266 
966 22 20288 
967 24 20312 
968 24 20336 
969 23 20359 
970 21 20380 
971 24 20404 
972 24 20428 
973 26 20454 
974 25 20479 
975 25 20504 
976 24 20528 
977 26 20554 
978 26 20580 
979 25 20605 
980 20 20625 
981 23 20648 
982 23 20671 
983 25 20696 
984 24 20720 
985 24 20744 
986 23 20767 
987 25 20792 
988 25 20817 
989 24 20841 
990 20 20861 
991 23 20884 
992 23 20907 
993 25 20932 
994 24 20956 
995 24 20980 
996 23 21003 
997 25 21028 
998 25 21053 
999 24 21077 
1000 11 21088 

我看過的每個潛在問題檢查都沒有問題。也許更有經驗的眼睛可以發現我做錯了什麼。真正的解決方案是21124,這意味着我在某個地方失去了36。

+0

哦。我忘了十幾歲。 – 2013-02-21 10:02:46

回答

0

忘記正確計算百和十幾歲,我只需要更換:

else: 
     tempSum = wordRef[int(i/100) * 100] + wordRef[int((i % 100)/10) * 10] + wordRef[i % 10] + 3 
     wordSum += tempSum 

有:

else: 
    wordSum += wordRef[int(i/100) * 100] + 3 
    if i % 100 < 20: 
     wordSum += wordRef[i % 100] 
    else: 
     wordSum += wordRef[int((i % 100)/10) * 10] + wordRef[i % 10] 

在替換的代碼,我省略了考驗,因爲它是不再需要。