Advertisement
Guest User

looknsay.c

a guest
Sep 15th, 2014
410
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.51 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. /* http://www.njohnston.ca/2010/10/a-derivation-of-conways-degree-71-look-and-say-polynomial/ */
  4. const struct sequence {
  5.     char *seq;
  6.     int next[7];
  7. } SEQUENCES[] = {
  8.     {NULL, {0}},
  9.     {"1112", {63}},
  10.     {"1112133", {64, 62}},
  11.     {"111213322112", {65}},
  12.     {"111213322113", {66}},
  13.     {"1113", {68}},
  14.     {"11131", {69}},
  15.     {"111311222112", {84, 55}},
  16.     {"111312", {70}},
  17.     {"11131221", {71}},
  18.     {"1113122112", {76}},
  19.     {"1113122113", {77}},
  20.     {"11131221131112", {82}},
  21.     {"111312211312", {78}},
  22.     {"11131221131211", {79}},
  23.     {"111312211312113211", {80}},
  24.     {"111312211312113221133211322112211213322112", {81, 29, 91}},
  25.     {"111312211312113221133211322112211213322113", {81, 29, 90}},
  26.     {"11131221131211322113322112", {81, 30}},
  27.     {"11131221133112", {75, 29, 92}},
  28.     {"1113122113322113111221131221", {75, 32}},
  29.     {"11131221222112", {72}},
  30.     {"111312212221121123222112", {73}},
  31.     {"111312212221121123222113", {74}},
  32.     {"11132", {83}},
  33.     {"1113222", {86}},
  34.     {"1113222112", {87}},
  35.     {"1113222113", {88}},
  36.     {"11133112", {89, 92}},
  37.     {"12", {1}},
  38.     {"123222112", {3}},
  39.     {"123222113", {4}},
  40.     {"12322211331222113112211", {2, 61, 29, 85}},
  41.     {"13", {5}},
  42.     {"131112", {28}},
  43.     {"13112221133211322112211213322112", {24, 33, 61, 29, 91}},
  44.     {"13112221133211322112211213322113", {24, 33, 61, 29, 90}},
  45.     {"13122112", {7}},
  46.     {"132", {8}},
  47.     {"13211", {9}},
  48.     {"132112", {10}},
  49.     {"1321122112", {21}},
  50.     {"132112211213322112", {22}},
  51.     {"132112211213322113", {23}},
  52.     {"132113", {11}},
  53.     {"1321131112", {19}},
  54.     {"13211312", {12}},
  55.     {"1321132", {13}},
  56.     {"13211321", {14}},
  57.     {"132113212221", {15}},
  58.     {"13211321222113222112", {18}},
  59.     {"1321132122211322212221121123222112", {16}},
  60.     {"1321132122211322212221121123222113", {17}},
  61.     {"13211322211312113211", {20}},
  62.     {"1321133112", {6, 61, 29, 92}},
  63.     {"1322112", {26}},
  64.     {"1322113", {27}},
  65.     {"13221133112", {25, 29, 92}},
  66.     {"1322113312211", {25, 29, 67}},
  67.     {"132211331222113112211", {25, 29, 85}},
  68.     {"13221133122211332", {25, 29, 68, 61, 29, 89}},
  69.     {"22", {61}},
  70.     {"3", {33}},
  71.     {"3112", {40}},
  72.     {"3112112", {41}},
  73.     {"31121123222112", {42}},
  74.     {"31121123222113", {43}},
  75.     {"3112221", {38, 39}},
  76.     {"3113", {44}},
  77.     {"311311", {48}},
  78.     {"31131112", {54}},
  79.     {"3113112211", {49}},
  80.     {"3113112211322112", {50}},
  81.     {"3113112211322112211213322112", {51}},
  82.     {"3113112211322112211213322113", {52}},
  83.     {"311311222", {47, 38}},
  84.     {"311311222112", {47, 55}},
  85.     {"311311222113", {47, 56}},
  86.     {"3113112221131112", {47, 57}},
  87.     {"311311222113111221", {47, 58}},
  88.     {"311311222113111221131221", {47, 59}},
  89.     {"31131122211311122113222", {47, 60}},
  90.     {"3113112221133112", {47, 33, 61, 29, 92}},
  91.     {"311312", {45}},
  92.     {"31132", {46}},
  93.     {"311322113212221", {53}},
  94.     {"311332", {38, 29, 89}},
  95.     {"3113322112", {38, 30}},
  96.     {"3113322113", {38, 31}},
  97.     {"312", {34}},
  98.     {"312211322212221121123222113", {36}},
  99.     {"312211322212221121123222112", {35}},
  100.     {"32112", {37}}
  101. };
  102.  
  103. const int BASE = 8;
  104.  
  105. void evolve(int seq, int n)
  106. {
  107.     if (n <= 0) {
  108.         printf(SEQUENCES[seq].seq);
  109.     } else {
  110.         for (const int *next = SEQUENCES[seq].next; *next; next++)
  111.             evolve(*next, n - 1);
  112.     }
  113. }
  114.  
  115. int main()
  116. {
  117.     int n;
  118.     scanf("%d\n", &n);
  119.     evolve(24, n - BASE);
  120.     evolve(39, n - BASE);
  121.     putchar('\n');
  122.     return 0;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement