ขอบคุณมากสำหรับ Leaky Nun สำหรับคำแนะนำมากมายของเขา ยินดีต้อนรับคำแนะนำการเล่นกอล์ฟ ลองออนไลน์!
;)R♀ⁿ♀%0@íu
วิธีดั้งเดิมขนาด 12 ไบต์ ลองออนไลน์!
1WX│1╖╜ⁿ%WX╜
อีก 12 ไบต์ ลองออนไลน์!
w┬i)♀/♂K@♀ⁿπ
วิธีการ 13 ไบต์ ลองออนไลน์!
k╗2`╜iaⁿ%Y`╓N
Ungolfing:
ขั้นตอนวิธีแรก
Implicitly pushes y, then x.
; Duplicate x.
) Rotate duplicate x to bottom of the stack.
R Range [1, x] (inclusive).
♀ⁿ Map a**y over the range.
♀% Map a**y%x over the range.
0@í new_list.index(0)
u Increment and print implicitly at the end of the program.
อัลกอริทึมดั้งเดิม
Implicitly pushes x, then y.
1WX Pushes a truthy value to be immediately discarded
(in future loops, we discard a**y%x)
| Duplicates entire stack.
Stack: [y x y x]
1╖ Increment register 0.
╜ Push register 0. Call it a.
ⁿ Take a to the y-th power.
% Take a**y mod x.
W If a**y%x == 0, end loop.
X Discard the modulus.
╜ Push register 0 as output.
อัลกอริทึมที่สาม
Implicitly pushes y, then x.
w Pushes the full prime factorization of x.
┬ Transposes the factorization (separating primes from exponents)
i Flatten (into two separate lists of primes and exponents).
) Rotate primes to the bottom of the stack.
♀/ Map divide over the exponents.
♂K Map ceil() over all of the divided exponents.
@ Swap primes and modified exponents.
♀ⁿ Map each prime ** each exponent.
π Product of that list. Print implicitly at the end of the program.
อัลกอริทึมที่สี่
Implicitly pushes x, then y.
k╗ Turns stack [x y] into a list [x, y] and saves to register 0.
2 Pushes 2.
` Starts function with a.
╜i Pushes register 0 and flattens. Stack: [x y a]
a Inverts the stack. Stack: [a y x]
ⁿ% Gets a**y%x.
Y Logical negate (if a**y is divisible by x, then 1, else 0)
` End function.
╓ Push first (2) values where f(x) is truthy, starting with f(0).
N As f(0) is always truthy, get the second value.
Print implicitly at the end of the program.