hlmod.hu
https://hlmod.hu/

Pozitívia és Negatívia
https://hlmod.hu/viewtopic.php?f=13&t=9197
Oldal: 1 / 2

Szerző:  Metal [2013.06.28. 10:42 ]
Hozzászólás témája:  Pozitívia és Negatívia

Sziasztok.

Újabb feladattal jövök, csak Nektek:

A történet:
Valamikor régen, túl az abakuszon, a lederivált egyenesen is túl, ahol még az integrálás sem járt, létezett két tartomány: Pozitívia és Negatívia.
A két tartomány folyamatos hadban álltak egymással, folyamatosan oltották ki egymás előjeleit.
A háború több tízezer PIn át tartott, míg a rejtve maradt, 0. tartomány úgy döntött, ő is hadba szál, kihasználja a két tartomány harcát, és elfoglalja területeiket.
Minden, nullára esett érték, akik a két tartomány között keletkezett, mellé állt, s hadba indult, nem is kicsi előnyökkel:
Míg a tartományok összeadó harcot folytattak, addig a 0. tartomány a szorzás műveletét vettette be a két tartomány ellen.
Vajon ki nyerte meg a gigászi csatát?


Feladat:
Adott 3 tartomány:
- Pozitívia
- Negatívia
- 0. tartomány

Minden oldal rendelkezik egy random "indulás" sereggel:
Pozitívia: [10000, 100000]
Negatívia: [-100000, -10000]
A nulladik tartomány "nullákkal" rendelkezik, azaz 10..100 db 0-val indul.

A gigászi harc menete igen egyszerű:
Minden alkalommal mind2 oldal küld a saját értékéből random 1-10 db-ot, azaz:
Pozitívia: [1, 10] db-ot
Negatívia: [-10, -1] db-ot
Továbbá a 0. tartomány is támad: minden 5. körben - persze ha van serege - a legtöbb nyereséggel rendelkező tartományt. Amennyiben egyenlőek a nyerések száma, akkor random dől el, melyik oldalt támadja.
A támadott fél 50%os eséllyel tudja elkerülni a 0. tartomány csapását.
Amennyiben nem sikerül, támadói elvesznek (0-val való szorzás => 0).

A csata az így kialakított értékek összeadásával dől el ("összeadó harc"), melynek három következménye lehet:
Ha az összeadás eredménye pozitív, akkor a pozitív sereg kioltotta a negatívat, azaz Pozitívia nyert.
Ha az összeadás eredménye negatív, akkor a negatív sereg kioltotta a pozitívat, azaz Negatívia nyert.
Amennyiben az eredmény nulla, a 0. tartományba egy nulla kerül, s döntetlennel zárul a két tartomány közti aktuális csata.
A nem nulla megmaradt sereg visszatér az eredeti tartományába.

A csata addig folyik, amíg valamelyik oldal "el nem fogy". (0 lesz).

Írjatok programot, (Akár Pawn, akár másban), ami szimulálja ezt a háborút, addig, amíg valamelyik fél elesik.
A végén írjátok ki, melyik oldal mennyi csatát nyert, s mennyi "sereggel" rendelkeznek még.

Szerző:  Metal [2013.06.28. 11:47 ]
Hozzászólás témája:  Re: Pozitívia és Negatívia

Átírtam a feladatot, most nézzétek meg :)

Szerző:  kiki [2013.06.28. 12:46 ]
Hozzászólás témája:  Re: Pozitívia és Negatívia

bla

Szerző:  BeepBeep [2013.06.28. 12:51 ]
Hozzászólás témája:  Re: Pozitívia és Negatívia

A PIn az milyen mértékegység, és mekkora méterben? :D

Szerző:  kiki [2013.06.28. 12:52 ]
Hozzászólás témája:  Re: Pozitívia és Negatívia

BeepBeep írta:
A PIn az milyen mértékegység, és mekkora méterben? :D


Az simkártyánál van xD

Szerző:  fuck604 [2013.06.28. 14:10 ]
Hozzászólás témája:  Re: Pozitívia és Negatívia

ezt a részt nem nagyon értem:s
Kód:
A nulladik tartomány "nullákkal" rendelkezik, azaz 10..100 db 0-val indul.


ez most 10 és 100közötti random érték?

Szerző:  Nandee [2013.06.28. 15:27 ]
Hozzászólás témája:  Re: Pozitívia és Negatívia

Ezek honnan jönnek? (Lehet megpróbálom c++ al de még most tanulgatom xd)

Szerző:  Metal [2013.06.28. 16:00 ]
Hozzászólás témája:  Re: Pozitívia és Negatívia

fuck604 írta:
ezt a részt nem nagyon értem:s
Kód:
A nulladik tartomány "nullákkal" rendelkezik, azaz 10..100 db 0-val indul.


ez most 10 és 100közötti random érték?


igen, jobb lett volna ha így írom mint a többinél: [10, 100]

Szerző:  rericsi8 [2013.06.28. 22:56 ]
Hozzászólás témája:  Re: Pozitívia és Negatívia

a válasz 2.53434*5.34(2*4.534534)/45+(-7.345*3) :lol:

Szerző:  Metal [2013.07.04. 09:14 ]
Hozzászólás témája:  Re: Pozitívia és Negatívia

Nah itt van C#ul:

Kód:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PN0
{
    public class Tartomany
    {
        public int SeregMeret { get; set; }
        public int NyertCsatak { get; set; }
        public string TartomanyNev { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            // 3 Tartomány:
            Tartomany Pozitivia = new Tartomany() { SeregMeret = rnd.Next(10000, 100000), NyertCsatak = 0, TartomanyNev = "Pozitivia" };
            Tartomany Negativia = new Tartomany() { SeregMeret = rnd.Next(-100000, -10000), NyertCsatak = 0, TartomanyNev = "Negativia" };
            Tartomany NulladikTartomany = new Tartomany() { SeregMeret = rnd.Next(10, 100), NyertCsatak = 0, TartomanyNev = "0. tartomany" };


            int KorSzam = 0;

            while (Pozitivia.SeregMeret > 0 && Negativia.SeregMeret < 0)
            {
                KorSzam++;
                int tamadopuff;
                tamadopuff = rnd.Next(1, 10);
                int PTamado = tamadopuff > Pozitivia.SeregMeret ? Pozitivia.SeregMeret : tamadopuff;
                Pozitivia.SeregMeret -= PTamado;
                tamadopuff = rnd.Next(-10, -1);
                int NTamado = tamadopuff < Negativia.SeregMeret ? Negativia.SeregMeret : tamadopuff;
                Negativia.SeregMeret -= NTamado;

                if (KorSzam % 5 == 0 && NulladikTartomany.SeregMeret > 0)
                {
                    NulladikTartomany.SeregMeret--;

                    if (rnd.Next(1, 100) > 50)
                    {

                        if (Pozitivia.NyertCsatak > Negativia.NyertCsatak)
                            PTamado = 0;
                        else if (Pozitivia.NyertCsatak < Negativia.NyertCsatak)
                            NTamado = 0;
                        else
                        {
                            if (rnd.Next(1, 100) > 50)
                                PTamado = 0;
                            else
                                NTamado = 0;
                        }
                    }
                }
                int csataEredmeny = PTamado+NTamado;
                if (csataEredmeny > 0)
                {
                    Pozitivia.SeregMeret += csataEredmeny;
                    Pozitivia.NyertCsatak++;
                }
                else if (csataEredmeny < 0)
                {
                    Negativia.SeregMeret += csataEredmeny;
                    Negativia.NyertCsatak++;
                }
                else
                {
                    NulladikTartomany.NyertCsatak++;
                    NulladikTartomany.SeregMeret++;
                }
            }
            Console.WriteLine("Korok Szama: " + KorSzam.ToString());
            Console.WriteLine("Tartomany\tSereg\tNyertesCsatak");
            Console.WriteLine("{0}\t{1}\t{2}", Pozitivia.TartomanyNev, Pozitivia.SeregMeret, Pozitivia.NyertCsatak);
            Console.WriteLine("{0}\t{1}\t{2}", Negativia.TartomanyNev, Negativia.SeregMeret, Negativia.NyertCsatak);
            Console.WriteLine("{0}\t{1}\t{2}", NulladikTartomany.TartomanyNev, NulladikTartomany.SeregMeret, NulladikTartomany.NyertCsatak);
            Console.ReadKey();
        }
    }
}


Ugye, nem is olyan bonyolult?

Oldal: 1 / 2 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/