SHOW:
|
|
- or go back to the newest paste.
1 | minutetest = do | |
2 | print $ ePo !! 90000 | |
3 | ||
4 | main = minutetest | |
5 | ||
6 | elemToString H = "22" | |
7 | elemToString He = "13112221133211322112211213322112" | |
8 | elemToString Li = "312211322212221121123222112" | |
9 | elemToString Be = "111312211312113221133211322112211213322112" | |
10 | elemToString B = "1321132122211322212221121123222112" | |
11 | elemToString C = "3113112211322112211213322112" | |
12 | elemToString N = "111312212221121123222112" | |
13 | elemToString O = "132112211213322112" | |
14 | elemToString F = "31121123222112" | |
15 | elemToString Ne = "111213322112" | |
16 | elemToString Na = "123222112" | |
17 | elemToString Mg = "3113322112" | |
18 | elemToString Al = "1113222112" | |
19 | elemToString Si = "1322112" | |
20 | elemToString P = "311311222112" | |
21 | elemToString S = "1113122112" | |
22 | elemToString Cl = "132112" | |
23 | elemToString Ar = "3112" | |
24 | elemToString K = "1112" | |
25 | elemToString Ca = "12" | |
26 | elemToString Sc = "3113112221133112" | |
27 | elemToString Ti = "11131221131112" | |
28 | elemToString V = "13211312" | |
29 | elemToString Cr = "31132" | |
30 | elemToString Mn = "111311222112" | |
31 | elemToString Fe = "13122112" | |
32 | elemToString Co = "32112" | |
33 | elemToString Ni = "11133112" | |
34 | elemToString Cu = "131112" | |
35 | elemToString Zn = "312" | |
36 | elemToString Ga = "13221133122211332" | |
37 | elemToString Ge = "31131122211311122113222" | |
38 | elemToString As = "11131221131211322113322112" | |
39 | elemToString Se = "13211321222113222112" | |
40 | elemToString Br = "3113112211322112" | |
41 | elemToString Kr = "11131221222112" | |
42 | elemToString Rb = "1321122112" | |
43 | elemToString Sr = "3112112" | |
44 | elemToString Y = "1112133" | |
45 | elemToString Zr = "12322211331222113112211" | |
46 | elemToString Nb = "1113122113322113111221131221" | |
47 | elemToString Mo = "13211322211312113211" | |
48 | elemToString Tc = "311322113212221" | |
49 | elemToString Ru = "132211331222113112211" | |
50 | elemToString Rh = "311311222113111221131221" | |
51 | elemToString Pd = "111312211312113211" | |
52 | elemToString Ag = "132113212221" | |
53 | elemToString Cd = "3113112211" | |
54 | elemToString In = "11131221" | |
55 | elemToString Sn = "13211" | |
56 | elemToString Sb = "3112221" | |
57 | elemToString Te = "1322113312211" | |
58 | elemToString I = "311311222113111221" | |
59 | elemToString Xe = "11131221131211" | |
60 | elemToString Cs = "13211321" | |
61 | elemToString Ba = "311311" | |
62 | elemToString La = "11131" | |
63 | elemToString Ce = "1321133112" | |
64 | elemToString Pr = "31131112" | |
65 | elemToString Nd = "111312" | |
66 | elemToString Pm = "132" | |
67 | elemToString Sm = "311332" | |
68 | elemToString Eu = "1113222" | |
69 | elemToString Gd = "13221133112" | |
70 | elemToString Tb = "3113112221131112" | |
71 | elemToString Dy = "111312211312" | |
72 | elemToString Ho = "1321132" | |
73 | elemToString Er = "311311222" | |
74 | elemToString Tm = "11131221133112" | |
75 | elemToString Yb = "1321131112" | |
76 | elemToString Lu = "311312" | |
77 | elemToString Hf = "11132" | |
78 | elemToString Ta = "13112221133211322112211213322113" | |
79 | elemToString W = "312211322212221121123222113" | |
80 | elemToString Re = "111312211312113221133211322112211213322113" | |
81 | elemToString Os = "1321132122211322212221121123222113" | |
82 | ||
83 | elemToString Ir = "3113112211322112211213322113" | |
84 | elemToString Pt = "111312212221121123222113" | |
85 | elemToString Au = "132112211213322113" | |
86 | elemToString Hg = "31121123222113" | |
87 | elemToString Tl = "111213322113" | |
88 | elemToString Pb = "123222113" | |
89 | elemToString Bi = "3113322113" | |
90 | elemToString Po = "1113222113" | |
91 | elemToString At = "1322113" | |
92 | elemToString Rn = "311311222113" | |
93 | elemToString Fr = "1113122113" | |
94 | elemToString Ra = "132113" | |
95 | elemToString Ac = "3113" | |
96 | elemToString Th = "1113" | |
97 | elemToString Pa = "13" | |
98 | elemToString U = "3" | |
99 | ||
100 | -- Insane, but fast way to solve the question "What is the length of | |
101 | -- n:th iteration of lookandsay sequence starting with x" | |
102 | -- | |
103 | -- idea behind this is the same as fibonacci list: | |
104 | -- fib = 1 : 1 : zipWith (+) fib (tail fib) | |
105 | ||
106 | add3 a b c = a+b+c | |
107 | add4 a b c d = a+b+c+d | |
108 | add5 a b c d e = a+b+c+d+e | |
109 | add6 a b c d e f = a+b+c+d+e+f | |
110 | ||
111 | zipWith4 f (a:as) (b:bs) (c:cs) (d:ds) = f a b c d : zipWith4 f as bs cs ds | |
112 | zipWith5 f (a:as) (b:bs) (c:cs) (d:ds) (e:es) = f a b c d e : zipWith5 f as bs cs ds es | |
113 | zipWith6 f (a:as) (b:bs) (c:cs) (d:ds) (e:es) (g:gs) = f a b c d e g : zipWith6 f as bs cs ds es gs | |
114 | ||
115 | elemLen = fromIntegral . length . elemToString | |
116 | ||
117 | eH = repeat 2 | |
118 | eHe = elemLen He : zipWith5 add5 (eHf) (ePa) (eH) (eCa) (eLi) | |
119 | eLi = elemLen Li : eHe | |
120 | eBe = elemLen Be : zipWith3 add3 (eGe) (eCa) (eLi) | |
121 | eB = elemLen B : eBe | |
122 | eC = elemLen C : eB | |
123 | eN = elemLen N : eC | |
124 | eO = elemLen O : eN | |
125 | eF = elemLen F : eO | |
126 | eNe = elemLen Ne : eF | |
127 | eNa = elemLen Na : eNe | |
128 | eMg = elemLen Mg : zipWith (+) (ePm) (eNa) | |
129 | eAl = elemLen Al : eMg | |
130 | eSi = elemLen Si : eAl | |
131 | eP = elemLen P : zipWith (+) (eHo) (eSi) | |
132 | eS = elemLen S : eP | |
133 | eCl = elemLen Cl : eS | |
134 | eAr = elemLen Ar : eCl | |
135 | eK = elemLen K : eAr | |
136 | eCa = elemLen Ca : eK | |
137 | eSc = elemLen Sc : zipWith5 add5 (eHo) (ePa) (eH) (eCa) (eCo) | |
138 | eTi = elemLen Ti : eSc | |
139 | eV = elemLen V : eTi | |
140 | eCr = elemLen Cr : eV | |
141 | eMn = elemLen Mn : zipWith (+) (eCr) (eSi) | |
142 | eFe = elemLen Fe : eMn | |
143 | eCo = elemLen Co : eFe | |
144 | eNi = elemLen Ni : zipWith (+) (eZn) (eCo) | |
145 | eCu = elemLen Cu : eNi | |
146 | eZn = elemLen Zn : eCu | |
147 | eGa = elemLen Ga : zipWith6 add6 (eEu) (eCa) (eAc) (eH) (eCa) (eZn) | |
148 | eGe = elemLen Ge : zipWith (+) (eHo) (eGa) | |
149 | eAs = elemLen As : zipWith (+) (eGe) (eNa) | |
150 | eSe = elemLen Se : eAs | |
151 | eBr = elemLen Br : eSe | |
152 | eKr = elemLen Kr : eBr | |
153 | eRb = elemLen Rb : eKr | |
154 | eSr = elemLen Sr : eRb | |
155 | eY = elemLen Y : zipWith (+) (eSr) (eU) | |
156 | eZr = elemLen Zr : zipWith4 add4 (eY) (eH) (eCa) (eTc) | |
157 | eNb = elemLen Nb : zipWith (+) (eEr) (eZr) | |
158 | eMo = elemLen Mo : eNb | |
159 | eTc = elemLen Tc : eMo | |
160 | eRu = elemLen Ru : zipWith3 add3 (eEu) (eCa) (eTc) | |
161 | eRh = elemLen Rh : zipWith (+) (eHo) (eRu) | |
162 | ePd = elemLen Pd : eRh | |
163 | eAg = elemLen Ag : ePd | |
164 | eCd = elemLen Cd : eAg | |
165 | eIn = elemLen In : eCd | |
166 | eSn = elemLen Sn : eIn | |
167 | eSb = elemLen Sb : zipWith (+)(ePm) (eSn) | |
168 | eTe = elemLen Te : zipWith3 add3 (eEu) (eCa) (eSb) | |
169 | eI = elemLen I : zipWith (+) (eHo) (eTe) | |
170 | eXe = elemLen Xe : eI | |
171 | eCs = elemLen Cs : eXe | |
172 | eBa = elemLen Ba : eCs | |
173 | eLa = elemLen La : eBa | |
174 | eCe = elemLen Ce : zipWith4 add4 (eLa) (eH) (eCa) (eCo) | |
175 | ePr = elemLen Pr : eCe | |
176 | eNd = elemLen Nd : ePr | |
177 | ePm = elemLen Pm : eNd | |
178 | eSm = elemLen Sm : zipWith3 add3 (ePm) (eCa) (eZn) | |
179 | eEu = elemLen Eu : eSm | |
180 | eGd = elemLen Gd : zipWith3 add3 (eEu) (eCa) (eCo) | |
181 | eTb = elemLen Tb : zipWith (+) (eHo) (eGd) | |
182 | eDy = elemLen Dy : eTb | |
183 | eHo = elemLen Ho : eDy | |
184 | eEr = elemLen Er : zipWith (+) (eHo) (ePm) | |
185 | eTm = elemLen Tm : zipWith3 add3 (eEr) (eCa) (eCo) | |
186 | eYb = elemLen Yb : eTm | |
187 | eLu = elemLen Lu : eYb | |
188 | eHf = elemLen Hf : eLu | |
189 | eTa = elemLen Ta : zipWith5 add5 (eHf) (ePa) (eH) (eCa) (eW) | |
190 | eW = elemLen W : eTa | |
191 | eRe = elemLen Re : zipWith3 add3 (eGe) (eCa) (eW) | |
192 | eOs = elemLen Os : eRe | |
193 | eIr = elemLen Ir : eOs | |
194 | ePt = elemLen Pt : eIr | |
195 | eAu = elemLen Au : ePt | |
196 | eHg = elemLen Hg : eAu | |
197 | eTl = elemLen Tl : eHg | |
198 | ePb = elemLen Pb : eTl | |
199 | eBi = elemLen Bi : zipWith (+) (ePm) (ePb) | |
200 | ePo = elemLen Po : eBi | |
201 | eAt = elemLen At : ePo | |
202 | eRn = elemLen Rn : zipWith (+) (eHo) (eAt) | |
203 | eFr = elemLen Fr : eRn | |
204 | eRa = elemLen Ra : eFr | |
205 | eAc = elemLen Ac : eRa | |
206 | eTh = elemLen Th : eAc | |
207 | ePa = elemLen Pa : eTh | |
208 | - | eU = elemLen U : ePa |
208 | + | eU = elemLen U : ePa |