View difference between Paste ID: WrFEwseM and fTFizjxW
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