Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
- using System.Net.Http;
- using System.Text;
- using System.Threading.Tasks;
- using Newtonsoft.Json;
- using Newtonsoft.Json.Linq;
- using static System.Console;
- namespace Challenge_8 {
- public static class Client {
- private static readonly HttpClient _CLIENT = new HttpClient();
- public static async Task<string> GetStringAsync(string url) => await _CLIENT.GetAsync(url).Result.Content.ReadAsStringAsync();
- public static async Task<string> PostAsync(string url, string data, string mediaType) => await _CLIENT.PostAsync(url, new StringContent(data, Encoding.UTF8, mediaType)).Result.Content.ReadAsStringAsync();
- }
- internal class Program {
- private const string CHALLENGE_URL = "https://cc.the-morpheus.de/challenges/8/";
- private const string SOLUTIONS_URL = "https://cc.the-morpheus.de/solutions/8/";
- private static void Main(string[] args) {
- do {
- Clear();
- WriteLine("Empfange Daten...");
- Stopwatch sw = Stopwatch.StartNew();
- string jsonGet = Client.GetStringAsync(CHALLENGE_URL).Result;
- dynamic json = JsonConvert.DeserializeObject(jsonGet);
- int target = json.k;
- int[] list = ((JArray)json.list).ToObject<IEnumerable<int>>().ToArray();
- WriteLine($"Dauer: {sw.Elapsed.TotalMilliseconds}ms");
- WriteLine($"Empfangene Daten:\nK: {target}\nL: [ {string.Join(", ", list)} ]\n");
- WriteLine("Starte Berechnung...");
- sw.Restart();
- int[] ret = Solve(list, target);
- sw.Stop();
- WriteLine($"Lösung: [ {string.Join(", ", ret)} ]");
- WriteLine($"Dauer: {sw.Elapsed.TotalMilliseconds}ms / {sw.Elapsed.Ticks} Ticks");
- string jsonResponse(int[] s) => $"{{\"token\": [{string.Join(", ", s)}]}}";
- string response = Client.PostAsync(SOLUTIONS_URL, jsonResponse(ret), "application/json").Result;
- BackgroundColor = response.StartsWith("Success") ? ConsoleColor.DarkGreen : ConsoleColor.DarkRed;
- WriteLine("Ergebnis: " + response);
- BackgroundColor = ConsoleColor.Black;
- } while (ReadKey().Key != ConsoleKey.Escape);
- WriteLine("ENDE");
- }
- private static int[] Solve(int[] arr, int target) {
- Dictionary<int, KeyValuePair<int, int>> dict = new Dictionary<int, KeyValuePair<int, int>>(arr.Length * arr.Length);
- for (int i = 0; i < arr.Length - 1; i++) {
- for (int j = i; j < arr.Length; j++) {
- int sum = arr[i] + arr[j];
- dict[sum] = new KeyValuePair<int, int>(i, j);
- if (dict.ContainsKey(target - sum)) {
- KeyValuePair<int, int> p = dict[target - sum];
- return new[] { i, j, p.Key, p.Value };
- }
- }
- }
- return new[] { -1, -1, -1, -1 };
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement