﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace primeri
{
    delegate int myDelegate(int i, int j);

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("");
            myDelegate sestej = (i, j) => i + j;
            Console.WriteLine($"Seštejemo števili 10 in 4: {sestej(10, 4)}");
            Console.WriteLine("");

            Action<string> pozdravi = ime =>
            {
                string pozdrav = $"Živijo {ime}!";
                Console.WriteLine(pozdrav);
            };
            pozdravi("Klavdija");
            Console.WriteLine("");

            Func<int, int> kvadriraj = x => x * x;
            Console.WriteLine($"Kvadrirali smo število 4: {kvadriraj(4)}");
            Console.WriteLine("");

            Func<int, int, int> odstej = (x, y) => x - y;
            Console.WriteLine($"Odšteli smo števili 10 in 6: {odstej(10, 6)}");
            Console.WriteLine("");

            Func<int, string, bool> predolga_beseda = (int dolzina, string niz) => niz.Length > dolzina;
            Console.WriteLine($"Ali je beseda 'banana' ustrezne dolžine: {predolga_beseda(4, "banana")}");
            Console.WriteLine("");

            Func<(int, int), (int, int)> podvoji = mnozica => (2 * mnozica.Item1, 2 * mnozica.Item2);
            var stevila = (2, 3);
            var podvojena_stevila = podvoji(stevila);
            Console.WriteLine($"Množico {stevila} smo podvojili: {podvojena_stevila}");
            Console.WriteLine("");


            List<int> List = new List<int>() { 1, 2, 3, 4, 5, 6 };
            List<int> soda_stevila = List.FindAll(x => (x % 2) == 0);
            foreach (int stevilo in soda_stevila)
            {
                Console.Write($"{stevilo} ");
            }
            Console.WriteLine("");

            Console.WriteLine("");
            int[] tabela = { 1, 1, 2, 3, 5, 8, 13, 21, 34 };
            double povprecje_lihih = tabela.Where(stevilo => stevilo % 2 == 1).Average();
            Console.WriteLine($"Povprečje lihih števil iz tabele: {povprecje_lihih}");
            Console.WriteLine("");

            var kvadriraj1 = tabela.Select(x => x * x);
            Console.WriteLine(string.Join(" ", kvadriraj1));
            Console.WriteLine("");

            foreach (int i in tabela.Where(stevilo =>
            {
                if (stevilo % 2 == 1 && stevilo <= 5)
                    return true;
                else if (stevilo % 2 == 1 && stevilo > 20)
                    return true;
                else return false;
            }
    ))
            {
                Console.WriteLine(i);
            }

            Console.Read();
        }
    }
}
