MATL , 15 ไบต์
X>ttq*QwoEqGd*+
ลองออนไลน์!
รวบรวมและพิมพ์เป็นเมทริกซ์
อย่างไร?
แก้ไข: เทคนิคเดียวกับคำตอบของ @ Doorknob เพิ่งมาถึงที่แตกต่างกัน
แตกต่างระหว่างองค์ประกอบเส้นทแยงมุมของเกลียวเป็นลำดับเลขคณิต\ ผลรวมของเงื่อนไขของนี่คือ (ตามสูตร AP ปกติ) ผลรวมนี้เพิ่มขึ้นโดยที่ 1 ให้องค์ประกอบในแนวทแยงที่ตำแหน่งN)n0 , 2 , 4 , 6 , 8 , ...n( n , n )n ( n - 1 )( n , n )
เมื่อพิจารณาจากเราจะหาค่าสูงสุดของทั้งสองนี้ซึ่งก็คือ "เลเยอร์" ของเกลียวที่จุดนี้เป็นของ จากนั้นเราจะหาค่าเส้นทแยงมุมของชั้นที่เป็น1 แม้ชั้นมูลค่าที่เป็นแล้วสำหรับชั้นคี่Yv = n ( n - 1 ) + 1 ( x , y ) v + x - y v - x + y( x , y)v = n ( n - 1 ) + 1( x , y)v + x - yv - x + y
X> % Get the maximum of the input coordinates, say n
ttq* % Duplicate that and multiply by n-1
Q % Add 1 to that. This is the diagonal value v at layer n
wo % Bring the original n on top and check if it's odd (1 or 0)
Eq % Change 1 or 0 to 1 or -1
Gd % Push input (x, y) again, get y - x
* % Multiply by 1 or -1
% For odd layers, no change. For even layers, y-x becomes x-y
+ % Add that to the diagonal value v
% Implicit output
โซลูชันสำรอง 21 ไบต์:
Pdt|Gs+ttqq*4/QJb^b*+
ลองออนไลน์!
รวบรวมและพิมพ์เป็นเมทริกซ์
จากด้านบนเรารู้ว่าฟังก์ชันที่เราต้องการคือ
ฉ= m ∗ ( m - 1 ) + 1 + ( - 1 )ม.∗ ( x - y)
ที่y)m = m a x ( x , y)
การคำนวณพื้นฐานบางอย่างจะแสดงว่านิพจน์เดียวสำหรับจำนวนสูงสุดสองหมายเลขคือ
m = m a x ( x , y) = x + y+ a b s ( x - y)2
เสียบเข้าที่อื่นเราพบว่ารูปแบบอื่นสำหรับคือ:ฉ
ฉ= ( x - y) ⋅ ฉันk+ 14( ( k - 2 ) ⋅ k ) + 1
ที่Yk = a b s ( x - y) + x + y
นี่คือฟังก์ชันที่โซลูชันดำเนินการ