บทนำ
ฉันสะดุดรูปแบบนี้ (ไร้ประโยชน์) เมื่อวันก่อนขณะดูทีวี ฉันตั้งชื่อมันว่า "รูปแบบ 9" เพราะหมายเลขแรกที่ใช้คือ 9 ส่วนสำคัญของมันคือคุณป้อนตัวเลข (สมมุติว่าx ) แล้วคุณจะได้รับกลับมา:
- x
- x + ( x / 3) [ลองเรียกนี่ว่าy ]
- สองในสามของy [เรียกมันว่าz ]
- z + 1
ดังนั้นถ้าผมใส่ในรูปแบบนี้จำนวน9เป็นxนี้เป็นสิ่งที่จะออกมา:
- 9 ( 9 )
- 12 ( 9 + 9/3 ) [9 ส่วน 3 คือ 3 และ 9 + 3 คือ 12]
- 8 ( 12ครั้งสองในสาม) [หนึ่งในสามของ 12 คือ 4 และ 4 * 2 คือ 8]
- 9 ( 8 + 1 คือ 9)
ท้าทาย
เขียนฟังก์ชั่น (ในภาษาการเขียนโปรแกรมใด ๆ ) ที่ใช้เป็นตัวเลขและส่งออกอาร์เรย์จำนวนเต็มโดยใช้รูปแบบ
ค่อนข้างเหมือนรหัส psuedo นี้:
function ninePattern(int myInt) returns IntegerArray {
int iterationA = myInt + (myInt / 3);
int iterationB = iterationA * (2 / 3);
int iterationC = iterationB + 1;
IntegerArray x = [myInt, iterationA, iterationB, iterationC];
return x;
}
ชี้แจง
การสนทนาได้รับการปลุกเร้าในความคิดเห็นเกี่ยวกับข้อกำหนดของคำถาม ส่วนนี้มีไว้เพื่อชี้แจงบางส่วน
"ดีกว่าที่จะนับเป็นไบต์มากกว่าตัวอักษร"
ฉันเลือกตัวละครเพราะ (สำหรับฉันอย่างน้อย) มันจะง่ายกว่าที่จะตัดสิน แน่นอนฉันไม่สามารถเปลี่ยนแปลงได้ในตอนนี้ (มีคำตอบมากมายถูกโพสต์แล้ว)
"การปัดเศษ"
การปัดเศษเป็นไปตามสัมผัสนี้:
ถ้ามันเป็น 5 หรือมากกว่ายกคะแนน
ถ้ามันเป็น 4 หรือน้อยกว่าปล่อยให้มันพักผ่อน
เพียงแค่ใส่ถ้ามันเป็นเช่น 4.7 หรือ 3.85 ให้ปัดมันเป็น 5 และ 4 ตามลำดับ
ตัวอย่าง
Input => Result
9 => [9, 12, 8, 9]
8 => [8, 11, 7, 8]
6 => [6, 8, 5, 6]
23 => [23, 31, 21, 22]
159 => [159, 212, 141, 142]
อย่างไรก็ตามหากตัวเลขนั้นเป็น 2.3 หรือ 10.435446 ให้ปัดเศษเป็น 2 และ 10 ตามลำดับ
"รองรับภาษา"
คุณมีอิสระที่จะไม่ใช้ฟังก์ชั่นและ / หรืออาร์เรย์ถ้าและเฉพาะในกรณีที่ภาษาที่คุณเลือกไม่รองรับ ถ้ามันไม่ (แม้ว่ามันจะเพิ่มขึ้นนับตัวอักษรของคุณ) คุณต้องใช้พวกเขา