aboutsummaryrefslogtreecommitdiff
path: root/THT-C
diff options
context:
space:
mode:
authorRaphael McSinyx <vn.mcsinyx@gmail.com>2016-10-31 22:21:50 +0700
committerRaphael McSinyx <vn.mcsinyx@gmail.com>2016-10-31 22:21:50 +0700
commit71a6e456b59171a681bccff7eeba9db7367bca37 (patch)
treee6f517c4b4109e13c9bb31df6c4c40185ad7ddf7 /THT-C
parent250b7d75204bb18311f51d8b67164f9ad4cef9f2 (diff)
downloadcp-71a6e456b59171a681bccff7eeba9db7367bca37.tar.gz
Thêm đề Tin học trẻ Quốc gia 2016 Bảng B
Diffstat (limited to 'THT-C')
-rw-r--r--THT-C/Q-2016/bai2.inp1
-rw-r--r--THT-C/Q-2016/bai2.out4
-rwxr-xr-xTHT-C/Q-2016/bai2.py47
-rwxr-xr-xTHT-C/Q-2016/bai3.py14
-rw-r--r--THT-C/TP-2016/buy.pas47
-rw-r--r--THT-C/TP-2016/play.pas77
-rw-r--r--THT-C/TP-2016/set.pas24
7 files changed, 0 insertions, 214 deletions
diff --git a/THT-C/Q-2016/bai2.inp b/THT-C/Q-2016/bai2.inp
deleted file mode 100644
index 9a73285..0000000
--- a/THT-C/Q-2016/bai2.inp
+++ /dev/null
@@ -1 +0,0 @@
-1-2.(3-4.5)
diff --git a/THT-C/Q-2016/bai2.out b/THT-C/Q-2016/bai2.out
deleted file mode 100644
index b0a3d7f..0000000
--- a/THT-C/Q-2016/bai2.out
+++ /dev/null
@@ -1,4 +0,0 @@
-1-2.(3-4.5)
-=1-2.(3-4.5)
-=1-2.(3-20)
-=1-2.-17
diff --git a/THT-C/Q-2016/bai2.py b/THT-C/Q-2016/bai2.py
deleted file mode 100755
index bb04c54..0000000
--- a/THT-C/Q-2016/bai2.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env python3
-d = {'+': '+', '-': '-', '.': '*', ':': '/', '^': '**'}
-
-def Steps(string):
- val = int()
- for char in string:
- if char in '+-.:^':
- val += 1
- return val
-
-def Calc(string):
- global d
- for char in '+-.:^':
- string = string.replace(char, ' {} '.format(char))
- l = string.split()
- for char in '^.:+-':
- if char in l:
- idx = l.index(char)
- s = ' '.join(l[idx - 1:idx + 2])
- return string.replace(s, str(eval(s.replace(char, d[char]))))
-
-def MetaCalc(string):
- for idx0, char0 in enumerate(string):
- if char0 == ')':
- for idx1, char1 in enumerate(reversed(string)):
- if char1 == '(':
- idx1 = len(string) - idx1 - 1
- s = '({})'.format(Calc(string[idx1 + 1:idx0]))
- if not(Steps(s)) or ((Steps(s) == 1) and (s[:2] == '(-')):
- s = s[1:-1]
- return string.replace(string[idx1:idx0 + 1], s)
- return Calc(string)
-
-with open('bai2.inp') as f:
- s = f.readline()
-lines = Steps(s)
-for i in d:
- s = s.replace(i, ' ' + i + ' ')
-for i in d:
- s = s.replace(i + ' - ', i + ' -')
-l = s.split()
-with open('bai2.out', 'w') as f:
- f.write(''.join(l) + '\n')
- for _ in range(lines):
- s = MetaCalc(s).replace(' ', '')
- f.write('=' + s)
- print(s)
diff --git a/THT-C/Q-2016/bai3.py b/THT-C/Q-2016/bai3.py
deleted file mode 100755
index f4139a9..0000000
--- a/THT-C/Q-2016/bai3.py
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env python3
-d = dict()
-with open('bai3.inp') as f:
- for i in f.readlines():
- for j in '.,;!?':
- i = i.replace(j, ' ')
- for j in i.split():
- d[j] = d.get(j, 0) + 1
-l = [(value, key) for (key, value) in d.items()]
-l.sort(reverse=True)
-with open('bai3.out', 'w') as f:
- f.write(str(len(l)) + '\n')
- for i, j in l:
- f.write('{} {}\n'.format(i, j))
diff --git a/THT-C/TP-2016/buy.pas b/THT-C/TP-2016/buy.pas
deleted file mode 100644
index acbd1d3..0000000
--- a/THT-C/TP-2016/buy.pas
+++ /dev/null
@@ -1,47 +0,0 @@
-(* File name are supposed to be in upper case, but lower case names look more *mordern*.
- * `buy.pas' run first, read input from `buy.inp', write to `buy.out'
- * `set.pas' run next, read from `set.inp', write to `set.out'
- * `play.pas' run last, read from `map.inp', write to `decision.out'
- * (LMAO dunno how to sort files in Gist)
- *)
-
-var
- f : text;
- a : array[1..10] of qword;
- idx : array[1..10] of shortint = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
- out : array[1..10] of shortint = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
- i, j, smalltmp : shortint;
- bigtmp : qword;
-
-begin
- assign(f, 'buy.inp');
- reset(f);
- for i := 1 to 10 do
- read(f, a[i]);
- close(f);
- for i := 1 to 9 do
- for j := i + 1 to 10 do
- if a[i] > a[j] then {should use `>=' cuz the later tanks are usually better}
- begin
- smalltmp := idx[i];
- idx[i] := idx[j];
- idx[j] := smalltmp;
- bigtmp := a[i];
- a[i] := a[j];
- a[j] := bigtmp
- end;
- bigtmp := 100;
- for i := 1 to 8 do {capable of buying 10, but dat gon' make `set.pas' complicated}
- if a[i] > bigtmp then
- break
- else
- begin
- dec(bigtmp, a[i]);
- out[idx[i]] := 1
- end;
- assign(f, 'buy.out');
- rewrite(f);
- for i := 1 to 10 do
- writeln(f, out[i]);
- close(f)
-end. \ No newline at end of file
diff --git a/THT-C/TP-2016/play.pas b/THT-C/TP-2016/play.pas
deleted file mode 100644
index 8ae0d7c..0000000
--- a/THT-C/TP-2016/play.pas
+++ /dev/null
@@ -1,77 +0,0 @@
-type
- tank = record
- a, b, c, x, y : shortint
- end;
- tanklist = array[1..10] of tank;
- out = record
- x, y, u, v : shortint
- end;
-
-var
- f : text;
- m, n, id, i, j, p : shortint;
- t1, t2, ttmp : tanklist;
- o : out;
-
-function shootable(tank0, tank1 : tank) : boolean;
- begin
- exit(abs(tank0.x - tank1.x) + abs(tank0.y - tank1.y) <= tank0.c)
- end;
-
-{This function should also care about the target's HP, but never mind LOL}
-function damage(tank0 : tank) : shortint;
- var
- tmp : shortint;
- begin
- tmp := tank0.a * tank0.b;
- if tmp mod 10 = 0 then
- exit(tmp div 10);
- exit(tmp div 10 + 1)
- end;
-
-begin
- assign(f, 'map.inp');
- reset(f);
- readln(f, m, n, id);
- for i := 1 to m do
- readln(f, t1[i].a, t1[i].b, t1[i].c, t1[i].x, t1[i].y);
- for i := 1 to n do
- readln(f, t2[i].a, t2[i].b, t2[i].c, t2[i].x, t2[i].y);
- close(f);
- if id = 2 then
- begin
- ttmp := t1;
- t1 := t2;
- t2 := ttmp;
- i := m;
- m := n;
- n := i
- end;
- p := 0;
- o.x := 0;
- for i := 1 to m do
- for j := 1 to n do
- if shootable(t1[i], t2[j]) and (damage(t1[i]) > p) then
- begin
- p := damage(t1[i]);
- o.x := t1[i].x;
- o.y := t1[i].y;
- o.u := t2[j].x;
- o.v := t2[j].y
- end;
- assign(f, 'decision.out');
- rewrite(f);
- if o.x > 0 then
- writeln(f, '2 ', o.x, ' ', o.y, ' ', o.u, ' ', o.v)
- else
- begin
- randomize;
- i := random(m) + 1;
- write(f, '2 ', t1[i].x, ' ', t1[i].y, ' ');
- if id = 1 then
- writeln(f, random(4) + 5, ' ', random(4) + 5)
- else
- writeln(f, random(4) + 1, ' ', random(4) + 1)
- end;
- close(f)
-end. \ No newline at end of file
diff --git a/THT-C/TP-2016/set.pas b/THT-C/TP-2016/set.pas
deleted file mode 100644
index c36dc23..0000000
--- a/THT-C/TP-2016/set.pas
+++ /dev/null
@@ -1,24 +0,0 @@
-var
- f : text;
- m, n, id : shortint;
- {This, because random failed on Windows, may because of not having /dev/urandom}
- out : array[1..8] of shortint = (5, 1, 3, 7, 2, 6, 4, 8);
-
-begin
- assign(f, 'set.inp');
- reset(f);
- readln(f, m, n, id);
- close(f);
- if id = 2 then
- begin
- m := n;
- n := 5
- end
- else
- n := 4;
- assign(f, 'set.out');
- rewrite(f);
- for id := 1 to m do
- writeln(f, n, ' ', out[id]);
- close(f)
-end. \ No newline at end of file