ได้รับแรงบันดาลใจจากคำถามนี้ก่อนหน้านี้ในวันนี้ฉันอยากจะเห็นวิธีที่น่าสนใจในภาษาการเขียนโปรแกรมที่หลากหลายสามารถเปลี่ยน numpad ให้เป็นความน่าจะเป็น โดยทั่วไปแล้วเกมที่เป็นแบบไทล์จะช่วยให้คุณสามารถใช้ numpad เพื่อไปในทิศทางใดก็ได้ตามที่ตัวละครของคุณอยู่ในขณะนี้ เมื่อสร้าง AI สำหรับเกมเหล่านี้Math.random() * 8ไม่เพียงพอดังนั้นฉันจึงต้องมีความคิดสร้างสรรค์เล็กน้อยเพื่อให้การเคลื่อนไหวมีลักษณะและความรู้สึกเป็นธรรมชาติ
ตัวเลขถูกกำหนดให้เป็นเช่น:
7 | 8 | 9
- - - - -
4 | x | 6
- - - - -
1 | 2 | 3
โปรดทราบว่า 5 เป็นหมายเลขที่ไม่ถูกต้องเนื่องจากคุณไม่สามารถไปยังตัวคุณเองได้
ตัวอย่างทั้งหมดจะใช้ความน่าจะเป็นเหล่านี้: [50, 40, 30, 20, 10]
ถ้าฉันต้องการสร้างความน่าจะเป็นรอบ ๆ8มันจะมีลักษณะเช่นนี้:
40 | 50 | 40
-- | -- | --
30 | xx | 30
-- | -- | --
20 | 10 | 20
ผลลัพธ์จะเป็น[20, 10, 20, 30, 30, 40, 50, 40](ด้วย 5 เว้น) หรือ[20, 10, 20, 30, null, 30, 40, 50, 40](ด้วย 5 ปัจจุบัน)
ถ้าฉันต้องการสร้างพวกเขารอบ ๆ1มันจะมีลักษณะเช่นนี้:
30 | 20 | 10
-- | -- | --
40 | xx | 20
-- | -- | --
50 | 40 | 30
ผลลัพธ์จะเป็น[50, 40, 30, 40, 20, 30, 20, 10](ด้วย 5 เว้น) หรือ[50, 40, 30, 40, null, 20, 30, 20, 10](ด้วย 5 ปัจจุบัน)
คุณสามารถเขียนโปรแกรมเต็มรูปแบบที่รับอินพุตด้วยวิธีปกติ (บรรทัดคำสั่ง stdin) และพิมพ์ผลลัพธ์หรือคุณอาจเขียนฟังก์ชันด้วยอาร์กิวเมนต์ตัวเลขซึ่งพิมพ์หรือส่งคืนเอาต์พุต โปรแกรมหรือฟังก์ชั่นของคุณควรยอมรับหนึ่งหมายเลข - ตำแหน่งที่จะสร้าง คุณควรใช้ความน่าจะเป็นเหล่านี้: [50, 40, 30, 20, 10](ไม่ต้องฮาร์ดโค้ด)
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ ช่องโหว่มาตรฐานไม่ได้รับอนุญาต คำตอบที่โพสต์ในเธรดที่เชื่อมโยงนั้นไม่ได้รับอนุญาต อนุญาตให้ใช้ช่องว่างต่อท้ายหรือนำหน้า คุณอาจปฏิบัติต่อตำแหน่ง4ไม่อยู่หรือว่างเปล่าขึ้นอยู่กับความชอบของคุณ ฉันไม่จู้จี้จุกจิกกับรูปแบบผลลัพธ์มากนัก - พิมพ์ออกมาเป็นสตริงที่คั่นด้วยเครื่องหมายจุลภาคหรือเป็นอาร์เรย์
(นี่เป็นคำถามแรกของฉันไปได้ง่าย ๆ กับฉัน!)