Monday Mini-Golf:คำถามสั้น ๆ เกี่ยวกับกอล์ฟที่โพสต์ (หวังว่า!) ทุกวันจันทร์
(ขออภัยฉันมาสายอีกครั้งฉันออกจากคอมพิวเตอร์โดยพื้นฐานแล้วเมื่อวานและวันนี้)
โปรแกรมเมอร์ของเรา (โดยเฉพาะผู้เล่นโค๊ด) แน่ใจได้ว่าชอบลำดับเลขจำนวนเต็มโดยพลการ เรายังมีไซต์ทั้งหมดที่อุทิศให้กับลำดับเหล่านี้ที่ปัจจุบันมีประมาณ 200,000 รายการ ในความท้าทายนี้เราจะดำเนินการตามลำดับเหล่านี้อีกชุด
ท้าทาย
ความท้าทายของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในจำนวนเต็มNและแสดงลำดับของฐาน 10 จำนวนเต็มโดยแต่ละจำนวนถัดไปจะถูกกำหนดด้วยวิธีนี้:
- เริ่มต้นที่ 1
สำหรับแต่ละหลักDในการแสดงฐาน 10 ของจำนวนเต็มก่อนหน้า:
- ถ้าDเป็น 0 ให้เพิ่มหนึ่งเข้าไปในจำนวนเต็มปัจจุบัน
- มิฉะนั้นคูณจำนวนเต็มในปัจจุบันโดยD
รายละเอียด
- คุณอาจจะคิดว่า 0 < N <2 วันที่ 31
- คุณต้องส่งออกจำนวนเต็มแต่ละค่าในลำดับเริ่มต้นด้วยหมายเลขอินพุตจนกว่าจะถึงจำนวนที่น้อยกว่า 10
- ผลลัพธ์อาจเป็นอาร์เรย์หรือสตริงที่คั่นด้วยช่องว่างเครื่องหมายจุลภาคการขึ้นบรรทัดใหม่หรือการรวมกันของเหล่านี้
- อนุญาตให้เว้นวรรคต่อท้ายและ / หรือขึ้นบรรทัดใหม่ แต่ไม่ใช่เครื่องหมายจุลภาคต่อท้าย
- ไม่ควรมีศูนย์นำหน้า
ตัวอย่าง
ตัวอย่างที่ 1: 77
ตัวอย่างนี้ค่อนข้างตรงไปตรงมา:
77 = 1*7*7 = 49
49 = 1*4*9 = 36
36 = 1*3*6 = 18
18 = 1*1*8 = 8
77 49 36 18 8
ดังนั้นการส่งออกที่เหมาะสมคือ
ตัวอย่างที่ 2: 90
ที่นี่เรามี:
90 = 1*9+1 = 10
10 = 1*1+1 = 2
90 10 2
ดังนั้นการส่งออกจะเป็น
ตัวอย่างที่ 3: 806
อ่านสมการจากซ้ายไปขวา:
806 = 1*8+1*6 = 54 (((1*8)+1)*6)
54 = 1*5*4 = 20
20 = 1*2+1 = 3
806 54 20 3
เอาท์พุทควรจะเป็น
การทดสอบกรณี
หมายเลขแรกในแต่ละบรรทัดคืออินพุตและบรรทัดเต็มคือเอาต์พุตที่คาดไว้
77 49 36 18 8
90 10 2
249 72 14 4
806 54 20 3
1337 63 18 8
9999 6561 180 9
10000 5
8675309 45369 3240 25 10 2
9999999 4782969 217728 1568 240 9
1234567890 362881 2304 28 16 6
นี่คือจำนวนเต็มถัดไปที่เหมาะสมจาก 10 ถึง 100:
Current | Next
--------+-----
10 | 2
11 | 1
12 | 2
13 | 3
14 | 4
15 | 5
16 | 6
17 | 7
18 | 8
19 | 9
20 | 3
21 | 2
22 | 4
23 | 6
24 | 8
25 | 10
26 | 12
27 | 14
28 | 16
29 | 18
30 | 4
31 | 3
32 | 6
33 | 9
34 | 12
35 | 15
36 | 18
37 | 21
38 | 24
39 | 27
40 | 5
41 | 4
42 | 8
43 | 12
44 | 16
45 | 20
46 | 24
47 | 28
48 | 32
49 | 36
50 | 6
51 | 5
52 | 10
53 | 15
54 | 20
55 | 25
56 | 30
57 | 35
58 | 40
59 | 45
60 | 7
61 | 6
62 | 12
63 | 18
64 | 24
65 | 30
66 | 36
67 | 42
68 | 48
69 | 54
70 | 8
71 | 7
72 | 14
73 | 21
74 | 28
75 | 35
76 | 42
77 | 49
78 | 56
79 | 63
80 | 9
81 | 8
82 | 16
83 | 24
84 | 32
85 | 40
86 | 48
87 | 56
88 | 64
89 | 72
90 | 10
91 | 9
92 | 18
93 | 27
94 | 36
95 | 45
96 | 54
97 | 63
98 | 72
99 | 81
100 | 3
คุณสามารถค้นหารายชื่อนี้ได้ขยายไป 10000 ที่นี่
เกณฑ์การให้คะแนน
นี่คือรหัส - กอล์ฟดังนั้นรหัสที่ถูกต้องสั้นที่สุดในหน่วยไบต์ชนะ Tiebreaker ไปที่การส่งที่ถึงจำนวนไบต์สุดท้ายก่อน ผู้ชนะจะได้รับการคัดเลือกในวันจันทร์ที่ 19 ต.ค. โชคดี!
แก้ไข:ขอแสดงความยินดีกับผู้ชนะของคุณ@isaacgโดยใช้Pythอีกครั้งเป็นเวลา14 ไบต์ !
|*GHhG
?H*GHhG
ประหยัดกว่าไบต์