การป้อนข้อมูล:
รายการจำนวนเต็ม (ซึ่งจะไม่มีวันเป็นศูนย์)
เอาท์พุท:
รายการขนาดเดียวกันที่มีจำนวนขึ้นอยู่กับสิ่งต่อไปนี้:
- หากรายการปัจจุบันเป็นลบ: ดูรายการทั้งหมดก่อนรายการนี้และนับจำนวนหลักที่เกิดขึ้นในตัวเลขอื่น ๆ
- หากรายการปัจจุบันเป็นบวกแทน: ดูรายการทั้งหมดหลังรายการนี้และนับจำนวนหลักที่เกิดขึ้นในตัวเลขอื่น ๆ
มีการบิดหนึ่งครั้ง: หากขนาดของรายการเป็นจำนวนคู่เราจะนับทุก ๆ หมายเลขเพียงครั้งเดียว (แม้ว่าจะตรงกับตัวเลขหลายหลัก) และถ้าขนาดเป็นเลขคี่เราจะนับจำนวนตัวเลขทุกหลักสำหรับรายการปัจจุบันแต่ละรายการ (ซ้ำกัน ตัวเลขจะถูกนับหลายครั้ง)
ลองยกตัวอย่างเพื่ออธิบายให้ฟังหน่อย:
ตัวอย่างที่มีรายการคู่:
Input: [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2, 4, 1, 2, 1, 1, 5 ]
ขนาดของรายการเป็นเลขคู่ดังนั้นเราจะนับเฉพาะตัวเลขแต่ละครั้งเท่านั้น
4
มันเป็นแง่บวกดังนั้นเราจึงตั้งตารอ มีสามตัวเลขที่มีหลักมี4
(42
,-942
,8374
)3
ดังนั้นเราจึงเริ่มต้นด้วย10
มันเป็นแง่บวกดังนั้นเราจึงตั้งตารอ มีตัวเลขสองตัวที่มีทั้งตัวเลข1
และ / หรือ0
(-10
,-200
)2
ดังนั้นการส่งออกที่สองคือ42
: เป็นบวกอีกครั้งดังนั้นส่งต่อ มีตัวเลขสี่ตัวที่มีทั้งหลักอยู่4
และ / หรือ2
(-942
,8374
,728
,-200
)4
ดังนั้นการส่งออกที่สามคือ-10
: ครั้งนี้มันเป็นเชิงลบดังนั้นเราจึงมองย้อนกลับไป มีเพียงหมายเลขเดียวเท่านั้นที่มีตัวเลข1
และ / หรือ0
(เราไม่สนใจเครื่องหมายลบ) (10
)1
ดังนั้นการส่งออกที่สี่คือ- เป็นต้น
ตัวอย่างที่มีรายการแปลก ๆ :
Input: [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13, 2, 2, 4, 8, 3, 0, 11, 6 ]
ขนาดของรายการนั้นแปลกเราจึงนับทุกหลัก
382
มันเป็นแง่บวกดังนั้นเราจึงตั้งตารอ มีหนึ่ง3
ในตัวเลขอื่น ๆ (381
), หก8
ในตัวเลขอื่น ๆ (-82, -8, 381, 228, 28, -28
) และหก2
ในตัวเลขอื่น ๆ (-82, 228, 28, -28, 2
)13
ดังนั้นเราจึงเริ่มต้นด้วย-82
: มันเป็นเชิงลบดังนั้นถอยหลัง มีหนึ่ง3
ในจำนวนอื่น (382
) และหนึ่ง8
ในจำนวนอื่น (382
)2
ดังนั้นการส่งออกที่สองคือ- ...
228
: มันเป็นไปในทางบวก มีสาม2
's ในตัวเลขอื่น ๆ (28
,-28
,-2
) และอีกสาม2
' s และสอง8
's ในตัวเลขอื่น ๆ (28
,-28
)8
ดังนั้นการแสดงผลนี้คือ- เป็นต้น
กฏท้าทาย:
- คุณสามารถสมมติว่าการป้อนข้อมูลจะไม่มี
0
ในรายการเนื่องจากไม่มีทั้งบวกและลบ - คุณสามารถสมมติว่า input-list จะมีอย่างน้อยสองรายการ
- I / O ยืดหยุ่นได้ อินพุต / เอาท์พุตสามารถเป็นอาร์เรย์ / รายการจำนวนเต็มสตริงที่คั่นด้วยตัวเลข / เมทริกซ์อักขระ ฯลฯ
- หากหมายเลขแรกในรายการเป็นจำนวนลบหรือหมายเลขสุดท้ายในรายการเป็นจำนวนบวกจะเป็น 0 ในรายการผลลัพธ์
- ด้วยรายการคี่ตัวเลขที่มีตัวเลขหลักเดียวกันหลายครั้งจะถูกนับหลายครั้งเช่น
228
ในตัวอย่างคี่ข้างต้นส่งผลให้8
(3 + 3 + 2) แทน5
(3 + 2)
กฎทั่วไป:
- นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ
อย่าปล่อยให้ภาษารหัสกอล์ฟกีดกันคุณจากการโพสต์คำตอบด้วยภาษาที่ไม่ได้เข้ารหัส พยายามหาคำตอบสั้น ๆ ที่เป็นไปได้สำหรับภาษาโปรแกรม 'ใด ๆ ' - กฎมาตรฐานจะใช้สำหรับคำตอบของคุณดังนั้นคุณจึงได้รับอนุญาตให้ใช้ STDIN / STDOUT ฟังก์ชัน / เมธอดพร้อมพารามิเตอร์ที่เหมาะสมและชนิดผลตอบแทนโปรแกรมเต็มรูปแบบ การโทรของคุณ
- ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม
- หากเป็นไปได้โปรดเพิ่มลิงค์พร้อมทดสอบรหัสของคุณ
- นอกจากนี้โปรดเพิ่มคำอธิบายหากจำเป็น
กรณีทดสอบ:
Input: [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2, 4, 1, 2, 1, 1, 5 ]
Input: [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13, 2, 2, 4, 8, 3, 0, 11, 6 ]
Input: [10, -11, 12, -13, 14, -15, 16, -17, 18, -19]
Output: [9, 1, 7, 3, 5, 5, 3, 7, 1, 9 ]
Input: [10, -11, 12, -13, 14, -15, 16, -17, 18, -19, 20]
Output: [11, 2, 8, 4, 5, 6, 3, 8, 1, 10, 0 ]
Input: [88, 492, -938, 2747, 828, 84710, -29, -90, -37791]
Output: [8, 9, 3, 9, 3, 4, 5, 4, 12 ]
Input: [-1, 11, 11, 1]
Output: [0, 2, 1, 0]
Input: [1, 11, 11, -1]
Output: [3, 2, 1, 3 ]
Input: [-1, 11, 1]
Output: [0, 2, 0]
Input: [1, 11, -1]
Output: [3, 2, 3 ]
δ¢
ไม่เคยเห็น double-vector ใช้ดีคนดี