Hirdetés

2024. május 5., vasárnap

Gyorskeresés

Hozzászólások

(#870) yash


yash
senior tag

Miniprogramozo versenyt hirdetek (jatek)!

A fodij az, hogy mindenki megcsillogtathatja a kepessegeit, es megmutathatja nekunk, hogy o bizony a legjobb es tud valamit, amit mi nem :) Tehat gyakorlatilag semmi, a lenyeg, hogy agytreningezunk.

A feladat a kovetkezo: primszam kiszamitasa elore elkeszitett kodminta alapjan. A cel az, hogy a meglevo kodot ugy alakitsuk at ASM betetek nelkul es az eredeti szovegeket es funkcionalitast megtartva, hogy a kod a leheto leggyorsabban fusson le. Eredetileg egy szalra van tervezve, de profi programozok vihetnek bele tobbszalu programozast is (peldaul megfelezik a szamtartomanyt, es ket szalon megy a vizsgalat egyszerre). A programnak egyetlen fizikai gepen kell tudnia futni (halozatban szamitas most nem cel). Tovabba a minel kisebb .exe meret is cel, a gyorsasagon felul erre is lehet figyelni (de nem kotelezo). A hibakezelesen lehet modositani, de az eredeti formatum boven megteszi. Tehat a lenyeg a minel optimalizaltabb kod, az eredeti funkciok megtartasa mellett. A leggyorsabb kod a nyertes (azonos hardveren tesztelve), azonos sebessegek mellett a tomorebb kod nyer!

(A teszteles egy fizikailag ketmagu processzoron lesz tesztelve 2 GHz-en.)

Akkor lassuk hat vegre az eredeti forraskodot:

using System;

namespace TestCon
{
class Program
{
static void Main(string[] args)
{
try
{
startApp();
}
catch (FormatException e)
{
Console.WriteLine("\n\nPozitiv egesz szamokat lehet csak megadni.");
endApp();
}
catch (Exception e)
{
Console.WriteLine("\n\nHiba tortent.");
endApp();
}
}

private static void endApp()
{
Console.WriteLine("\n\nA kilepeshez nyomjon le egy billentyut!");
Console.ReadKey();
}

private static void startApp()
{
Int64 szam;
Console.Write("Primszamvizsgalat. Kerem a vizsgalando szamot: ");
szam = Int64.Parse(Console.ReadLine());
if (szam > 1)
{
Console.WriteLine("\nPrimszamitas folyamatban...\n");
if (isPrimeWithCount(szam))
Console.WriteLine("Primszam.");
else
Console.WriteLine("Nem primszam.");
}
else
{
Console.WriteLine("\n\nA vizsgalatot csak egynel nagyobb pozitiv egesz szamokra lehet elvegezni!");
}
endApp();
}

private static bool isPrimeWithCount(Int64 szam)
{
bool val = true;
int counter = 0;
Console.Write("\nOsztoi: ");
for (Int64 i = 2; i < szam; i++)
{
if (szam % i == 0)
{
val = false;
counter++;
Console.Write("{0} ", i);
}
}
if (counter == 0)
Console.Write("nincs\n\n");
else
Console.Write("\n\n{0} osztoja van. ", counter);
return val;
}
}
}

[ Szerkesztve ]

Copyright © 2000-2024 PROHARDVER Informatikai Kft.