diff --git a/fizz-buzz-1/description.md b/fizz-buzz-1/description.md index 3eac10a..eda6cd1 100644 --- a/fizz-buzz-1/description.md +++ b/fizz-buzz-1/description.md @@ -1,9 +1,17 @@ -Write a program that outputs the numbers 1 through n, in incremental order, one per line. +Write a program that takes an integer `n` as input. -However, replace any line that is a multiple of 3 with "Fizz" and any that are a multiple of 5 with "Buzz". Any line that is a multiple of 3 and 5 should be written as "FizzBuzz". +Output the numbers 1 through `n`, in increasing order, one per line. + +However, replace any line that is a multiple of 3 with `Fizz` and any that are a multiple of 5 with `Buzz`. Any line that is a multiple of 3 and 5 should be written as `FizzBuzz`. The input will be the number of lines to write, n, followed by a linebreak. +Sample input: + +``` +17 +``` + Sample output: ``` @@ -12,14 +20,16 @@ Sample output: Fizz 4 Buzz - -... - +Fizz +7 +8 +Fizz +Buzz +11 +Fizz 13 14 FizzBuzz 16 17 - -... ``` \ No newline at end of file diff --git a/fizz-buzz-1/grader.py b/fizz-buzz-1/grader.py index d5a341a..4233db8 100644 --- a/fizz-buzz-1/grader.py +++ b/fizz-buzz-1/grader.py @@ -1,4 +1,12 @@ -def grade(random, key): - if key.find("PUT A NEW KEY HERE!!!!") != -1: - return True, "Correct!" - return False, "Nope." \ No newline at end of file +n = input() + +for i in range(1, n + 1): + if i % 3 == 0 and i % 5 == 0: + print 'FizzBuzz' + elif i % 3 == 0: + print 'Fizz' + elif i % 5 == 0: + print 'Buzz' + else: + print i + diff --git a/library/description.md b/library/description.md index 1bab618..8d975aa 100644 --- a/library/description.md +++ b/library/description.md @@ -2,10 +2,10 @@ Your librarian has a 2-row bookshelf that can contain N books in each row. She w Input: the integer, N (1<=N<=2^1024) -Output: the number of ways you can place red-colored books and blue-colored books onto the bookshelf. Since this number might be really big, output it mod 10^9+7. +Output: the number of ways you can place red-colored books and blue-colored books onto a N-column bookshelf. Since this number might be really big, output it mod 10^9+7. Example: -Input: 3 +Input: 2 Your valid bookshelf layouts are: ``` diff --git a/library/generator.py b/library/generator.py new file mode 100644 index 0000000..ea66ed5 --- /dev/null +++ b/library/generator.py @@ -0,0 +1,11 @@ +import random +C = input() + +if C==1: + print 1 +elif C==2: + print 2 +elif C==3 or C==4: + print random.randint(3, 100) +else: + print random.randint(2**(C**3-1), 2**(C**3)) diff --git a/library/grader.py b/library/grader.py new file mode 100644 index 0000000..b98e56c --- /dev/null +++ b/library/grader.py @@ -0,0 +1,39 @@ +x = input() + 1 + +mat = [[0,0,1,0],[0,1,0,1],[1,0,2,0],[0,2,0,1]] +mod = 10**9+7 + +def egcd(a, b): + if a == 0: + return (b, 0, 1) + else: + g, y, x = egcd(b % a, a) + return (g, x - (b // a) * y, y) + +def modinv(a, m): + g, x, y = egcd(a, m) + if g != 1: + raise Exception('modular inverse does not exist') + else: + return x % m + +def matmult(mtx_a, mtx_b, mod): + tpos_b = zip( *mtx_b) + rtn = [[ sum( ea*eb for ea,eb in zip(a,b))%mod for b in tpos_b] for a in mtx_a] + return rtn + +def trace(A): + return sum(A[j][j] for j in range(len(A))) + +def matpow(A, p): + ret = A + for bit in bin(p)[3:]: + ret = matmult(ret, ret, mod) + if bit=='1': + ret = matmult(ret, A, mod) + return ret + +inv4 = modinv(4, mod) +ans = trace(matpow(mat, x))%mod +ans = (ans * inv4)% mod +print ans diff --git a/library/problem.yml b/library/problem.yml new file mode 100644 index 0000000..4d77da8 --- /dev/null +++ b/library/problem.yml @@ -0,0 +1,10 @@ +author: arxenix +title: library +category: Programming +autogen: false +programming: true +value: 75 + +test_cases: 10 +time_limit: 1000 +memory_limit: 256000 diff --git a/library2/description.md b/library2/description.md index 9e733f0..449651a 100644 --- a/library2/description.md +++ b/library2/description.md @@ -28,3 +28,7 @@ Output: ``` 1 ``` + +Explanation: + +If you understand the word 'ok', you can understand the word 'blah'. If you understand 'ok' and 'blah', you can understand 'iz'. 'iz', and 'ok' lets you understand 'yiq'. 'yiq', 'iz', and 'blah' let you understand 'arggiq'. diff --git a/rsa3/description.md b/rsa3/description.md index c61c847..a01623f 100644 --- a/rsa3/description.md +++ b/rsa3/description.md @@ -1,5 +1 @@ -<<<<<<< HEAD -I found somebody's notes on their private RSA! Help me crack [this](${ciphertext_txt}). -======= -We came across another [message]($rsa3) that follows the same cryptographic schema as those other Really Scary Admin messages. Take a look and see if you can crack it. ->>>>>>> 93577ddee37a489cf0aa1a4b987d23a3bc3d2657 +We came across another [message]($rsa3) that follows the same cryptographic schema as those other RSA messages. Take a look and see if you can crack it. diff --git a/rsa3/grader.py b/rsa3/grader.py index 4f6a800..e9ca30f 100644 --- a/rsa3/grader.py +++ b/rsa3/grader.py @@ -1,56 +1,4 @@ -<<<<<<< HEAD -from cStringIO import StringIO - -flag = "wh3n_y0u_h4ve_p&q_RSA_iz_ez" - -def modx(base,exp,mod): - r = 1; - while (exp > 0): - if (exp % 2 == 1): - r = (r * base) % mod - base = (base * base) % mod - exp = exp/2 - return r - -def probprime(s): - if s%2==0: - s += 1 - smolprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] - while len(set([modx(i,s-1,s) for i in smolprimes])) != 1 or modx(2,s-1,s) != 1: - s+=2 - return(s) - -def get_problem(random): - # add Probable Prime function later - p = probprime(random.randint(3*10**79,4*10**79)) - q = probprime(random.randint(3*10**79,4*10**79)) - e = 3 - salt = "".join([random.choice("0123456789abcdef") for i in range(8)]) - return (p, q, e, salt) - -def generate_ciphertext(random): - p, q, e, salt = get_problem(random) - encoded = int(("easyctf{%s_%s}" % (flag, salt)).encode('hex'),16) - ciphertext = 'p: '+str(p)+'\n' - ciphertext += 'q: '+str(q)+'\n' - ciphertext += 'e: '+str(e)+'\n' - ciphertext += 'c: '+str(pow(encoded, e, p*q))+'\n' - - return StringIO(ciphertext) - -def generate(random): - return dict(files={ - "ciphertext_rsa1.txt": generate_ciphertext - }) - -def grade(random, key): - n, salt = get_problem(random) - if key.find("%s_%s" % (flag, salt)) >= 0: - return True, "Correct!" - return False, "Nope." -======= def grade(autogen, key): if key.find("tw0_v3ry_merrry_tw1n_pr1m35!!_417c0d") != -1: return True, "Really Superb! Applause!" return False, "RIP" ->>>>>>> 93577ddee37a489cf0aa1a4b987d23a3bc3d2657 diff --git a/rsa3/problem.yml b/rsa3/problem.yml index 8ff5a4d..10bc296 100644 --- a/rsa3/problem.yml +++ b/rsa3/problem.yml @@ -1,19 +1,9 @@ -<<<<<<< HEAD -title: RSA 1 -author: neptunia -hint: Go google RSA if you're stuck. -category: Cryptography -autogen: true -programming: false -value: 25 -======= author: blockingthesky title: RSA 3 hint: You might want to read up on how RSA works. category: Cryptography autogen: false programming: false -value: 70 +value: 135 files: - rsa3 ->>>>>>> 93577ddee37a489cf0aa1a4b987d23a3bc3d2657 diff --git a/rsa4/description.md b/rsa4/description.md deleted file mode 100644 index 2d61669..0000000 --- a/rsa4/description.md +++ /dev/null @@ -1 +0,0 @@ -We came across another [message]($rsa4) that follows the same cryptographic schema as those other RSA messages. Take a look and see if you can crack it. \ No newline at end of file diff --git a/rsa4/description.md.BACKUP.137.md b/rsa4/description.md.BACKUP.137.md deleted file mode 100644 index 68f5e9f..0000000 --- a/rsa4/description.md.BACKUP.137.md +++ /dev/null @@ -1,8 +0,0 @@ -<<<<<<< HEAD -<<<<<<< HEAD -I found somebody's notes on their private RSA! Help me crack [this](${ciphertext_txt}). -======= -We came across another [message]($rsa3) that follows the same cryptographic schema as those other Really Scary Admin messages. Take a look and see if you can crack it. ->>>>>>> 93577ddee37a489cf0aa1a4b987d23a3bc3d2657 -======= ->>>>>>> f9a58afef003d40f3ada9c1645eda26363521cf3 diff --git a/rsa4/description.md.BACKUP.20.md b/rsa4/description.md.BACKUP.20.md deleted file mode 100644 index 68f5e9f..0000000 --- a/rsa4/description.md.BACKUP.20.md +++ /dev/null @@ -1,8 +0,0 @@ -<<<<<<< HEAD -<<<<<<< HEAD -I found somebody's notes on their private RSA! Help me crack [this](${ciphertext_txt}). -======= -We came across another [message]($rsa3) that follows the same cryptographic schema as those other Really Scary Admin messages. Take a look and see if you can crack it. ->>>>>>> 93577ddee37a489cf0aa1a4b987d23a3bc3d2657 -======= ->>>>>>> f9a58afef003d40f3ada9c1645eda26363521cf3 diff --git a/rsa4/description.md.BASE.137.md b/rsa4/description.md.BASE.137.md deleted file mode 100644 index 6f6a960..0000000 --- a/rsa4/description.md.BASE.137.md +++ /dev/null @@ -1 +0,0 @@ -We came across another [message]($rsa3) that follows the same cryptographic schema as those other Really Scary Admin messages. Take a look and see if you can crack it. \ No newline at end of file diff --git a/rsa4/description.md.BASE.20.md b/rsa4/description.md.BASE.20.md deleted file mode 100644 index 6f6a960..0000000 --- a/rsa4/description.md.BASE.20.md +++ /dev/null @@ -1 +0,0 @@ -We came across another [message]($rsa3) that follows the same cryptographic schema as those other Really Scary Admin messages. Take a look and see if you can crack it. \ No newline at end of file diff --git a/rsa4/description.md.LOCAL.137.md b/rsa4/description.md.LOCAL.137.md deleted file mode 100644 index c61c847..0000000 --- a/rsa4/description.md.LOCAL.137.md +++ /dev/null @@ -1,5 +0,0 @@ -<<<<<<< HEAD -I found somebody's notes on their private RSA! Help me crack [this](${ciphertext_txt}). -======= -We came across another [message]($rsa3) that follows the same cryptographic schema as those other Really Scary Admin messages. Take a look and see if you can crack it. ->>>>>>> 93577ddee37a489cf0aa1a4b987d23a3bc3d2657 diff --git a/rsa4/description.md.LOCAL.20.md b/rsa4/description.md.LOCAL.20.md deleted file mode 100644 index c61c847..0000000 --- a/rsa4/description.md.LOCAL.20.md +++ /dev/null @@ -1,5 +0,0 @@ -<<<<<<< HEAD -I found somebody's notes on their private RSA! Help me crack [this](${ciphertext_txt}). -======= -We came across another [message]($rsa3) that follows the same cryptographic schema as those other Really Scary Admin messages. Take a look and see if you can crack it. ->>>>>>> 93577ddee37a489cf0aa1a4b987d23a3bc3d2657 diff --git a/rsa4/description.md.REMOTE.137.md b/rsa4/description.md.REMOTE.137.md deleted file mode 100644 index e69de29..0000000 diff --git a/rsa4/description.md.REMOTE.20.md b/rsa4/description.md.REMOTE.20.md deleted file mode 100644 index e69de29..0000000 diff --git a/rsa4/grader.py b/rsa4/grader.py deleted file mode 100644 index e9ca30f..0000000 --- a/rsa4/grader.py +++ /dev/null @@ -1,4 +0,0 @@ -def grade(autogen, key): - if key.find("tw0_v3ry_merrry_tw1n_pr1m35!!_417c0d") != -1: - return True, "Really Superb! Applause!" - return False, "RIP" diff --git a/rsa4/problem.yml b/rsa4/problem.yml deleted file mode 100644 index 17fc9de..0000000 --- a/rsa4/problem.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: blockingthesky -title: RSA 4 -hint: You might want to read up on how RSA works. -category: Cryptography -autogen: false -programming: false -value: 130 -files: - - rsa3 diff --git a/rsa4/rsa3 b/rsa4/rsa3 deleted file mode 100644 index bda7c13..0000000 --- a/rsa4/rsa3 +++ /dev/null @@ -1,2 +0,0 @@ -{N : e : c} -{0x27335d21ca51432fa000ddf9e81f630314a0ef2e35d81a839584c5a7356b94934630ebfc2ef9c55b111e8c373f2db66ca3be0c0818b1d4eda7d53c1bd0067f66a12897099b5e322d85a8da45b72b828813af23L : 0x10001 : 0x9b9c138e0d473b6e6cf44acfa3becb358b91d0ba9bfb37bf11effcebf9e0fe4a86439e8217819c273ea5c1c5acfd70147533aa550aa70f2e07cc98be1a1b0ea36c0738d1c994c50b1bd633e3873fc0cb377e7L} \ No newline at end of file diff --git a/rsa4/rsa4 b/rsa4/rsa4 deleted file mode 100644 index bda7c13..0000000 --- a/rsa4/rsa4 +++ /dev/null @@ -1,2 +0,0 @@ -{N : e : c} -{0x27335d21ca51432fa000ddf9e81f630314a0ef2e35d81a839584c5a7356b94934630ebfc2ef9c55b111e8c373f2db66ca3be0c0818b1d4eda7d53c1bd0067f66a12897099b5e322d85a8da45b72b828813af23L : 0x10001 : 0x9b9c138e0d473b6e6cf44acfa3becb358b91d0ba9bfb37bf11effcebf9e0fe4a86439e8217819c273ea5c1c5acfd70147533aa550aa70f2e07cc98be1a1b0ea36c0738d1c994c50b1bd633e3873fc0cb377e7L} \ No newline at end of file diff --git a/things-add-up/problem.yml b/things-add-up/problem.yml index 02eefe1..5111e51 100644 --- a/things-add-up/problem.yml +++ b/things-add-up/problem.yml @@ -5,6 +5,7 @@ autogen: false programming: true value: 15 +grader_language: python test_cases: 10 time_limit: 1000 memory_limit: 256000 diff --git a/things-dont-add-up/generator.py b/things-dont-add-up/generator.py index 398325e..594e5b8 100644 --- a/things-dont-add-up/generator.py +++ b/things-dont-add-up/generator.py @@ -7,7 +7,7 @@ elif N == 1: elif N == 2: print '123 456 3\n5 7 11' elif N == 3: - print '1 10000000 16\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16' + print '1 10000000 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16' else: import random as r r.seed(N) diff --git a/things-dont-add-up/grader.class b/things-dont-add-up/grader.class new file mode 100644 index 0000000..b56ab20 Binary files /dev/null and b/things-dont-add-up/grader.class differ diff --git a/things-dont-add-up/grader.py b/things-dont-add-up/grader.py deleted file mode 100644 index d3c6fc3..0000000 --- a/things-dont-add-up/grader.py +++ /dev/null @@ -1 +0,0 @@ -# done in grader.java diff --git a/things-dont-add-up/problem.yml b/things-dont-add-up/problem.yml index e3cb42a..92241ac 100644 --- a/things-dont-add-up/problem.yml +++ b/things-dont-add-up/problem.yml @@ -5,6 +5,7 @@ autogen: false programming: true value: 210 +grader_language: java test_cases: 15 time_limit: 1000 memory_limit: 256000 \ No newline at end of file