UiuaでProject Eulerを解いてみよう

Uiua

An array-oriented tacit programming language

引数を気にせずに関数を組みたてる (tacit programmingとかpoint-free style)

Problem 1

A ← /+ × =0 ⊸◿3 ⇡ 1000
B ← /+ × =0 ⊸◿5 ⇡ 1000
C ← /+ × =0 ⊸◿15 ⇡ 1000
- C + A B
/+ keep =0 × ⊸⊃(◿3|◿ 5) ⇡ 1000

Problem 2

G ← ◌⊙(+×=0 ⊸◿ 2)
F ← ⊃(˜⊸+|G)
⍥(F)33 1 1 0

Problem 3

IsPrime ← =2 ⧻ ⊚ =0 ◿ ⊸(+1 ⇡)
Factors ← + 1 ⊚ = 0 ◿ + 1 ⇡⌈ ⊸√
/↥ ▽ ⊸≡IsPrime Factors 600851475143

Problem 4

N ← + 100 ⇡ 900
L ← ♭ ⊞× N N
↙ ¯ 1 ⍆ ▽ ⊸≡(=1 /× =⊸⇌ °⋕) L

Problem 5

≡(□⊟ ⊸⧆ °□) ≡(□ °/×) +1↘ 1⇡ 20
≡(□ ⍜(⊡0|+1) ⊟ ⊸⧆ °□) ≡(□ °/×) +1↘ 1⇡ 20

Problem 6

/× [2 2 2 2 3 3 5 7 11 13 17 19]
S ← ˙× /+ + ⇡ 100 1
T ← /+(˙×) + ⇡ 100 1
- T S

Problem 7

⊡ 10000 ▽ = 1 ⊸≡(⧻ °□) ≡(□ ▽ ⊸> 1) ⍉ °/× ↘ 1 + 1 ⇡ 110000

Problem 8

/↥ ≡(/×) ≡≡⋕⧈∘ 13 "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450"