diff --git a/1ano/fp/aula02/darts.cs b/1ano/fp/aula02/darts.cs deleted file mode 100644 index 9f46ffd..0000000 --- a/1ano/fp/aula02/darts.cs +++ /dev/null @@ -1,132 +0,0 @@ -// .NET core 6.0 - -// This is just a C# version of the python solution: -// https://github.com/TiagoRG/uaveiro-leci/blob/master/1ano/fp/aula02/darts.py - -namespace Darts -{ - internal class Program - { - static void Main(string[] args) - { - Console.WriteLine("Introduza as coordenadas (x, y) do dardo.\nRepresentam as posições horizontal e vertical respetivamente.\nAmbas em milimetros."); - Console.Write("X: "); - int x = Convert.ToInt32(Console.ReadLine()); - Console.Write("Y: "); - int y = Convert.ToInt32(Console.ReadLine()); - - double mod = Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2)); - - if (mod > 170) - { - Console.WriteLine("Fora do alvo."); - Console.ReadKey(); - return; - } - - if (mod < 12.7) - { - Console.WriteLine("Pontuação: 50 points"); - Console.ReadKey(); - return; - } - else if (mod < 32) - { - Console.WriteLine("Pontuação: 25 points"); - Console.ReadKey(); - return; - } - - int basePoint = BasePoint(x, y); - - if (mod > 99 && mod < 107) - { - Console.WriteLine($"Pontuação: {basePoint * 3} points"); - Console.ReadKey(); - return; - } - if (mod > 162) - { - Console.WriteLine($"Pontuação: {basePoint * 2} points"); - Console.ReadKey(); - return; - } - - Console.WriteLine($"Pontuação: {basePoint} points"); - Console.ReadKey(); - return; - } - - public static int BasePoint(int x, int y) - { - if (x > 0) - { - if (Math.Abs(y) < x * Math.Tan(Math.PI / 20)) - return 6; - else - { - if (y > 0) - { - if (y < x * Math.Tan(3 * Math.PI / 20)) - return 13; - if (y < x * Math.Tan(5 * Math.PI / 20)) - return 4; - if (y < x * Math.Tan(7 * Math.PI / 20)) - return 18; - if (y < x * Math.Tan(9 * Math.PI / 20)) - return 1; - else - return 20; - } - else - { - if (y > x * Math.Tan(-3 * Math.PI / 20)) - return 10; - if (y > x * Math.Tan(-5 * Math.PI / 20)) - return 15; - if (y > x * Math.Tan(-7 * Math.PI / 20)) - return 2; - if (y > x * Math.Tan(-9 * Math.PI / 20)) - return 17; - else - return 3; - } - } - } - else - { - if (Math.Abs(y) < x * Math.Tan(Math.PI + Math.PI / 20)) - return 11; - else - { - if (y > 0) - { - if (y < x * Math.Tan(Math.PI + 3 * Math.PI / 20)) - return 14; - if (y < x * Math.Tan(Math.PI + 5 * Math.PI / 20)) - return 9; - if (y < x * Math.Tan(Math.PI + 7 * Math.PI / 20)) - return 12; - if (y < x * Math.Tan(Math.PI + 9 * Math.PI / 20)) - return 5; - else - return 20; - } - else - { - if (y > x * Math.Tan(Math.PI + -3 * Math.PI / 20)) - return 8; - if (y > x * Math.Tan(Math.PI + -5 * Math.PI / 20)) - return 16; - if (y > x * Math.Tan(Math.PI + -7 * Math.PI / 20)) - return 7; - if (y > x * Math.Tan(Math.PI + -9 * Math.PI / 20)) - return 19; - else - return 3; - } - } - } - } - } -} \ No newline at end of file diff --git a/1ano/fp/aula02/darts.py b/1ano/fp/aula02/darts.py index 4a6b09e..31fc2cd 100644 --- a/1ano/fp/aula02/darts.py +++ b/1ano/fp/aula02/darts.py @@ -13,80 +13,31 @@ Ambas em milimetros. if mod > 170: print('Fora do alvo.') - exit(1) + return if mod < 12.7: print('Pontuacao: 50 pontos.') - exit(1) + return elif mod < 32: print('Pontuacao: 25 pontos.') - exit(1) - - base_point = BasePoint(x, y) + return + score = BasePoint(x, y) if mod > 99 and mod < 107: - print('Pontuacao: {}pontos.'.format(base_point * 3)) - exit(1) + score *= 3 if mod > 162: - print('Pontuacao: {}pontos.'.format(base_point * 2)) - exit(1) - - print('Pontuacao: {}pontos.'.format(base_point)) + score *= 2 + + print(f'Pontuacao: {score} pontos.') exit(1) def BasePoint(x, y): - if x > 0: - if abs(y) < x * math.tan(math.pi / 20): - return 6 - else: - if y > 0: - if y < x * math.tan(3 * math.pi / 20): - return 13 - if y < x * math.tan(5 * math.pi / 20): - return 4 - if y < x * math.tan(7 * math.pi / 20): - return 18 - if y < x * math.tan(9 * math.pi / 20): - return 1 - else: - return 20 - else: - if y > x * math.tan(-3 * math.pi / 20): - return 10 - if y > x * math.tan(-5 * math.pi / 20): - return 15 - if y > x * math.tan(-7 * math.pi / 20): - return 2 - if y > x * math.tan(-9 * math.pi / 20): - return 17 - else: - return 3 - else: - if abs(y) < x * math.tan(math.pi + math.pi / 20): - return 6 - else: - if y > 0: - if y < x * math.tan(math.pi + 3 * math.pi / 20): - return 14 - if y < x * math.tan(math.pi + 5 * math.pi / 20): - return 9 - if y < x * math.tan(math.pi + 7 * math.pi / 20): - return 12 - if y < x * math.tan(math.pi + 9 * math.pi / 20): - return 5 - else: - return 20 - else: - if y > x * math.tan(math.pi + -3 * math.pi / 20): - return 8 - if y > x * math.tan(math.pi + -5 * math.pi / 20): - return 16 - if y > x * math.tan(math.pi + -7 * math.pi / 20): - return 7 - if y > x * math.tan(math.pi + -9 * math.pi / 20): - return 19 - else: - return 3 + angleRad = math.atan2(y, x) + angleDeg = math.degrees(angleRad) - 9 + + POINTS = (6, 13, 4, 18, 1, 20, 5, 12, 9, 14, 11, 8, 16, 7, 19, 3, 17, 2, 15, 10) + return POINTS[int(angleDeg / 20)] + if __name__ == '__main__': main() \ No newline at end of file