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  |