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 |