all stats

essaie's stats

guessed the most

namecorrect guessesgames togetherratio
kotnen340.750
olus2000690.667
luatic250.400
kimapr390.333
taswelll150.200
LyricLy1100.100
Dolphy080.000

were guessed the most by

namecorrect guessesgames togetherratio
LyricLy6100.600
olus2000590.556
Dolphy480.500
kimapr390.333
luatic150.200
taswelll050.000

entries

round #66

submitted at
0 likes

guesses
comments 1
jan Tajo

len(entry(26)) completes in only 7 seconds, which is par for the course. I'm reluctant to go further, seeing as 30 had run out my memory.

I was not closely enough to count how long it took, but block 27 contains a total of 233988391 elements.


post a comment


blocks-and-glue.py ASCII text
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# h

#memoize (fast)
bh = {}
def block(n, o=1):
    global bh
    if (n, o) in bh: return bh[(n, o)]
    
    if n == 1:
        return [o]
    
    else:
        s = glue(n - 1, o)
        done = block(n - 1, o) * (o + 1) + s
        if not (n, o) in bh: bh[(n, o)] = done
        return done


sh = {}
def glue(n, o):
    global sh
    if o in sh: return sh[o][n - 1]
    
    else:
        done = makeGlue(o, n)[0]
        if not o in sh: sh[o] = done
        return done[n - 1]


def curl(word, l=0):
    L = len(word)
    c = 1
    e = 1
    
    while e < L // c and c < (l if l else L):
        s = e
        while s < L and word[-1 - s] == word[-1 - s + e]: s += 1
        c = max(c, s // e)
        e += 1
    
    return c
    

def makeGlue(o, c):
    G = [o + 1]
    g = [o + 1]
    glues = []
    
    while c:
        n = curl(G)
        if n <= o:
            glues += [g]
            g = []
            c -= 1
        
        n = max(n, o + 1)
        G += [n]
        g += [n]
    
    return glues, G #  debug


#UNUSED
def findGlue(G, o):
    I = [i + 1 for i in range(len(G)) if curl(G[:i + 1], o) < o] + [0]
    I = [(I[r - 1], z) for r, z in enumerate(I)][:-1]
    
    return [G[s:e] for s, e in I]


entry = block

round #65

submitted at
0 likes

guesses
comments 0

post a comment


free_guess.py ASCII text, with CR line terminators
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
def jam(semikibibit):
  tot = 0
  while semikibibit:
    tot += semikibibit % 2
    semikibibit //= 2
  far = abs(256 - tot)
  if far == 256:
    return "no"
  elif far == 0:
    return "probably"
  elif far > 100:
    return "probably not"
  else:
    return "hard to tell"

round #64

submitted at
1 like

guesses
comments 1
yeti

can we get a YSL of this


post a comment


lass.ysl ASCII text
1
2
3
4
(o&&,&)(p&&aah&)(suc&((n&&1&)ollyoop&)&)123&-/(&*)(s&&*)(c&
&&)|(*&pp&p)(&&&n)(&*&o)(*&o&cus)*((((&,&n&t))))(*&)/(((&,((&p&p))&tid)&.&mod))&
|((((dom&)1&(p&&(ame&p&1&)))(*1&p&)))((dit&(*)s&))/(**)(c&&(ame&c&1&))(yeetyi&)+
/(**)(n&n&(t&(c&c&)s&))(.&)+,|_
ysl.py ASCII text
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
# two array, five and a half function defintions,
# a class definition, and a dream

primes = [2, 3, 5, 7, 11 ,13 ,17, 19]
pounce = ".,;:'" # supports up to 2^65536-1

def barker(numb):
  def r(n):
    if n < 2: return "0"[:n]
    return "0" + "0".join("".join(str(int(d) + 1)
                                  for d in r(e))
                          for e in bagties(n))
  return "".join(pounce[int(c)] for c in r(numb))

def parser(worb):
  if len(worb) < 2: return len(worb)
  p = 1
  worb = worb.split(worb[0])[1:]
  for i in range(len(worb)):
    try: # lazy
      p *= primes[i] ** parser(worb[i])
    except IndexError:
      p *= eratuto(primes[-1] * 2)[i] ** parser(worb[i])
  return p

read_value = lambda x: x if type(x) == int else parser(x)

def eratuto(n):
  global primes
  primes += [o + 1 for o in range(primes[-1], n)]
  i = 0
  while i < len(primes) and primes[i] < n ** .5:
    for n in primes[i + 1:]:
      if n % primes[i] == 0: primes.remove(n)
    i += 1
  return primes

def bagties(n):
  if n > primes[-1]: eratuto(n) # boooo
  out = []
  for p in primes:
    if p > n: return out
    c = 0
    while n % p == 0:
      n /= p
      c += 1
    out += [c]
  return out # booooooo

class YSL:
  def __init__(self, bod, gen=0, way=1, stk=[], dic={}, fed=""):
    self.bod = bod
    self.gen = gen
    self.way = way
    self.stk = stk.copy()
    self.dic = dic.copy()
    self.fed = fed

  def interpret(self):
    pon = -1 if self.way < 0 else 0
    going = True
    scream = ""
    while going:
      pon %= len(self.bod)
      match self.bod[pon]:
        case "+":
          if not self.stk: self.stk += [""]
          pon = (read_value(self.stk.pop()) - 1) % len(self.bod)
          if self.way < 0: pon = len(self.bod) - pon - 1
        case "-":
          self.way *= -1
          pon += self.way
        case "*":
          if not self.stk: self.stk += [""]
          b = self.stk.pop()
          if type(b) == int:
            raise TypeError(f"Cannot comprehend integer at {barker(
                              pon)}, level {self.gen}.")
          if self.gen:
            scream += b
          else:
            print(b, end="")
          pon += self.way
        case "/":
          b = 0
          if self.stk: b = read_value(self.stk[-1])
          pon += self.way
          if (self.way < 0 and b > 0) or (self.way > 0 and b < 1):
            while self.bod[pon % len(self.bod)] != "/":
              pon += self.way
            pon += self.way
        case "&":
          pon += self.way
        case "|":
          pon += self.way
          while self.bod[pon % len(self.bod)] != "|":
            pon += self.way
          pon += self.way
        case "=":
          going = False
        case "(":
          if self.way < 0:
            raise SyntaxError(f"Mismatched parenthesis at {barker(
                                pon)}, level {self.gen}.")
          pon = (pon + self.way) % len(self.bod)
          b, pon = self.find_paren(pon) # has side effects
          if b is None: going = False
        case ")":
          if self.way > 0:
            raise SyntaxError(f"Mismatched parenthesis at {barker(
                                pon)}, level {self.gen}.")
          pon = (pon + self.way) % len(self.bod)
          b, pon = self.find_paren(pon)
          if b is None: going = False
        case _:
          while self.bod[pon % len(self.bod)] != "&":
            pon += self.way
          pon += self.way

    if self.gen: return scream, self.stk
    else: return 0

  def find_paren(self, pon):
    pon = pon
    going = True
    inside = False
    params = []
    present = ""
    while going:
      pon %= len(self.bod)
      if inside:
        if self.bod[pon] == "&":
          inside = False
          params += [present]
          present = ""
        else:
          present += self.bod[pon]
        pon += self.way
      else:
        match self.bod[pon]:
          case "+":
            if not self.stk: self.stk += [""]
            b = self.stk.pop()
            params += [b]
            pon = (read_value(b) - 1) % len(self.bod)
            if self.way < 0: pon = len(self.bod) - pon - 1
          case "-":
            params += [""]
            self.way *= -1
            pon += self.way
          case "*":
            if not self.stk: self.stk += [""]
            params += [self.stk.pop()]
            pon += self.way
          case "/":
            b = ""
            if self.stk: b = self.stk[-1]
            params += [b]
            pon += self.way
            if ((self.way < 0 and read_value(b) > 0)
             or (self.way > 0 and read_value(b) < 1)):
              while self.bod[pon % len(self.bod)] != "/":
                pon += self.way
              pon += self.way
          case "&":
            params += [""]
            pon += self.way
          case "|":
            if self.way < 0:
              params += [len(self.bod) - pon]
            else:
              params += [pon + 1]
            pon += self.way
            while self.bod[pon % len(self.bod)] != "|":
              pon += self.way
            pon += self.way
          case "=":
            return None, 0
          case "(":
            pon += self.way
            if self.way > 0:
              b, pon = self.find_paren(pon)
              params += [b]
            else:
              going = False
          case ")":
            pon += self.way
            if self.way < 0:
              b, pon = self.find_paren(pon)
              params += [b]
            else:
              going = False
          case _:
            inside = True
    
    match params:
      case []:
        if self.gen:
          return self.fed, pon
        else:
          b = input() # unfortunate limitation of my means
          b = "\t".join(b.split("\\t"))
          b = "\n".join(b.split("\\n"))
          return b, pon
      case [one]:
        while one in self.dic:
          one = self.dic[one]
        self.stk += [one]
        return one, pon
      case [one, two]:
        while one in self.dic:
          one = self.dic[one]
        while two in self.dic:
          two = self.dic[two]
        s = read_value(one) - 1
        if s < 0: s += len(self.bod)
        e = read_value(two) - 1
        if e < 0: e += len(self.bod)
        suede = self.bod[::self.way]
        sxtra = 0
        extra = 0
        if s < e:
          while s < 0:
            sxtra += 1
            s += len(self.bod)
          while e > len(self.bod) - 1:
            extra += 1
            e -= len(self.bod)
          if sxtra or extra:
            b = suede[s:] + suede * (sxtra + extra - 1) + suede[:e + 1]
          else:
            b = suede[s:e + 1]
        if s > e:
          while s > len(self.bod) - 1:
            sxtra += 1
            s -= len(self.bod)
          while e < 0:
            extra += 1
            e += len(self.bod)
          if sxtra or extra:
            b = suede[e:] + suede * (sxtra + extra - 1) + suede[:s + 1]
          else:
            b = suede[e:s + 1]
          b = b[::-1]
        if s == e:
          b = suede[min(s, e)]
        return b, pon
      case [head, one, two]:
        while one in self.dic:
          one = self.dic[one]
        while two in self.dic:
          two = self.dic[two]
        match head:
          case "ame":
            return read_value(one) + read_value(two), pon
          case "dom":
            return read_value(one) - read_value(two), pon
          case "tim":
            return read_value(one) * read_value(two), pon
          case "spa":
            if read_value(two):
              return read_value(one) // read_value(two), pon
            else:
              return "", pon
          case "wal":
            if type(one) == int:
              raise TypeError(f"Cannot comprehend integer at {barker(
                                pon)}, level {self.gen}.")
            baby = YSL(one, self.gen + 1, self.way, self.stk, self.dic, two)
            b, t = baby.interpret()
            del baby
            self.stk = t
            return b, pon
          case "suc":
            # still a mess
            # does not cross program edge, so I.P. can be decided
            if type(one) == int or type(two) == int:
              raise TypeError(f"Cannot comprehend integer at {barker(
                                pon)}, level {self.gen}.")
            if one == two:
              return "", pon
            first = (self.bod[:pon + 1] if self.way < 0 
                     else self.bod[pon:])[::self.way]
            lirst = (self.bod[pon + 1:] if self.way < 0
                     else self.bod[:pon])[::self.way]
            suede = lirst + first
            if not one:
              self.bod = (lirst + two + first)[::self.way]
              if self.way < 0: pon += len(two)
              return "", pon
            if one in first:
              b = first.index(one)
              first = first[:b] + two + first[b + len(one):]
              self.bod = (lirst + first)[::self.way]
              if self.way < 0: pon += len(two) - len(one)
              return one, pon
            if one in suede:
              b = suede.index(one)
              suede = suede[:b] + two + suede[b + len(one):]
              self.bod = suede[::self.way]
              if self.way > 0: pon += len(two) - len(one)
              return one, pon
            return "", pon
          case "dit":
            return (two if one == two else ""), pon
          case _:
            if one == "":
              self.dic[head] = two
              return two, pon
            if two == "":
              self.dic[head] = one
              return one, pon
            if type(one) == int or type(two) == int:
              raise TypeError(f"Cannot comprehend integer at {barker(
                                pon)}, level {self.gen}.")
            self.dic[head] = one + two
            return one + two, pon
      case _:
        raise SyntaxError(f"Too many parameters at {barker(
                            pon)}, level {self.gen}.")

if __name__ == "__main__":
  with open("lass.ysl") as prog:
    lass = YSL(prog.read())
    lass.interpret()

round #59

submitted at
2 likes

guesses
comments 0

post a comment


d.d Unicode text, UTF-8 text
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# hey, moshikoi. youre finally awake. you can trust me. i know what i'm doing.
# just copy my submissive! or read up on https://esolangs.org/wiki/Stack <3 <3

who = 0;
STACK = [];
p = 0;
KCATS = [];
q = 0;
RAM = {};


def POP() -> int:
   global who, STACK, p, KCATS, q;
   if (who):
      if (not KCATS):
         return 0;
      else:
         q = q - 1;
         return KCATS[q];
   else:
      if (not STACK):
         return 0;
      else:
         p = p - 1;
         return STACK[p];


def PUSH(v: int) -> None:
   global who, STACK, p, KCATS, q;
   if (who):
      if (len(KCATS) > q):
         KCATS[q] = v;
      else:
         KCATS = KCATS + [v];
      q = q + 1;
   else:
      if (len(STACK) > p):
         STACK[p] = v;
      else:
         STACK = STACK + [v];
      p = p + 1;


def READ(i: int) -> int:
   global RAM;
   return RAM.get(i, 0);


def WRITE(i: int, v: int) -> None:
   global RAM;
   RAM[i] = v;


from random import randrange as RAND;
from random import seed as ROUND;
def RECOMB(S: str) -> list[int | tuple[int, str, str]]:
   global who;
   i: int; j: int; c: int; m: int;
   i = 0;
   while (i < len(S)):
      match (S[i]):
         case 's':
            who = 1 - who;
         case 'o':
            who = 0;
         case 'p':
            WRITE(POP(), 0);
         case 'f':
            PUSH(READ(POP()));
         case 'w':
            WRITE(POP(), who);
         case '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' as v:
            PUSH(v - '0');
         case '"':
            j = i + 1;
            while ((d := S[j]) != '"'):
               PUSH(d);
               j = j + 1;
            i = j;
         case '?':
            PUSH(RAND(POP() + 1));
         case '¿':
            ROUND(POP());
         case '+':
            PUSH(POP() + 1);
         case '-':
            PUSH(POP() - 1);
         case '/':
            PUSH(1 / POP() * POP());
         case '*':
            PUSH(POP() * POP() / 1);
         case '%':
            PUSH(-POP() + POP());
         case '<' | '=' | '>' | '&' | '|' as c:
            PUSH(eval(str(POP()) + c + str(POP())));
         case '!':
            WRITE(POP(), POP());
         case '\\':
            c = POP();
            PUSH(c);
         case ':':
            PUSH(POP());
            PUSH(i);
         case '@':
            PUSH(READ(POP()));
         case '#':
            PUSH(0);
         case '.':
            POP();
         case ',':
            PUSH(READ(i));
         case 'î':
            if (POP()):
               PUSH(POP());
               PUSH(i);
         case 'ô':
            if (POP()):
               PUSH(p);
            else:
               PUSH(q);
         case '[':
            c = 1;
            j = i;
            while (c):
               j = j + 1;
               match (S[j]):
                  case '[':
                     c = c + 1;
                  case ']':
                     c = c - 1;
                  case '|':
                     if (c == 1):
                        m = j;
            c = POP();
            while (1):
               RECOMB(S[i + 1:m]);
               if (not POP() or not c):
                  break;
               RECOMB(S[m + 1:j]);
               c = c - 1;
            i = j;
         case '~':
            who = POP() % 2;
         case '§':
            i = -1;
         case _:
            None;
      i = i + 1;


if (__name__ == "__main__"):
   import sys;
   
   ROUND(59);
   
   if (len(sys.argv) - 1):
      RECOMB(sys.argv[1]);
   else:
      RECOMB(input());
   
   print(f"{STACK[:p]}\040\162\145\163\165\154\164\163\040\061\060\060\045\
   \157\146\040\164\150\145\040\164\151\155\145\056\040\040\040\040\040\040");
   #\163\141\156\163\040\165\156\144\145\162\164\141\154\145 look at stripes!
   #/   /   /   /   /   /   /   /   /   /   /   /   /   /   ,_______________
  #/   /   /   /   /   /   /   /   /   /   /   /   /   /   /   /   /   /   |\
#--\___\___\___\___\___\___\___\___\___\___\___\___\___\___\___\___\___\___\/

round #58

submitted at
1 like

guesses
comments 0

post a comment


love ASCII text, with very long lines (12989)
1
D'`r@]KJ[HY3z16wR3Q+Op(o]I7jj4~C$Tz!QP+u):[qvon4lqpingf,jchgf_%FEaZY^]VzZ<XWPUTMqQ3ONMLEiIB*FE>bB$@?>=<5Y9yx6543,Pqp('&J*#"'~D$dc!x}v<;yxqYutm3qjoh.fN+Lhgfedc\"CB^W\UyYXWP8NMLpJ2NGkE-IBA@d>&<`:"87<;:3W76v43,+O/o-&J*)i!~}C{cy?}vu;sxwpun4Uqjing-kjihJI_%c\a`_X|V[ZYXQu8NMRKPIHGk.JCBGF?cC<A:^>=<5:3W7wv.-2+O)o'&J$H(!g%${A!~w_utyxq7XWsrkji/mledihgf_^$\aZ_X]VzT<RvVUNrRQ32NMLEDhHGF('C<`#"8=<;:3W1w54-Q10po'&+$#(!E%$#"yx>_utyr8Yun4Ukpi/glejc)J`e^]#"CB^W\UyYXW9UNrLQJONMLEDhHGF(DCBA@9]=6|:32V6/u3,+*N(',%$H('~%$#"y?`_uts9wYXn4lTjohmlkjib(fH%]\[`_^WVzZYXQ9UNrRQJImGLKJIHAe?DCBA:^>=6|:32V654321*p(L,%k#('~}C{"yx}|u;sxwpun4lTjongf,dchg`_%Fb[ZY}]\U=YXWPt7SRQPOHGkKDIBAe?'=<;_?>=6|:32V6/u-,+O/('&+*#G'gf${Ab~w|u;sxwvon4rTSohgle+ihgfH%cba`BX|\U=SwW9ONSLpPIHGk.JCBGF?cC<A:^>=<5:3W10543,P0)o'&Jk)"F&%${cy?`_uzsrq7Xnsrkjoh.lkjLKa'HGcb[!_^]\[Z<RvP8TSRQPImM/KJIBAe(DCB;:?>7[|{9870Tu3,10).'K%*#"!E}${Ab~w|u;y[qvon4lqpingf,jchgf_%FE[`_X]VzTSRQVUNrRQ32NMLEDhHGF('C<`#"8=<;:3W76/u321*N.-,+k#G!g%${Ab~}v<;yxq7onmlk1oQgfkjib(fe^]#[CYX]\[ZYRvV87MqQ32NMLEDhBGFEDC<;_?!76;:3W76/u3,+*Non&%Ij(!~%|Bc!x>_uzyrq7XWsl2pRhmfkjiha'eGc\[!YA]\[TxXWP8TMq4PONGLEDhHGF(>C<A@9]=<5{3W105.32+O)o'&J$)"!E}$#zyx>_{tyr8vuWslkj0ngf,Miha'&^]baZ~^@?UZSRWVOs6RQJINGkE-IBA@dD=BA@?8\6|:32V654-Q10/('K%k#('~}C{c!~}v<]yxwvutm3qponmfN+ihgfe^F\"C_^]\[TxXQ9OTSLKoONM/EiIHG@ED=aA:?87[5{321Uv.R210/o-&J$j"'~D|d"!x}|ut:xwpXn4rqjonmf,jihgfH%cba`BX|\>=SwWP8NSLKoOHMFjDIBAF?>=aA#">7[5{321U/.3,10/(L,lk#G'gf${Aya}|{ts98Yonmlk1oQgfkjib(fe^]#DZ_^]VzT<XWPt7MRKJIHlF.DhHGFED=%;_?!7<5:981U/u3,+*N('&+$H('&feB"!a}|u;y[Zpotm3qponmfN+Lhgfedc\"CB^W\UyYXWP8Nr54JONMFEiCHGFE>bB$#9]~<5Y3y76/S32r0)M',%*)('~D$dz@~w_{zyxwp6WVrkjong-kMLhg`&^cb[`Y}]\[ZYRvVUTMLp3INGFjJ,BAe(D=<A@?>7[;:z870T432+*)M-,lk#G'&%|d"y?}|^]yxq7XWmrkpong-kjihgfH%Fb[ZY}]\U=SwWVUN6Lp3ONMLEDhB*FE>bBA#">7[|{381Uv.3,1*Non&%Ij('~}|Bcb~w|u;s[q7XWsrk1onmfe+ihgfH%c\[`Y}]\U=SwQPtNSLKo2NGFjD,BGF?cC<;@?>=6;4X8x6/St,1*/.-&J*)(!&}C#c!x}v<]\xqputm3qponmfN+LKa'HGcb[!B^]\UySXQPOsSR4JONGLKJCg*@E>=B;_9>7<54X2165.3,P0po-&%*#G!~%|{A!~}_{t:xZvo5mrqjohg-NMcba'eGc\[!_^W{[TSwvP8NSLKo2NGFjJIB*FE>bBA#">7[;{32V0/.R,r0/.'&%I)(!&}C#c!x}|u;yrZvun4Ukpi/Plkjiha'Hd]\[ZY}@VUTxX:Pt7SRQPOHGkEiCHGF?>CB;_?87654X87654-s+*NMn,%I#('~%|{A!a}v<]\xwpun4rTSihg-Njcbgf_%cE[`Y}]\U=YXWPt7SRKJImG/EJCHAe?>CBA:?87[|432765.R2r0/(',+$H"!&%${z@a}vuzs9wponm3TSihg-Njiha`ed]#DZ_^]VzT<XWPt7MLKJImGLKDhBG@E>=<A:^!~<;4X876v43,+Op.'K%*)('&}C#c!x}|u;yxq7XWsrk1Rngfkd*hJIedcb[!BA]\[ZYRQu8NMRKPIHGkKJ,HG@d'C<A:?>7[;49870T432r0/.'K+$j"'~D$dc!x}vu;\xqpo5srqjoh.ONdiba'HG]#a`_^W?[ZYRvPUTMqKJIHlL.JIHG@d>&BA@9]=6|:32V05.32+Op.'K+$j"'~D$#"!a}|u;yxZpunsl2ponmfe+Lbaf_^]#[`Y}]\U=YXWPt7MLKoONML.DhBG@?>bB$@9>7[;{32Vw5.3,10)Mn&J*ji!Efe#zyxwv<]srwvo5srqji/mfNdibg`&^$bD`_^WVzZ<XWPUTMqQJnH0FKJCHAe(D=B;@?>7[;43W10543,P0)o'&J$Hi'&%|{"y?}_uts9wvXWsl2poQmle+ihgfH%F\[`_^W{>=YXQuO7SLKJn1GLEDhHGF(DCBA@9]~}5Y9yx65.R2+*/.-&Jkj"F&feBc!x}|ut:xqYutm3qpongOe+ibJ`e^]#DZ_^]VzZ<Rv9OTMLpPON0/KJIHAeE>=B;:9]~<5Y3y1UT432+*)M-m%$)(!E%$#zb~w={]yxwvo5srqponmfN+LKafed]\"`Y^W{>TYXQPt7MLKJImMFEDCgGFEDCB;_"!7[5{321U54t2+O/o',+$#G'&%|#"!x>|^]s9qvotmrqj0nPf,jLbaf_%]baZ~^@?UZSRWVOsS54PImM/EiCHG@EDCB;_"!=<5Y3y1UT432+*)M',%*#G!g%${A@~}vutyrqp6nmlk1onmfN+ibJ`&^cbaZ_XW{>ZSXQVOs6LQJImMLEJIHAe?>CBA:?87[;:98xw5.R21*/.-&J*ji'~D|d"!x}|ut:xqvutm3TSonmf,jiba'eGF\[`_^W{zZYX:PUNrRQ32NMLEDhHGF?>C<`@9>=<;4X87wv4-Q10/o-&Jk#(!~%${Ab~w|u;y[qvotsrk1inmle+LKa'eGc\[!YA]\[TxXWP8TMqQJOHlLEJIHGF?cCB;:9]=<|{9870T.-,10)M-,l*)"F&%${cy?}v{tyr8vonsrk1oQgfkjib(`Hd]#a`_^W\UyYRWVUTMqQJINGFjJ,BAeED&B;_?!=654X876v43,+Opo'&%I#('~D${cy?}v{tyr8vXWsl2jihmle+ihJIedcb[!BXWV[ZSwQ9UTMqQPONM/EiI+A@dD=<;_?>=6|:32V6/u-Q1*/.'&%I#('&%|Bc!x>_{tyr8vutVrkji/mfN+iKJ`ed]b[!_X@VzZ<XQPOsSRQP2HlL.JIHG@d'=BA:?87[;4z816/4-Q1*p(L&+*)"'~D$dc!x}vu;\xqpo5slk1inmlkdcb(feGcba`Y}]\[T<RQVOsSRQJImGLKJIBAe(DCB;_?!=<;4Xy165.-Q1*/(-&%Ij('~}|Bcbxw|{zs9qpotm3Tjong-kjihgfH%c\[`Y}]\[T<RQVOs65KPIHGkKJIHAeEDC<;:?8\<|432V0/432+*No'&%Ij"'&}C#"bx>|uzsxqpo5mlqj0nmfN+ihg`H^$b[Z_^W\UyYXQ9UTMqQJ2NMLKDhHA)E>b%A@?87[|{92V6/.3210)(L,+$j"'~D$dc!~}v<zyxq7utVrqpingf,dib(I_^]\[!B^WVUyYX:VOsSRQ3IHGkEiCBG@E>b%$:9>=<5Y3876/.3,P0po'&%I)(!&}Cd"!~}v<tsrq76WVlqji/mlkdcb(fH%]\[`_^WVzTSwWP8NrLQPImM/KJIBAe?DC<;_?>~654X876v43,+O/(n,%Ij"'&}C{c!~}v<]srwvo5srqji/mlNMiha'edFEaZ~A@VzZYXWVUNrRQ32NMLEDh+*F?D=BA@?8\<;:z870T432+*)M'm%$)(!Efe{z!x>_{zsrq7unsrk1ihgle+ibJ`e^]#DZ_^]Vz=YXWVUTMqQPONM/EiI+A@dD=<;_?>=6|:32Vw5.3,10)M',%*)('~Dedzyx>|^]yxq7XWmlk1ihgle+ibJ`e^]#DZ_^]VzZYXQ9UNr5QPIHGkE-IBAeE'=<A@?8\<|438765.R210).-&J$j('&}C#"!~}_{t:xwYXn4rqjonmf,jihgfH%]E[`Y^W{UZSXWPUTMq43ImM/EiI+A@dD=<;_?>=6|:32V654-Q10/('K+$)(!EfeBzyxw|u;\xqpo5mlqpohg-kjihJI_%cba`Y^W{>TYXWPt7SRQPOHGk.JIHAe?'=<;:?8\6;:981U5432+*)M-,%$)('~D${c!x>_utsxqpo5mlk1onmfN+ihgfe^F\"CBX]VUyYXQ9UTMqQJ2NMLKDhBG@?>bB$@987[5:9870Tu3210).-,%$HG'gf${A@?}_uzyxqpo5slqping-kdchg`_%]ba`Y}]\[T<RQVOsSRQ3IHGkKJI+A@dD=<;_?>=6|:32V05.-2+0/(L,+$#(!&}C#c!x}|u;yxwYutm3Tjinmle+LKgf_%cba`Y}]?>ZSRQuUNMRKPOHlF.JCBG@dDCB;_?>=<|{92V0v4-Q+*/.-&J*)(!~}C{zy~w=^]sxqpo5srqjRnmf,MLbgf_dc\"ZY^W{[ZYRvVUTMLp3ONMLEDhHGF?'C<`#?>7<;:32Vwv.-2+O/o-&J*)i!~}C{cy?}vu;yxwvXnm32SRngfe+ihJI_%cbDCYXW{U=SRWPt7MLKoONGLEi,HA@?c=<A@98=<;4X21054-Q10p.-&+$H(!~}C{cy?}v{tyr8punsrkjoh.Okdihgf_^$#a`BXWVzZ<XWPUTMq43IHMLEiC+AFEDC<;_?>~}5Y3876/.3,Pqp(',+*#G!&}${z@~w_{zyxwp6tsrqjRnmf,jihgfH%cbDCYXW{>=YXQu8NMLpJOHGkKJI+G@d>C<;:9>=6Z498165.-Q10)o'&J$)"!EfeBc!~}|u;\xqpo5srqjoh.lNMib(fH%]E[`Y^W{>ZSXQVOs65KPIHlL.JIHG@d>=BA@?8\6|:32V654ts+O)o'&Jk)"F&%${cy?}|^]s9Zvutmlk1onmfN+Lhgfedc\"CYX|?>TYXQPt7SRQPOHGkE-CHA@d'CBA@?>=<5Y92x6/S3210/o-&J$j"'~D${c!x>|{tyxq7oWsl2ponmfN+LKa'_^$\[`_^W{UTSRWVOsM5KoOHMFjJCHGF?cCB;@?87[;:z8765.R,1*/.-&%Ij('~}|Bc!x>_{tyr8vutsrTpoh.fN+ihg`_^$bD`_^W{>=YXQuU7SRKo2NGFjJ,HAF?>bB$:?8=6Z:3y76/St,+Opo'&%Ij(!~%|Bz@a}vuzs9wvXWsl2ponmfN+ihaIe^$baC_^]\UyYXWP8NrLQPImM/KJIBAe('C<`#"8=<;:3Wx0/43,P0po'&+$#(!E%|#"y~w=^]sxqpo5srTSihg-kjLKa'eG]ba`_XWVzT<RvVUTSRQPIm0FEDIHGF?>bB$@987[Z:9876v43,+O/o'K%$H(!&%$#z@~w_{zs9Zvutsrkpi/gfe+ihgfH%]E[`Y^W{[T<RQVOsS54PImMLK-IBfF?'=a$:?>7<54X876v43,+O/.n,+*)"F~f$#"!x>|uzyr8putmrqpoh.lkjLKa'HGcb[!_^]\[Z<RvP8TSRQPIm0FEDCBAeED=<;_?>=6|:32V05.-2+0/(L,+$#(!&}C{c!x>_{tyr8vutsrqpi/mlkjiba'e^cb[!_XW{[T<XWPt7MLKJImMLK-IBfF(D=<;_?!=<;4X8x6/St,+Opo'&%Ij(!~%|Bz@~w=^]yxq7Xtmlkj0nmfN+Lhgfedc\"CB^W\UySXWPUTMqQJ2NMLKDhHA@dD=<`#"8=<;:3W1w54-Q10/('Kl*)"Fg%|Bcb~w|u;yrZvun4rqpi/mONd*hgfH%]b[ZYX|\>=YXQuUTS54PImML.DhHA)E>bB;:?>7[;498765.RQrq)M'K+k)"'~}C#"!~w=^tyrwvutm3kSinmlkdib(I_^]\[!B^]\UyYXQ9UNr54Jn10LKJCgGF?cC<;@?>=6;4X21054-Q10)o'&J*)(!~}C{z!x}|u;\xqpo5srqpohg-NMib(fHGcb[!YA]\[Tx;WPUTMq4PONGLEDh+GF?>=aA:?87[;:z8765.R2+*)(Lm+*)"F&feBzb~}|uts9qvo5srkj0QPlejchg`&dFb[`Y}WV[TxXW9UNrRQJOHMFj-IHG@dD&B;_?!76;:3W70/S3,+*)M',+*#(!E%$dc!x>_{zsrq7unmlk1onmfN+LKa'HGcb[!_X@VzT<RQVOsSRQ3IHGkKJI+A@dD=<;_?>=6|:32V05.32+Op.'K+$j"'~D$#"!~w={tyxq7utVrqpingf,diha`_%cE[`Y}]\>=SwQ9UNrRQJImG/EJCHAe?>CBA:?87[54321U5ut,P0/.'&%$Hi!&}${Ab~w|u;yxwYutm3TSihmf,jchgf_%]E[`Y^W{>=YXWPOsSRQ3ONMFjJIHA@d'CB;:?8\6|:32Vw5.-210/(L,%k)"Fg%|#"!~}|ut:[qpotsrk1ongfe+Lhg`_^$EaZ_X]\UyYRWVUTMq43ImGFEJIBfeEDCBA#9]=6|:32V05.32+O/o-&JI)i!&%|B"!x}|u;yxZpotm3qpoQPlkd*KJ`edc\[!BXWV[ZSwWP8NMLpPIHGLEiIHGF(>C<A@9]=<|{381U5u-2+*Non&%Iji'&%|Bc!x>|{tyxq7utsrTSong-kjihgfH%cbDCYXW{>=YXQu8NMLpPINMLEiCBG@d>&<A@98\65Y981w/.32+O).-&+*#(!E%${c!x>_{tyr8Yutsl2pRhmfkjiha'eGcba`Y}]\>=SwWVUTMq43IHGkKJ,HG@d'CBA@?>=<5Yz810/S32r0)(-&Jk)"!&}C#zb~wv{t:[Zponm3qponmfN+iKg`_^$\aZ_XW{U=YXWPt7SRQPOHGk.JCBGF?cC<A:^>=<5:3W10/S32r0/(L,+$j(!EfeB"yxw={]yxwvo5mlqpohg-edcb('eGc\[!YA]\[TxXWP8TMqQJOHlLE-IBAe(D=<A@?>7[;432765.R210/o-&J$j"'~D$dc!x>v{zs9wYunmrk1onPOe+cbg`_%FEaZ~A@VzZ<XWPUTMq4PONGLEDh+GF?>=a$@9>7[;{32V0v4-Q10/('K+$)(!E%edzy~}|u;yxwvXWsl2pi/mONdiba'eGc\[!_^W\UZSwQ9UNrRQ32NMLEDh+*FEDCBA:^!~<;4Xy70Tut,+0)Mn&Jkj"F&%${cy?}v{tyr8vutVrkji/Plkjib(`Hd]#a`BX|\U=Sw:PUTSLKoONM/EiCHG@EDCB;_?>~}5Y9yx6543,P0/o-&J$j"'~D${c!x>v{tyrq7otsrk1ih.ledcbaf_%FE[Z_^WVzZ<XWPUTMqQ3ONMFjJIHA@d'CB;:?8\6|:32Vwv4-Q10).-,+*#G'&}${A!~`_{zs9Zvutsrkpi/mlNMiha'edF\[`_^W{>=YRQuONMRQJImGLEDhBGFEDC<;_?!7<5:981UT432+*)M',%*#G!g%${Aya}|u;srqvutsl2ponPled*ba`e^]#[Z_^W\UySRQPt7SRQPImGLKDhB*FE>b<;@?8=6Z{z870T43s+O)o'&J$)"!~}C#zb~w={]yxwvo5srqponmfN+iha`_%]E[`Y^W{>=YRQuONMRQJImGLEDhHAF?DCBA:^>~<;:3W165.-,P0)(-,%$#(!E%|#z@~w_{zs9wYXtsl2Sonmf,jihJI_%cba`_A@VzZYXWVUNrRQ32NMLEDhBGFEDC<;_?!=654X8x6/St,+Opo'&%I#('~D$dc!~}v<]\xqputm3qpongO,jLbaf_%cE[`Y}@V[TSw:PUNMqKPINMLEDhHGFE>&<`:?8=<5Y92765.RQ10/o-,+$Hih&%|{z@~}|^]yxq7uWmlqpi/mfN+iha`_%]E[`Y^W{>=YXWPOsSRQJn10FEJCgGF?'=a$@9]=6|:32V0/432+Op.'K+k#G'&feBc!x>|^]yxq7XWsrkji/.lNMiha'ed]ba`_X|V[ZSwQPtN6Lp3ONMLEDhBGFEDC<;_?>~}5Y9876v43,+Op.-&+$)"F~f|#"y~}|u;sr8YXtsl2ji/mfN+ihg`_^$bD`_^W{>=YXQuU7SRKoON0FEJIHAe?>C<A@9]=<5{3W76v43,+Opo'&%I#('~D$dc!~}v<]\xqputm3qponmfN+LKa'HGcb[!_X@VzZ<XWPUTMq4PImG/EJCHAeE'=B;@?>7[;49870T4t2+*)Mnm+$)(!Efe#zyx>_{tyr8YXtsl2Sinmlkjiba'eG]b[`Y}@V[TSw:POTSLpPIHGkK-IBf)?DCB;@?>7[;:z81U54t2+0).-&J$)"'~De{"y~w={]\xqpo5srqpohg-eMibg`_%F\[`_^W{[ZYX:PtT65QJn1MLKJCg*)ED=<`#"8=<;:3W76/u-,+Opo'&%Ij"'&}C{c!x}|ut:[wvun4rqpRh.Okdihgf_^$\aZY^]\[Tx;WPUTMq43IHMLEiC+AFEDC<;_?>~}5:9810T.32+0)(L&+*)(!~D${c!x>_{tsrwvun43TSoh.leMihgf_^]#a`BA]\[Tx;WPUTMqQP2NMLEJCHAeED=BA@?8\<|438765.R,r*)(L&+$)(!~%${Ab~w|u;yrZvun4Ukpi/mONdcha'edFEa`_X|\[Z<RvVUT65QJnmGLEDIBf)dDCBA#">7[|{9870Tu3,10).'K+k#G!g}|{A!a`|u;\xqputm3qponmfN+LKgf_%cba`YX|\[ZSRvVOTSLQPImGLEDIBAe(D=B;@?>7[5432V6v43,+O/o',+$#G'&%|#"!x>_{tyr8vXWsrk1Rngfkd*hgfH%cbDCYXW{>=YXQu8NMLpJINMFjJ,BAeEDCB;_?!=<;4X2765.3,1*N.-&+$Hih&%|{z@~}|{ts9wvunsrk1onPf,jiKg`_^$ba`BX|?UyYXQ9UTMqQPONM/EiIB*@EDC<;_?!~6;:3W16/.R2+*)Mn,%$#G!&%|{"y?w_{zyxwp65Vlqji/mfN+cha`_^$ba`BX|VUTYXWPt7MLKJImM/KJIBAe?'=<;_9>=<5492Vw5.3,10)M-,lk#G'gf|#"y?}_uzyxqpo5Vlqji/glkjib(`Hd]#aC_^]\Uy<;QVUNSLpPIHGk.JCBGF?cC<A:^>=<5:3W10/S32r0/(L,+$j(!EfeB"b~}v<zyxq7XWmlk1ohPfkdc)JI_d]b[!B^]\UyYXQ9UNrLQPINGLEiC+AFEDC<;_?!7<5:981U/.3,P0po'&%I)i!&%${z@~}|^]yxq7utVrkji/mlejc)JI_dc\[!_X]VUZSwQPtT6LQPImM/KJIBAe('C<`#"8=<;:3Wx6/.3,P0po'&+$H('&feB"!~`_{zs9qYutm3TSonmf,+cb(fedFEaZ~A@VzZ<XWPUTMqQPONM/EiCHG@dDCB;_"!=<5Y3y76/St,1*/.-,%Ij('~D${c!x>|{zyxwp6nsrkjoh.fkdcbg`&dFb[`Y}]\[=<XWPtNSRQJnNMFKJCg*)EDCB;_?!=<;4X276/S3210/o-&J$j"'~D$#"!a}|u;\xqputm3qponmfN+ihaIe^$\a`Y^WVzT<RvVUTSRQPIm0LEJCBfFEDC<;_?!=654X210/St,+O/o-,%$#G!~%|{A!~}_{t:[qpotsrk1ohmfe+Lha`ed]#a`BX|\[TYRvVUNMRKoINGFEJIBAe(D=<A@?8\6;43870/.R,10/('&J$j(!E}|#z!x>_{zyr8vXWsl2jihmle+Lhg`_^$E[!BXWV[ZSwWVU7SRKoON0FEJIHAe?D=<;_9>=<5492V0/.-Q1*/.'&%I)(!&}C#c!x}|u;\xqputm3TSihmf,jibg`&dFb[`YX|V[ZSwWVUT6Lp3ONMLEDhB*FE>bB$@?>=<5Y9876v43,+O/.n,+*)"F&%|dz@~`_uts9Zvutmlk1onmlNMcba'eG]\[Z_X|\UTYRvP8TSRQJnNMFEiC+A@EDCB;_?>=6|:32V654-Q10/('K+$)(!Efe{z!x>|ut:xZpotm3qponmfN+ihaIe^$ba`BX|\U=YXWPt7SRKJImM/KDhBGF?>=aA#">7[;{32V65.-,P0).'K+k)"!~}${A!x}|u;yxwYXn4lqpihg-kjibg`&dFEaZ~^]?[TxX:Pt7SRQPOHGkKDIBAe(DCBA:^8=<;492Vwv4-,+O/o-&J*j"!~D${cy?}v{tyr8vXWsrk1Rngfkd*hJ`ed]\"`B^W{[ZYX:VOsrRQ3IHGkK-IBfF(D=<;_?87[5{321U543,r*Non&%I)('~}${Aya}|u;\xwpon4rTSoh.Okdib(feG]\"ZY}W?UTx;WPUTMqQPO1GkE-IBA@dD=B;:?8\<;4981U5432+*)M'm%$)(!Ef$#"!~}v<z\xwpotm32poQPlkd*hJ`ed]\"CB^W\UySXWPUTMqQPOHGkjJIHA)?cCB;@?87[54321U5ut,Pqp('&Jkj"F&feBzb~w=^]srqpo5srqpihg-eMc)JI_dc\[!B^WVUy<XWVOs65KPIHGkKDCHAeED=BA@?8\<;432765.R21qp(L,+$j(!E}|#z!x>v{ts9qpotsrk1Rhmlkjc)gfH%cbaZYX|\[Z<Rv9OTMLp3ONMLEDhBA@?>bB$#9]765:981UT432+*)M-,lk#G'&%|d"y?}|^]s9ZYonmlk1onmfN+LKa'HGcb[!_X@VzZ<XWPUTMqKJONMLKDhB*FE>bB$@9]7<;:981U5u-2+*Non&+*)('~}C#z!x>vuts9wvXWsl2ponmfN+ihaIe^$ba`BX|?Uyx;WPUTMq43IHGkKJ,HG@d'=BA:?87[;4z816/4-Q10po'K+$j(!E}|#z!x>|{t:xq7utmrqpi/.lejihg`&dcb[`_^WVzZ<XWPUTMq43IHMLEiCHGFED=aA#"8=<;:3W7w5.-210/(L,%k)"Fg%|#"!~}|ut:[qpotsrk1onmlkdcb(fHG]#a`BXWVz=YRvVUNMRKoO10FEJCg*@E>=B;_?!7<54X81w/.32+O/o',+$)"F&feBc!x>|{tyxq7otsrkpi/mlkdcb(fHG]#DCY^WVzZ<XWPUTMqQPONM/EiIH*FE>bBA@?87[549870/St,+0/('K+$j"'~D${c!x>|{tyxq7uWsrqpi/Plkjchgf_^$\aZ_X]VzZYXWP8TMqQJOHlF.JCBG@d'=B;:?>7[;498765.RQrq)Mnm+*)"'~D$dc!~}v<zsxwpunsl2ponmfN+LKgf_^c\"`B^W{[Z<RvVUT65QJnmGLEDIBf)dD=<A:^>~6549270TS3s+O)o'&J$)"!E%${c!x>_{tyr8vXWsrk1ihgf,Mchgf_^$bD`_^W{U=YXWPtTS54PIm0/KJCBAeEDCBA#9]=6;4X876/.3210)(Lm+*#G'&feBz@~}|^]s9Zvutmlk1onmlNMcba'eGcba`Y}]\>=SwWVUTMqQPONMLKJCg*F?>=<A@?8\}54321UTut,+0)Mn&+*#('~D|#z!~}|ut:[Zpotm3Tjong-kjihgfH%]E[`Y^W{UZSXWPUTMqQJ2NGkE-IBA@dDCB$@9]7<;:981U/.3210/(L,+$j"'~D$#"!~w=^]s9qvunmrqpi/gf,Mchgf_^$bDZ_^]VzTSXWVUNrLQJONMLEDhBAe(DCBA:^8=<;492V6/u-,+O/('&+*#G'&feBz!x}|u;yxZvo5srkponmf,jLKa'eGc\[!_^]\[Z<Rv9OTMLpJOHlL.JIBfF(D=a$@9]~}5:32V6v43,+Opo'&%I)i!&%${z@~`_uts9Zvo5Vrqjing-Njchg`&^]#"`_^@VUTxXQ9UNr54JnH0LKJIBAe?DC<;_?!76;:3W76/u3,+*Non&%I#('~}C#"!a}v<]\xwpun4lqjonmf,Mchgf_^$bD`_^W{[T<XWPt7MLKoON0FEJIHAeE'C<A@?>7[;{32V65u32+Op.'K+k#G'&feB"b~}v<z\xwp6WVlqpih.fN+LKgfe^$bDCYXW{UTYRvVUTMqKPINMLEDhH*FEDC<;:^>7<5:3W76v43,+Op('&%*)"Fg%|#"!~}|ut:[qvon4Ukpi/Pledihg`&^]\a`_X|\[ZSRvVOTSLQPIm0FEDIHGF?>bB$@?>=6Z{z870T432+*)M'&+$Hi!&}|Bcb~w|u;yxq7utVrqpi/mONdiba'_^]ba`Y}@V[TSwWPONMq43ImML.DhBAF?>bB$#9]~<;43W76v43,+O/o-,%Ij('~D|#z@~}|ut:[Zponm3qponmfN+LKa'HGcb[!_X@VzZ<XWPUTMq4PImM/KDhg*FEDCBA:^>=6|:32Vwv4-Q1qp('&Jk)"!&}C{z!xw=uzyrwp6nm32pRhgle+ibJ`e^]#"CB^W\Uy<XWPtTMLpP2NGFEiC+G@EDCB;_987<;:9810Tu3,10).'KJ*)(!&}C#cyx}vu;yxwvXnm3kjihmle+Lha`ed]#a`_A@\[TxXWVONMLpPOHGk.DCHAeED=%A@?>=6Z4z210TA

round #57

submitted at
1 like

guesses
comments 3
essaie *known at the time as [author of #4]

just like iamcal's homespring.js implementation our program aims to be compliant with the 2005 proposed language standard put forth by our beloved Jeffrey Binder and also "jneem"

unfortunately because of the fishy nature of the language it is hard to find a canonical specification of it that works completely

as you have found out, the tio.run version is bugged (and in particular explodes if there is a "split" anywhere)

this is because JB himself wrote the Guile Scheme implementation with a silly parenthesis mismatch in one of his "map"

anyway, even the thing found here is slightly bugged because the Data.Char found on line 3 is treated as a Char token with many spaces in front, but it's what i worked with because everyone should have js

i also can't help but notice that it's still syntax highlighted like haskell


jan Keno

meow


author of author

memw meow


post a comment


ai5gum.hs Unicode text, UTF-8 text
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
-- // Universe 8y SansOfUndertale#9345 (UID: 414833316080910341) // --
-- ---- ------ -------- ----------  ---------- -------- ------ ---- --
import Data.Char  
neq n q = toUpper n /= toUpper q         
nem [] = []    
nem (h:t) = h : nem (filter (neq h) t)          
c = "Waffle, Reall wonderyful Do u ever dream about EATNG. waffle hnhng,, Sorrysorrysorry"             
x = "grow showing who .? GROW SHOWING WHO?!"        
s = nem [h | h <- c, elem h x]         
       
-- your soul evaporates now --
lisabeth = "I just have to bridge this gap of understanding; please bear with me here!! ! ! !"
holliday = "I rly rly just need to buy some time, so my friends can escape with their lives;"
writing = "it does n t seem like this plan will work -- I am still trying very hard, though !!"
really = "What the hell is a hatchery supposed to be, anyway? A  wise  Ard once told me!" 
funny = "He had snowmelt magic powers also.  She could even summon torrential snowmelt!"       
lmao = "                                                                                       "
rue = "You walked along the bridge some years ago.  The path ahead narrows but it's fine;"
me = "it does not split (you think).  The ground is marshy beneath, so very marshy where"
i = "the bridge is planted.  You are surprised that it can bear this weight, but you're"
am = "nearly to The Hatchery already.  You stop to pluck a rose, but it FUCKING PRICKS" 
not = "your SOFT DELICATE SKIN and you CRY an DOWNPOUR like a SNOWMELT 's worth of TEARS"
what = "oh by the POWERS ABOVE how could this HAPPEN to you? How HARSH a FATE imparted??"               
looks = "                                                                                             "
within = "DID YOU KNOW GUYS I HAVE A CON FES SION THOUGH I GUESS IT COULD BE PRETTY OBVIOUS H H H"
eternal = "I LOVE BEARS ! I LOVE BEARS ! MEOW MEOW I MEOW FOR BEARS & & ! YES I MEAN THE ANIMAL !"
darkness = "BUT LIKE ALSO GAY PERSON BEAR AA ! I WOULD SIT DOWN AND PLAY A HAND OF BRIDGE WITH"
hatchery = "ONE AND TAKE THAT L.   DO YOU THINK AUSTIN POWERS WOULD BE A SNOWMELT BEAR OR NAH???"   
bemoans = "                                                                                         "
deaths = "Urgh, er, I don't know what came over me. Sorry about that. I guess, like, maybe I should"
since = "apologize to the bear community as well? Just, like, bridge over troubled waters, clean "
life = "slate. I might -- I still need to get somewhere. A hatchery I think. Gosh. I keep getting so"
was = "distracted, like there's something keeping me away from myseBRRRRPRPRPRPPRAAAA PRESS F  TO "
it = "TO PAY YOUR RESPOECTS TO MY BRAIN POWERS TROLOL LOL CALL ME OLAF THE WAY I SNOWMELT UP IN THERE"
                                                                                        
--thats what it feels like. I think. she never did get very far. or very close.
--they're basically the same thing. the bridge was too long. and that was too much.
--hm. bridge? that almost reminds me of something. or someone.
--we evaporated?
    
that doesn't even make any sense like we thought maybe such lonely words could clear the path = putStrLn(the++'\n':words)
but the path narrows even though it'll never split and lead us astray towards marshy death = what

-- the bridge and the burden we bear on the way to the hatchery -- OOH. WHAT?! 
-- POWERS MARSHY SNOWMELT WAFFLE MARSHY SNOWMELT POWERS WAFFLE SNOWMELT POWERS MARSHY WAF-
                                                                                              
--no no nonono no nono no nono no onno on nono noim so close oh please i can't
--ok so um there's a bridge and the path narrows while we're still young. bear with me
--BEAR WITH ME AUGhagh it keeps happening every single time i just try to remember
--that the stupid path doesn't split and the path is marshy because the ground gets marshy
--because it can't bear the weight of the stupid bridge or something
--and like somewhere there's the
--there's the haTCHERY I'M SO CLOSE.

--but
--i just can't remember the    wise    Ard and their fortune-telling snowmelt powers
                                                                                             
is = "Rapids ?  Nobody said anything about rapids i don't think.  Rapids sound dangerous !"
sun = "Heck, i might need a backup clone or something !  Heh, wdym we're not doing sci-fi ?"
soft = "Well, here's a better question.  Do you wanna have a bad time ?  'Cause if you take"
light = "another step forward, well, you're REALLY not going to like what happens next. "
bridge = "Her singular, eightfold eye narrows and you almost feel your mind split into two !"
cries = "What ?  I'm not doing cringe roleplay, you're doing cringe roleplay !  Hmmm, something"
pain = "feels MARSHY unusual.  Is this BRIDGE real, after all ?  guys i want to hug a bear AND"
for = "AND SANS UNDER THE BRIck wall.  Nobody said anything about HATCHERY the bears THE HATCHERY"    
my = "IS HERE OHh and austin powers the snowmelt bear can join us too if you dont mind hehe"
tragedy forever never to be seen again because without your love we can't remember why we're here =c 
                                                                                                    
--  ||||||||||  ##################  ||||||||||  -- ------------- ######### -----------
--  ||||||  ####  ||||||||||||||  ####  ||||||  -- ------ ^ - ###|||||## -- , --------
--  ||||  ##  ||||||||||||||||||||||  ##  ||||  -- ---- ||:##||||||||||||||#:|==> ----
--  ||||  ##  |  tHaNkS_t0 OlIvIa  |  ##  ||||  -- --- -,:-#||#||||||||||||#--# ------
--  ||  ##  ||||||||||||||||||||||||||| ##  ||  -- -- ##||-==|||||||||#||#==-|## -----
--  ||  ##  ||||||||||||||||| ###### || ##  ||  -- -- ##|||##=||||||||||##|#||||## ---
--  ||  ##  ||||||||||||||||| ###### || ##  ||  -- -- ##|#||#::*######||##||#|#|## ---
--  ||  ##  | ###### |  ##  | ###### || ##  ||  -- - #|##|||#***##,,,##**##||#|||||# -
--  ||||  ##  ||||||  ######  ||||||  ##  ||||  -- - #||||#|#-   :#+#,  ,=#||||######
--  ||  ####  ##  ||||||||||||||  ##  ####  ||  -- - #||||#|######,,,####|:#||## -----
--  ||  ##    ######################    ##  ||  -- -- ##|||###-|||***|**+#||||## -----
--  ||  ##  ||  ##  ##  ##  ##  ##  ||  ##  ||  -- --- ##|||#|##*+---+*|||||||## -----
--  ||||  ####    ##############    ####  ||||  -- --- ##|||||||##:::#||||||||## -----
--  ||  ##########  ||||||||||  ##########  ||  -- #  ##|||||#############||||||##  #
--  | ##  ##############################  ## |  -- ###||##||#@@#########@##||##|||###
--  ####  ##    ##  ||  ##  ||  ##    ##  ####  --  #|||||||#@@@######@@@##||||||||# -
--  ##  ||  ##    ######  ######    ##  ||  ##  -- --- ##||#@@##|**#*#|##@@#|||## ----
-- #    ####  ######    ##    ######  ####    # -- -- ###||#@@##|##*#*|##@@#|||### ---
-- #  ||||  ##    ##  ||||||  ##    ##  ||||  # -- -- ##|||#@@##|##*#*|###@#||||## ---
-- #  ||||||  ##  ##  ||||||  ##  ##  ||||||  # -- -- ##|||#@#########|###|#||||## ---
--  ##  ||  ##  | ####  ||  #### |  ##  ||  ##  -- --- ##||############*####|||## ----
--  | ####  ##  | ##  ||||||  ## |  ##  #### |  -- ---- ##|#:#||||||||||#|:#||## -----
--  ||  ######  | ############## |  ######  ||  -- --- ##|||##|||#####|||##||||## ----
--  ||||  ####  | ############## |  ####  ||||  -- ---- #### #|||# - #|||# ##### -----
--  ||  ##################################  ||  -- --------- #|||# - #|||# -----------
--  ||  ################  ################  ||  -- --------- #|||# - #|||# -----------
--  ||||  ############  ||  ############  ||||  -- --------- #|||# - #|||# -----------
--  | ######  ||||  ##  ||  ##  ||||| ###### |  -- --------- #**## - #**## -----------
--  | ##  ||||||  ####  ||  ####  ||||||  ## |  -- --------- #|||# - #|||# -----------                        
--  ||  ##########              ##########  ||  --                                                           
                                                                                                              
main = that was really funny since i am really what looks within darkness (but soft
 what light within my hatchery cries it is my pain my life my sun) for it s me -- it was always supposed to be me

-- ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ --
--_________________________________________________________________________--
--___ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ___________________________________________________--
--___ Dearest Lisabeth, ___________________________________________________--
--_________________________________________________________________________--
--______ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ____________--
--______ Would it mean anything at all to say that I am sorry? ____________--
--_________________________________________________________________________--
--______ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ __--
--______ I am just so terrified of what is to come.  It would be so nice __--
--_________________________________________________________________________--
--___ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ____________________--
--___ just to mmet with you one last time.  Thank you. ____________________--
--_________________________________________________________________________--
--_________________________________________________________________________--
--_________________________________________________________________________--
--_________________________________________________________________________--
--_________________________________________________________________________--
--_________________________________________________________________________--
--_________________________________________________________________________--
--_________________________________________________________________________--
--_________________________________________________________________________--
--_________________________________________________________________________--
--_________________________________________________________________________--
--_____________________________________________ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ __________--
--_____________________________________________ Sincerely yours, __________--
--_________________________________________________________________________--
--________________________________________________ ¯¯¯¯¯¯¯¯¯¯¯¯ ___________--
--________________________________________________ Bio Holliday ___________--
--_________________________________________________________________________--
--_________________________________________________________________________--
--_________________________________________________________________________--
--_________________________________________________________________________--
--_________________________________________________________________________--
--_________________________________________________________________________--
-- ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ --





-- i was the snowmelt all along --

round #56

submitted at
1 like

guesses
comments 0

post a comment


cg56.py ASCII text, with very long lines (1238), with CR, LF line terminators
1
2
3
(lambda entry:(lambda sude,nkin:(lambda sex,regex:(lambda ruined,gaydar:(lambda bent:(lambda cc:(lambda hind,fore:nkin("unmatched ']'")if-1 in(hind)else(lambda clitoris:(lambda backroom,orifice,kleene:(lambda V,P,sh:(lambda bra:nkin("unmatched ')'")if-1==bra else(lambda kleened:nkin("nothing to repeat")if-1==kleened else(lambda SeanArcher:nkin("nothing to repeat")if-1 in(SeanArcher)else"expression cannot match anything"if not(SeanArcher)else sorted(SeanArcher[::-1],key=len)[0])([e for(e)in[V(P,V,s)for(s)in orifice(kleened)]if e!=None]))(kleene(bra)))(backroom(sh)))(lambda P,V,lost:(lambda professed:-1 if any(map(lambda E:type(E)==nkin,professed))else(None)if(None)in(professed)else''.join(professed))([P(V,P,e)if list==type(e)else(e)for(e)in lost]),lambda V,P,sh:(lambda bra:nkin("unmatched ')'")if-1==bra else(lambda kleened:nkin("nothing to repeat")if-1==kleened else(lambda CastorTroy:nkin("nothing to repeat")if-1 in(CastorTroy)else(None)if not(CastorTroy)else sorted(CastorTroy[::-1],key=len)[0])([e for(e)in[V(P,V,s)for(s)in orifice(kleened)]if e!=None]))(kleene(bra)))(backroom(sh)),[c for(s,e)in list(clitoris)for(c)in ruined[e+1:s]+[None]][:-1]))(lambda sh:(lambda parent:(lambda penis,heart:-1 if-1 in(penis)else(lambda
olus2000, WINS_code_guessing
:[c for i,(s,e)in sude(WINS_code_guessing)for(c)in sh[olus2000[i][1]+1:olus2000[i][0]]+[sh[s+1:e]]]+sh[olus2000[-1][1]+1:olus2000[-1][0]])((list(zip(heart+[len(sh)],[-1]+penis))),(zip(heart,penis))))(parent[0],parent[1]))(bent(sh,'(',')')),lambda sh:(lambda organ:[sh[e+1:s]for(s,e)in zip(organ+[len(sh)],[-1]+organ)])(gaydar(sh,1)),lambda sh:(lambda gspot:-1 if-1 in(gspot)else[c for i,c in sude(sh)if not i in gspot and not i+1 in gspot])([-1 if sh[e-1]in[1,7]or not(e)else(e)for(e)in(gaydar(sh,7))])))(zip(fore+[len(ruined)],[-1]+hind)))(cc[0],cc[1]))(bent(ruined,'[',']')))(lambda sh,n,f:(lambda fore,hind:([c for(c)in[(lambda no:-1 if(no<i)else(None)if(no>i)else D)(len([x for(x)in(fore)if x<D])-1)for(i,D)in sude(hind)]if c!=None],[D for(i,D)in sude(fore)if len([x for(x)in(hind)if x<D])==i]))(gaydar(sh,regex([n])[0]),gaydar(sh,regex([f])[0]))))([c for(i,s)in sude([entry[sex[i-1]+2:D]for(i,D)in sude(sex)])for(c)in regex(s)+[entry[sex[i]+1]]][:-1],lambda s,t:[i for(i,c)in sude(s)if c==t]))([i for(i,c)in sude(entry)if c=='\\'and(lambda s:len(s.split([c for(c)in s[::-1].split(s[-1])if c][0][0])[-1])%2)(entry[:i+1])]+[-2],lambda s:[{'(':0,')':5,'[':3,']':2,'|':1,'*':7}.get(c,c)for(c)in s]))(enumerate,SyntaxError))(input()+'69')

round #54

submitted at
0 likes

guesses
comments 0

post a comment


three-dimensional_rendering.py ASCII text, with CRLF line terminators
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
from turtle import Turtle  # We will be using turtle to draw!
from turtle import Screen  # :D
import math
import time
#import space  # delete later (they mustn't learn our secrets)

dot_product = lambda v1, v2: sum(map(lambda v1i, v2i: v1i * v2i, v1, v2))
vector_add = lambda v1, v2: list(map(lambda v1i, v2i: v1i + v2i, v1, v2))
magnitude = lambda v: math.sqrt(dot_product(v, v))  # Euclidean norm!
direction = lambda v: (lambda r: [vi / r if r else 0 for vi in v]) (magnitude(v))

## --- Defining useful classes --- ##

class Vertex:
    def __init__(self, loc):  # List of numbers
        self.loc = loc
        self.dim = len(loc)

    def copy(self):
        return Vertex(self.loc)

    def rotate(self, rotation, center):  # Assume rotation is a square matrix
        targ = len(rotation)

        truncated = self.dim > targ
        if truncated:
            ws = self.loc[:targ]
        else:
            ws = self.loc + [0] * (targ - self.dim)
        
        if center.dim > targ:
            wc = center.loc[:targ]
        else:
            wc = center.loc + [0] * (targ - center.dim)
        
        pulled = vector_add( ws, [-wci for wci in wc] )
        rotated = [dot_product(pulled, ro) for ro in rotation]
        pushed = vector_add(rotated, wc)

        if truncated:
            self.loc = pushed + self.loc[targ:]
        else:
            self.loc = pushed
        self.dim = max(self.dim, targ)

    def translate(self, translation):
        if self.dim < translation.dim:
            ws = self.loc + [0] * (translation.dim - self.dim)
            wt = translation.loc
        else:
            ws = self.loc
            wt = translation.loc + [0] * (self.dim - translation.dim)

        self.loc = vector_add(ws, wt)

    def stretch(self, scale, center):  # Could be done with a matrix also
        if self.dim < center.dim:
            ws = self.loc + [0] * (center.dim - self.dim)
            wc = center.loc
        else:
            ws = self.loc
            wc = center.loc + [0] * (self.dim - center.dim)

        radius = vector_add( ws, [-wci for wci in wc] )
        self.loc = vector_add( wc, [scale * ri for ri in radius] )

    def flatten(self):
        if self.dim <3 or self.loc[2] == 0:
            sign = 0
        else:
            sign = -.02 if self.loc[2] < 0 else .02  # Magic number :P

        # Funny perspective simulation
        scale = math.exp(sign * math.sqrt(magnitude(self.loc[2:])))

        x_funny = sum(p * (-1 if i % 4 < 2 else 1) / math.sqrt(i + 3) for i, p in enumerate(self.loc[3:]))
        y_funny = sum(p * (-1 if (i + 1) % 4 < 2 else 1) / math.sqrt(i + 3) for i, p in enumerate(self.loc[3:]))

        #return (self.loc[0], self.loc[1])  # Uncomment this to get isometric stuff!
        return (scale * (self.loc[0] + x_funny), scale * (self.loc[1] + y_funny))

class Edge:
    def __init__(self, head, tail):  # Two Vertex objects
        self.head = head
        self.tail = tail

    def copy(self):
        return Edge(self.head.copy(), self.tail.copy())

    def rotate(self, rotation, center):
        self.head.rotate(rotation, center)
        self.tail.rotate(rotation, center)

    def translate(self, translation):
        self.head.translate(translation)
        self.tail.translate(translation)

    def stretch(self, scale, center):
        self.head.stretch(scale, center)
        self.tail.stretch(scale, center)

    def flatten(self):
        return (self.head.flatten(), self.tail.flatten())

class EdgeBunch:
    def __init__(self, edges, center):  # List of Edge objects
        self.lines = edges
        self.center = center
        self.verts = set([])
        for l in edges:
            self.verts.add(l.head)
            self.verts.add(l.tail)

    def copy(self):
        return EdgeBunch([l.copy() for l in self.lines], self.center.copy())
    
    def rotate(self, rotation, center):
        for line in self.lines:
            line.rotate(rotation, center)
        self.center.rotate(rotation, center)

    def translate(self, translation):
        for line in self.lines:
            line.translate(translation)
        self.center.translate(translation)

    def stretch(self, scale, center):
        for line in self.lines:
            line.stretch(scale, center)
        self.center.stretch(scale, center)

    def flatten(self):
        return (line.flatten() for line in self.lines)  # Iterator is easier later!

    def absorb(self, other):
        for line in other.lines:
            self.lines.append(line.copy())

class Programme:
    def __init__(self, cast, script):
        self.cast = cast      # List of EdgeBunch objects
        self.script = script  # List of tuples
    
    def do(self):
        for who, action, args, reps in self.script:
            thing = self.cast[who]
            call = len(args)
            for i in range(reps):
                time.sleep(.05)
                t.clear()
                if call == 2:
                    eval("thing." + action + "(args[0], args[1])")
                elif call == 3:
                    eval("thing." + action + "(args[0], args[1], args[2])")
                else:
                    raise ValueError()  # I really can't be bothered
                draw(t, thing)          # see?

## --- Defining useful functions --- ##

# These ones are the shape-makers

def regular_polygon(sides, radius, center):
    first = Vertex([0, radius])
    first.translate(center)
    
    points = [first]
    angle = 2 * math.pi / sides
    turn = [[math.cos(angle), -math.sin(angle)],
            [math.sin(angle),  math.cos(angle)]]
    for i in range(sides - 1):
        another = points[-1].copy()
        another.rotate(turn, center)
        points.append(another)

    return EdgeBunch([Edge(points[i - 1], points[i]) for i in range(sides)], center.copy())

def new_simplex(radius, center, dim):  # May not actually, er, be centered at the center :P
    if dim == 2:
        return regular_polygon(3, radius, center.copy())
    prev = new_simplex(radius * math.sqrt(1 - (1 / dim)**2), center, dim - 1)
    depth = [0] * (dim - 1) + [- 1 / dim]
    prev.translate(Vertex(depth))
    addition = Vertex(depth[ :-1 ] + [radius])
    lines = []
    for line in prev.lines:
        lines.append(line)
    for point in prev.verts:
        lines.append(Edge(addition, point))
    
    return EdgeBunch(lines, center.copy())

def new_cube(radius, center, dim):
    if dim == 2:
        return regular_polygon(4, radius, center.copy())
    halfside = radius / math.sqrt(dim)
    #print(radius, halfside)
    near = new_cube(halfside * math.sqrt(dim - 1), center, dim - 1)
    far = near.copy()
    depth = [0] * (dim - 1)
    near.translate(Vertex(depth + [halfside/2]))  # This doesn't make sense
    far.translate(Vertex(depth + [-halfside]))
    lines = []
    for nline, fline in zip(near.lines, far.lines):
        lines.append(Edge(nline.tail.copy(), fline.tail.copy()))
        lines.append(nline.copy())
        lines.append(fline.copy())
    frame = EdgeBunch(list(set(lines)), center.copy())

    return frame

def new_orthoplex(radius, center, dim):
    if dim == 2:
        return regular_polygon(4, radius, center)
    base = new_orthoplex(radius, center, dim - 1)
    above = Vertex([0] * (dim - 1) + [radius])
    below = Vertex([0] * (dim - 1) +[-radius])
    lines = []
    for vert in base.verts:
        lines.append(Edge(above.copy(), vert.copy()))
        lines.append(Edge(below.copy(), vert.copy()))
    pot = EdgeBunch(lines, center.copy())
    pot.absorb(base)

    return pot

def tetrahedron(radius, center):
    return new_simplex(radius, center, 3)

def hexahedron(radius, center):
    return new_cube(radius, center, 3)

def octahedron(radius, center):
    return new_orthoplex(radius, center, 3)

def icosahedron(radius, center):
    phi = (1 + math.sqrt(5)) / 2
    pent_rad = math.sqrt((5 + math.sqrt(5)) / 10) * radius
    top = regular_polygon(5, pent_rad, center)
    bottom = regular_polygon(5, pent_rad, center) # (;
    angle = 9 * math.pi / 10
    turn = [[math.cos(angle), -math.sin(angle)],
            [math.sin(angle),  math.cos(angle)]]
    bottom.rotate(turn, center) # ;)
    top.translate(Vertex([0, 0, radius * math.sqrt(3) / 8]))
    bottom.translate(Vertex([0, 0, -radius * math.sqrt(3) / 8]))
    crown = Vertex([0, 0, radius * math.sqrt(phi**2 + 1) / 2])
    boots = Vertex([0, 0,-radius * math.sqrt(phi**2 + 1) / 2])
    lines = []
    for tline, bline in zip(top.lines, bottom.lines):
        lines.append(tline.copy())
        lines.append(bline.copy())
        lines.append(Edge(tline.head.copy(), bline.head.copy()))
        lines.append(Edge(tline.head.copy(), bline.tail.copy()))
        lines.append(Edge(tline.head.copy(), crown.copy()))
        lines.append(Edge(bline.tail.copy(), boots.copy()))

    return EdgeBunch(lines, center.copy())

def dodecahedron(radius, center):  # Bleh.
    pass

def pentachoron(radius, center):
    return new_simplex(radius, center, 4)

def octachoron(radius, center):
    return new_cube(radius, center, 4)

def hexadecachoron(radius, center):
    return new_orthoplex(radius, center, 4)

def icositetrachoron(radius, center):
    pass

def dodecacontachoron(radius, center):  # Sorry, 120-cell.
    pass

def hexacosichoron(radius, center):
    pass

# These ones are the water closets

def draw_line(t, line, color=None):
    head, tail = line
    if color: t.pencolor(color)
    t.pu()
    t.goto(head[0], head[1])
    t.pd()
    t.goto(tail[0], tail[1])

def draw(t, edgebunch, color=None):
    for line in edgebunch.flatten():
        draw_line(t, line, color)

def next_render(x, y):
    global track_number, programmes
    track_number = (track_number + 1) % len(programmes)

def prev_render(x, y):
    global track_number, programmes
    track_number = (track_number - 1) % len(programmes)

## --- Starting the Turtle stuff --- ##

s = Screen()
H = s.window_height()
W = s.window_width()
s.setworldcoordinates(- W / 2, - H / 2,
                        W / 2,   H / 2)
s.delay(0)
t = Turtle()
t.speed(0)
t.ht()

s.title("Click to change model! Escape to escape!")
s.onkey(s.bye, "Escape")
s.onclick(next_render, btn=1)
s.onclick(prev_render, btn=2)
s.listen()

## --- Everything we will be showcasing! --- ##

track_number = 0
programmes = []

origin = Vertex([0, 0])
lpoint = Vertex([-75, 0])
rpoint = Vertex([0,  75])
test_rotat = [
    [math.cos(math.pi/58), 0, math.sin(math.pi/58)],
    [             0, 1, 0],
    [-math.sin(math.pi/58), 0, math.cos(math.pi/58)]
]
fast_rotat = [
    [math.cos(math.pi/18), 0, math.sin(math.pi/18)],
    [             0, 1, 0],
    [-math.sin(math.pi/18), 0, math.cos(math.pi/18)]
]
oter_rotat = [
    [math.cos(math.pi/48), -math.sin(math.pi/48), 0],
    [math.sin(math.pi/48),  math.cos(math.pi/48), 0],
    [              0,              0, 1]
]

four_rotat = [
    [math.cos(math.pi/58), 0, -math.sin(math.pi/58), 0],
    [0, math.cos(math.pi/38), 0, -math.sin(math.pi/38)],
    [math.sin(math.pi/58),  0, math.cos(math.pi/58), 0],
    [0, math.sin(math.pi/38), 0,  math.cos(math.pi/38)],
]

square_rotating = Programme([regular_polygon(4, 300, origin)], [(0, 'rotate', [oter_rotat, origin], 1)])

square_3d = Programme([regular_polygon(4, 300, origin)], [(0, 'rotate', [test_rotat, origin], 1)])

funny_square = regular_polygon(4, 150/math.sqrt(2), lpoint)
funny_square.rotate([[math.cos(math.pi/8),-math.sin(math.pi/8)],[math.sin(math.pi/8),math.cos(math.pi/8)]], lpoint)
funny_rotate = Programme([funny_square], [
    (0, 'rotate', [fast_rotat, rpoint], 7),
    (0, 'rotate', [fast_rotat, lpoint], 7)])

boring_tetra = Programme([new_simplex(200, origin, 3)], [(0, 'rotate', [test_rotat, origin], 1)])

fun_cube = Programme([icosahedron(200, origin)], [(0, 'rotate', [test_rotat, origin], 1)])

actual_cube = Programme([new_cube(200, origin, 3)], [(0, 'rotate', [test_rotat, origin], 1), (0, 'rotate', [oter_rotat, origin], 1)])

roll_d8 = Programme([new_orthoplex(200, origin, 3)], [(0, 'rotate', [test_rotat, origin], 1), (0, 'rotate', [oter_rotat, origin], 1)])

guess_what = Programme([new_cube(200, origin, 4)], [(0, 'rotate', [four_rotat, origin], 1), (0, 'rotate', [oter_rotat, origin], 1)])

i_am_going_insane = Programme([new_simplex(200, origin, 4)], [(0, 'rotate', [four_rotat, origin], 1), (0, 'rotate', [oter_rotat, origin], 1)])

#please_send_help = Programme([new_orthoplex(200, origin, 4)], [(0, 'rotate', [four_rotat, origin], 1), (0, 'rotate', [oter_rotat, origin], 1)])
# Lol this one isn't working nicely

programmes = [
    square_rotating,
    square_3d,
    funny_rotate,
    boring_tetra,
    fun_cube,
    actual_cube,
    roll_d8,
    guess_what,
    i_am_going_insane,
    #please_send_help,
]

while True:
    programmes[track_number].do()

# With some modification, you can easily make your own programmes!
# There's room available for shows with multiple actors, if you can get
# turtle drawing fast enough :3

round #53

submitted at
2 likes

guesses
comments 2
essaie *known at the time as [author of #5]

Hello. I apologize for my lateness. I was watching cinema. Use the function valid (drawng)', where drawng' refers to an input string.


essaie *known at the time as [author of #5]

i hope yall appreciate my code alignment haha, also WOW they hate my smartquotes


post a comment


box_drawng_validity.py Unicode text, UTF-8 text, with CRLF line terminators
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
## Python Version 3.9.7
## There was no `golfing' tomfoolery involved.
## Forsake your place in   clementine  heaven.
## For eso-limes guessed a puzzle   is solved.

def trans (gender):  # Self-explanatory.
    nature = [''] * len (gender [0])
    for facet in gender:
        for f, m in enumerate (facet):
            nature [f] += m
    return  nature

def agree (policy, voters):  # Self-explanatory.
    votes = 0
    for voter in voters:
        votes += policy .count (voter)
    return votes == len (policy)

def fluff (pillow):  # Self-explanatory.
    spine  = [len (thread) for thread in pillow]
    skull  =  max (spine )
    fluffy = [pillow [i] + ' ' * (skull - n)
              for i, n in enumerate (spine)]
    return fluffy

def crush ():  # See docstring for more info.
    """Makes code more concise.

    Args: none

    Returns:
        None

    Side-effects:

        NONE
    """
    return None

def heads (bodies, skulls):  # Self-explanatory.
    cleft, wrung = skulls
    grvyrd = [ ]
    print  = - 1
    for crack, femur in enumerate (bodies):
        if  femur == cleft: print = crack
        if  femur == wrung and  not print == - 1:
            grvyrd +=    [ (print , crack) ]
            print   = - 1
    return  grvyrd

def touch (finger, lovers):  # Self-explanatory.
    tween = lambda adult, child: lambda x: adult < x and x < child
    veins = {taste [0] for taste in lovers}
    atrys = {taste [1] for taste in lovers}
    return ((finger [0] in veins
             and tween (min (atrys), max (atrys)) (finger [1]))
         or (finger [1] in atrys
             and tween (min (veins), max (veins)) (finger [0])))

def spike (drinks, powder, corpus, corpse):  # Don't do this. Don't condone this.
    g,u,r ,d     = powder;
    return [ (i * (1 < e) + [g, r, g, u] [e] [0], i * (e < 2) + [g, r, g, u] [e] [1])
             for e, t in enumerate ([corpus [g [0]] [g [1] : u [1]],
                                     corpus [r [0]] [r [1] : d [1]],
                                     corpse [g [1]] [g [0] : r [0]],
                                     corpse [u [1]] [u [0] : d [0]]])
             for i, crime in enumerate (t) if crime in  drinks [e]]

def trace (legacy, estate, future, killer, towers, memory, crunch):  # Self-explanatory.
    bucket = [3, 4, 1, 2]
    fauna = lambda point, sight: (point [0] + (sight - 2 if sight % 2 else 0),
                                  point [1] + (0 if sight % 2 else sight - 3))
    keith = future [estate [legacy [0]] [legacy [1]]] (fauna)
    flora = fauna  (legacy, keith)
    laura = estate [flora [0]] [flora [1]]
    turns = []
    while laura in future:
        views = future [laura] (bucket [keith - 1])
        if (keith - views) % 2:
            turns .append (flora)
        try:
            keith = views
            flora = fauna (flora, views)
            laura = estate [flora [0]] [flora [1]]
        except IndexError:
            return          False
        if not laura in memory [keith - 1]:
            return          False
        if laura in killer: break
    if not laura in killer: return   False
    if sum (crunch (flora, magic)for magic in towers):
        return     (flora,[legacy] + turns + [flora])
    else:
        return                       False

def clean (skirts, stains): # Self-explanatory
    fresh = skirts
    for speck , stain in enumerate (stains [: - 1]):
        scrub = stain
        xtend = stains [speck + 1]
        g     = xtend [1] - scrub [1]
        flake = g if g else xtend [0] - scrub [0]
        flake = flake // abs (flake)
        while not scrub == xtend:
            s,b = scrub
            scent = fresh [s]
            fresh [s] = scent [: b] + ' ' + scent [b + 1 :]
            scrub = (s + (0 if g else flake),
                     b + (flake if g else 0))
    return fresh

def flesh (packet, scream):  # Self-explanatory
    return '' .join (scream [blood] [bones]
                     for blood in range (packet [0] [0] + 1, packet [- 1] [0])
                     for bones in range (packet [0] [1] + 1, packet [- 1] [1]))

def valid (drawng):  # Whether or not it is a valid box drawing according to the.
    the_following_characters = '─│┌┐└┘├┤┬┴'
    news = print
    tfciatsan = the_following_characters + ' ' + '''
'''
    numb = enumerate
    if not agree (drawng, tfciatsan): return news (
        'inputs always consist exclusively huh well i guess you"re just a liar huh'
    );
    mack = max
    bottom_primary = []
    shet = set
    accordion =      []
    glen = len
    wardrobes =      []
    drawing = drawng .split (tfciatsan [- 1])
    drawing = fluff (drawing)
    widesay = trans (drawing)
    top_candidates          = [                                                ]
    for treat, candy in numb    (         drawing                            ):
        for cadaver in heads    (  candy              , ( '┌' ,         '┐') ):
            top_candidates += [ ( (treat, cadaver [0]), (treat, cadaver [1]) ) ]
    crush                       (                                            )
    for tap, tip in top_candidates:
        wall = drawing [mack (tap [0], tip [0])] [tap [1] + 1 : tip [1]]
        if agree (wall, tfciatsan [: : 9]):
            bottom_primary .append ((tap, tip))
    leftists = [l for l, r in bottom_primary]
    righties = [l for r, l in bottom_primary]
    switch_friends = []
    for mark, carl in numb (leftists):
        car, los = carl
        for benefit in heads (widesay [los], ('┌', '└')):
            if  benefit [0] == car and agree (
                widesay [los] [car + 1 : benefit [1]],
                tfciatsan     [1   :   :          6 ]
    ):
                for bet in heads (widesay [righties [mark] [1]], ('┐', '┘')):
                    berlin  = widesay [righties [mark] [1]]
                    if bet == benefit and agree (berlin    [car + 1 : bet [1]],
                                                 tfciatsan [ 1  :   :      5]):
                        switch_friends += [ (carl,
                                                       righties [mark],
                                             (bet [1],                 los),
                                             (bet [1], righties [mark] [1]))
                        ];
                        break
                break
    boxes = [swinger
             for swinger in switch_friends
             if agree (
                 drawing [swinger [- 1] [0]] [swinger [0] [1] + 1 : swinger [1] [1]],
                 tfciatsan [: : 8]
             )]
    for gawks in boxes:
        if not agree (flesh (gawks, drawing), ' '): return news (
            'but can"t contain each other (or anything that isn"t empty space)'
        );
    furry = spike  # woof woof amirite or am i writ -ing incredible code
    for box, cube in numb (boxes):
        for tuft in furry (tfciatsan [9 : 5 : - 1],
                           cube,
                           drawing,
                           widesay
        ):
            lock =  trace (tuft,
                           drawing,
                           {
                               tfciatsan [0] : lambda x: 6 - x,
                               tfciatsan [1] : lambda x: 4 - x,
                               tfciatsan [2] : lambda x: 7 - x,
                               tfciatsan [3] : lambda x: 5 - x,
                               tfciatsan [4] : lambda x: 5 - x,
                               tfciatsan [5] : lambda x: 3 - x,
                               tfciatsan [6] : lambda x: 4,
                               tfciatsan [7] : lambda x: 2,
                               tfciatsan [8] : lambda x: 3,
                               tfciatsan [9] : lambda x: 1,
                           },
                           tfciatsan [6 : 10],
                           boxes,
                           [
                               tfciatsan [1 : 4] + tfciatsan [6 : 9],
                               tfciatsan [: 9 : 2] + tfciatsan [9],
                               tfciatsan [4 : 8] + tfciatsan [1 : : 8],
                               tfciatsan [: : 8] + tfciatsan [3 : 10 : 2],
                           ],
                           touch,
            );
            if  not   lock:           continue
            if touch (lock [0], cube): return news (
                'the dreaded mushroom'
            );
            accordion .append (lock  [         1            ]     )
            wardrobes .append ((box, [i for i, b in numb (boxes)
                                      if touch (lock [0], b)] [0]))
    for hug in wardrobes:
        if 1 < wardrobes .count (hug): return news (
            'the dreaded anvil'
        );
    disgusting = [[crumb [0], crumb [1], crumb [3], crumb [2], crumb [0]] for crumb in boxes]
    for bug in accordion:
        if not bug[: : - 1] in disgusting: disgusting += [bug]
    for __ in disgusting: drawing = clean (drawing, __)
    return agree (' ' .join (drawing), ' ')

    # you should be able to tell that im not lyricly, at least

round #52

submitted at
1 like

guesses
comments 0

post a comment


thue mors eseq uenc e.py ASCII text, with CRLF line terminators
1
2
3
4
q = '0'

while (q := q + ''.join(["10"[int(c)] for c in q])):
    input("I'm generating larger Thue-Morse words each time you hit enter... unfortunately, I haven't learned how to output them yet :c  Are you sure you want to continue?")