สมมติว่าฉันอยู่ห่างจากจุดหมายปลายทางของฉันสิบก้าว ฉันเดินไปที่นั่นตามคำพูดเก่า ๆ ว่า "สองก้าวไปข้างหน้าและถอยหลังหนึ่งก้าว" ฉันก้าวไปข้างหน้าสองก้าวย้อนกลับหนึ่งจนกว่าฉันจะยืนอยู่ตรงปลายทางของฉัน (สิ่งนี้อาจเกี่ยวข้องกับการก้าวผ่านปลายทางของฉันและกลับไปที่มัน) ฉันเดินได้กี่ก้าว
แน่นอนว่าฉันอาจอยู่ห่างออกไปไม่ถึง 10 ก้าว ฉันอาจอยู่ห่างออกไป 11 ก้าวหรือ 100 ฉันสามารถวัดได้สิบก้าวและเดินต่อไปเรื่อย ๆ เพื่อแก้ปัญหาหรือ ... ฉันสามารถเขียนรหัส!
- เขียนฟังก์ชั่นเพื่อคำนวณจำนวนขั้นตอนที่ต้องใช้เพื่อให้ได้ N ขั้นตอนตามลำดับ: ไปข้างหน้าสองขั้นตอนและถอยหลังหนึ่งก้าว
- สมมติว่าคุณเริ่มต้นในขั้นตอนที่ 0 นับ "ก้าวไปข้างหน้าสองขั้น" เป็นสองขั้นตอนไม่ใช่หนึ่งขั้น
- สมมติว่าทุกขั้นตอนมีความยาวสม่ำเสมอ
- มันควรกลับจำนวนขั้นตอนแรกเมื่อคุณมาถึงพื้นที่นั้น (ตัวอย่างเช่นขั้นตอน 10 ขั้นตอนใช้เวลา 26 ขั้นตอน แต่คุณจะต้องทำขั้นตอนที่ 30 อีกครั้ง) เราสนใจใน 26
- ใช้ภาษาที่คุณชอบ
- มันควรจะยอมรับจำนวนเต็มบวกใด ๆ ที่เป็นอินพุต สิ่งนี้แสดงถึงขั้นตอนเป้าหมาย
- จำนวนไบต์ที่น้อยที่สุดชนะ
ตัวอย่าง:
ฉันต้องการไป 5 ขั้นตอน:
| | | | | | <- I'm at step 0, not yet on the grid.
| |X| | | | <- I take two steps forward, I'm on step 2: the count is 2
|X| | | | | <- I take one step back, I'm on step 1: the count is 3
| | |X| | | <- I take two steps forward, I'm on step 3: the count is 5
| |X| | | | <- I take one step back, I'm on step 2 again: the count is 6
| | | |X| | <- I take two steps forward, I'm on step 4: the count is 8
| | |X| | | <- I take one step back, I'm on step 3 again: the count is 9
| | | | |X| <- I take two steps forward, I'm on step 5: the count is 11
ในกรณีนี้ผลลัพธ์ของฟังก์ชันจะเป็น 11
ตัวอย่างผลลัพธ์:
1 => 3
5 => 11
9 => 23
10 => 26
11 => 29
100 => 296
1000 => 2996
10000 => 29996
100000 => 299996
ขอให้สนุกนักกอล์ฟ!