Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Project Euler Code Golf

Fabian Carlström edited this page · 79 revisions

Project Euler Code Golf

Project Euler Problems
Rule I. If any Euler problem is unsolved and you solve it, you go on the board
Rule II. If you devise a solution shorter than what’s on the board, you may take that place on the board
Rule III. If you implement an agreed-upon change to the language, you get credit for all shortened solutions

1 +/&~&/(!1e3)!/:3 5 (Explanation: PE1 Explained) Kevin
2
Known bound: *+/{x*~x!2}32(|+\)\1 1
Unknown bound(b f/ x): +/{x@&~x!2}(4e6>+/-2#){x,+/-2#x}/1
isawdrones
3 |/d@&&/'2_'f'd:&~(f:{x!'!1+_sqrt x})600851475143 isawdrones
4 |/b@&{x~|x}'$b:,/a*/:a:!1000
Faster:
|/b@&{x~|x}'$b:?,/a*/:a:100+!900
isawdrones
5 Euclid’s algorithm:
{x*y%{:[y;_f[y]x!y;x]}[x]y}/1+!20
isawdrones
6 _(_sqr+/a)-+/a*a:1+!100 isawdrones
7 p:{:[x<4;,2;r,1_&~|/x#'~!:'r: _f[_ _ceil _sqrt x]]}
b:2;while[1e4>#a:p b*:2];a[10000]
isawdrones
8 |/*/'{x@(!5)+/:!-4+#x}0$',/0:` isawdrones
9 Brute force:
*/_*c@&1000=+/'c:b,'(_sqrt+/)'b*b:,/a,/:\:a:!500
isawdrones
10 p:{2_&{:[x@y;x&@[1,-1_ z#(1_ y#1),0;y;:;1];x]}/[x#1;2_! __ceil _sqrt x;x]};+/p@_2e6 Kevin
11 p:.:'0:`
d:{x ./:/:m@-1_1_=+/'m:,/n,/:\:n:!#x}
i:|/,/{:[4>#x;x;*/'x@(!4)+/:!-3+#x]}'
|/(i p;i@+p;i d@p;i d@|p)
isawdrones
12 Brute force:
f:{1__ x*(x+1)%2};c:1;{x<500}{#{d:&~x!'!1+_sqrt x;d,_ x%|d}f c+:1}\1;f@c
hakank
13 \p 0
10#($+/0.0$’0:`)_dv"."
isawdrones
14
clz:{:[x!2;1+3*x;_ x%2]}
a?|/a:{C:-1 1,(x-2)#0
  do[x+i:0
    if[~C@i
      b:&x>j:((i-1)<)clz\i
      C[j@b]:C[*|j]+(|!#j)@b]
    i+:1]
  C}@_1e6
Source
isawdrones
15
(40{1+':x,0}/1)20
_*/(-2+4*x)%x:1+!20 – implementing formulae \(C_{2n}^n\)
isawdrones
danbst
16 +/1000{x*:2;(*&x)_ x:((x>9),0)+0,x!/:10}/1 /slower: !' Kevin
17
a:$`one`two`three`four`five`six`seven`eight`nine
b:$`ten`eleven`twelve,($`thir`four,v:`fif`six`seven`eigh`nine),\:"teen"  
c:($`twen`thir`for,v),\:"ty"
g:a,b,c,/c,/:\:a
h:a,\:"hundred"    
i:g,h,/h,/:\:"and",/:g
z:#,/$i,`onethousand
Kevin
18 |/{(y+0,x)|y+x,0}/.:'0:`t.txt /shorter 0:` Kevin
19 +/{(&/"01"=-2#$_dj x)&6=-x!7}'from+!-((from:_(_jd 19010101))-(_jd 20001231)) hakank
20

xx: 1+til 100;
uc:{[x;y] tO:last[x]+y;aO:tO mod 10;bO:`int$(tO-aO) % 10;(-1_x),aO,bO}/[enlist 0;];
pp:{[x;y] mO:max count each rO:rO{[x;y] (y#0),x}'til count rO: y */: x;
          uc sum {[x;y] x,(y-count x)#0}[;mO] each rO };
lst:{[x] {parse x,"i"} each x} each reverse each string each xx
sum {[x;y] pp[x;y]}/[lst]

kuentang
21 f:{d:&~x!'!1+_sqrt x;d,_1_ x%d};+/&{(~&/x=b)&x~*|b:2{+/f x}\x}'!1e4 isawdrones
22 +/s*1+!#s:+/'-64+_ic m@<(-|/#:'m)$'m:.:'1_'(0,1_&","=n)_ n:",",,/0:`names.txt isawdrones
23 l:28123;n:l#1 / (l)imit, (n)ot sum of abundant
{n[x@&l>x]:0}'a+/:a:1_&{x<+/{?1,d,x%d:c@&~x!'c:1+1_!_sqrt x} x}'!l / (a)bundant
+/&n
inrick
24 ({:[1<x;,/(>:'(x,x)#1,x#0)[;0,'1+_f x-1];,!x]}10)[_1e6-1] hakank
25

xx: 1+til 100;
uc:{[x;y] tO:last[x]+y;aO:tO mod 10;bO:`int$(tO-aO) % 10;(-1_x),aO,bO}/[enlist 0;];
plus:{[x;y] mO:max count @/:(x;y) ;m:uc (x,(mO-count x)#0) 
    + (y,(mO-count y)#0);?[0=last m ;-1_m;m]};
count {[x] a:-2#x; x,enlist plus[a 0; a 1]}/[{[x] 1000>count last x};(enlist 1;enlist 1)]

kuentang
26 1+*>#:'{[n] {r:(10**|x)!*x; w:x?r; :[w=#x;x,r;(*x),w _ x]}/(n,1)}'1+!999 adamschmideg
27 ? ?
28 +/+\1,,/4#'2*1+!_1001%2 isawdrones
29 #?,/p^/:p:2+!99 silentbicycle
30 +/2_&{x=+/(0$'$x)^5}'!7*9^5 hakank
31
s:{+/{(y _ x),y#0}[x]'y*!_ceil(#x)%y+0.0}
e31:{*s/[(x#0),1;1 2 5 10 20 50 100 200]}
paul7
32 ? ?
33 ? ?
34 +/2_&{x=+/{*/1+!x}'0$'$x}'!50000 hakank
35 ? ?
36 +/&{&/{y~|y:x _vs y}'[2 10;x]}'!1e6
Faster:
p:{&{x~|x}'x@y};+/n@p[2_vs]n:p[$:;!1e6]
Kevin
37 ? ?
38 ? ?
39 ? ?
40 ? ?
41 ? ?
42 m:.:'1_'(0,1+&","=n)_",",n:*:0:`words.txt
+/{a=_ a:_sqrt 1+8*x}'+/'-64+_ic m@<(-|/#:'m)$'m
isawdrones
43 ? ?
44 ? ?
45 ? ?
46 ? ?
47 ? ?
48
uc:{[x;y] tO:last[x]+y;aO:tO mod 10;bO:`int$(tO-aO) % 10;(-1_x),aO,bO}/[enlist 0;];
plus:{[x;y] mO:max count @/:(x;y) ;m:uc (x,(mO-count x)#0) 
+ (y,(mO-count y)#0);?[0=last m ;-1_m;m]};
pp:{[x;y] mO:max count each rO:rO{[x;y] (y#0),x}'til count rO: y */: x;
m:uc sum {[x;y] x,(y-count x)#0}[;mO] each rO ; ?[0=last m ;-1_m;m]};
lst:{[x;y] ll:{parse x,"i"} each reverse string y;
plus[x;{[x;y]tmp:pp[x;y]; ?[10>=count tmp;tmp;10#tmp] }/[y#enlist ll]]}/[enlist[0];1+til 1000];
reverse 10#last lst
kuentang
49 ? ?
50 ? ?
51 ? ?
52 ? ?
53 +/~1e6>,/{x{+':0,x,0}\1.}100 isawdrones
54 ? ?
55 ? ?
56 ? ?
57 ? ?
58 ? ?
59 ? ?
60 ? ?
61 ? ?
62 ? ?
63 ? ?
64 ? ?
65 ? ?
66 ? ?
67 |/{(y+0,x)|y+x,0}/.:'-1_'0:`triangle.txt Kevin
68 ? ?
69 ? ?
70 ? ?
71 {a:2;c:5;while[~x<c+7;a+:3;c+:7];a}1e6 isawdrones
72 ? ?
73 ? ?
74 ? ?
75 ? ?
76 ? ?
77 ? ?
78 ? ?
79 ? ?
80 ? ?
81 ? ?
82 ? ?
83 ? ?
84 ? ?
85 ? ?
86 ? ?
87 ? ?
88 ? ?
89 A general solution with roman-arabic and arabic-roman number conversion
r:"IVXLCDM"
i:(!4)#\:0;i:(i,,0 1),(1,/:i),,0 2
ar:{d:10_vs x;,/d{r@(i+y)@x}'|(#d)#2*!4}
d:.+(`$/:r;*\1,6#5 2)
ra:{n:d[`$/:x];+/n*1-2*>':n,0}
answer:+/{r:-1_ x;r::["M"=*r;1_ r;r];(#r)-#ar ra r}/:0:"roman.txt"
/ "M" hack, because ar fails above 4000
adamschmideg
90 ? ?
91 ? ?
92 ? ?
93 ? ?
94 ? ?
95 ? ?
96 ? ?
97 ? ?
98 ? ?
99 ? ?
100 ? ?
Something went wrong with that request. Please try again.