Hódító / Queosia forum

Hódító / Queosia forum (http://forum.hodito.hu/index.php)
-   PC (hardver, szoftver, játékok stb.) (http://forum.hodito.hu/forumdisplay.php?f=28)
-   -   Programozás (http://forum.hodito.hu/showthread.php?t=4435)

Redback 12-14-2011 19:16

Quote:

Originally Posted by Valezius (Post 295245)
Ha nincs benne függőleges vágósík, akkor lehet vízszintesen 2db kettes tégla.
Aztán vagy az alsó vagy a felső becserélhető egyesekre.
(Mindkettő nem, mert akkor mégis van benne vágósík.)

Egyébként mégse kell semmiféle rekurzió. Csak elkezdtem írni, aztán láttam, hogy nem teljesen jó, úgyhogy újra kellett gondolnom.

Az nem volt tiszta, hogy a vágósík csak függőleges lehet, de mostmár stimm :) Köszi szépen Vale :)

Cpt Balu 12-23-2011 10:18

A második feladat cseles :)
Amiből kiindultam, hogy a gépeknek minimum szum(A műveletek időigénye) ill. szum(B műveletek időigénye) ideig dolgoznak, ezen nincs mit faragni. Az egyetlen lehetőségünk a minimalizálásra a gépek üresjáratának csökkentése.
Vegyünk egy olyan elemet, ahol A kicsi, B nagy. Ha az első gép A-val végez, mehet B-re, ahol sok időt fog tölteni, ezalatt egy másik terméken is elvégezhetjük A lépést, majd várólistára tehetjük, hogy a második gép rögtön tudjon tovább dolgozni.
Amire kell figyelni, hogy az első x elem A műveletidejének összege ne haladja meg a B műveletidők összegét (mínusz az első elem A ideje, ennyi előnyt kap az első gép), így nem kell a második gépnek az elsőre várakozni.
Ha az adatok olyanra sikerülnek, nyilván valóan akadni fog üresjárat, ezt úgy tudjuk minimalizálni, ha az input elemeket B idő-A idő szerint csökkenő sorrendbe tesszük (ezáltal az elején sok A lépéssel végzett elemet felhalmozunk, a második gép folyamatosan dolgozik)
Ettől már csak egy lépés a tökéletes megoldás, meg kell találni azt az első elemet, amelynél B-A kellőpen nagy, hogy utána mindig legyen legalább egy elem, amin A-t már befejeztük, de a második gépre még várnia kell, viszont ugyanakkor, A ideje ne legyen túl nagy, hogy a második gép is minél előbb dolgozni tudjon. Az ideális, ha az első elemnél A ideje 1, B pedig elég nagy ahhoz, hogy más (szintén B>A tulajdonságú) elemen elvégezzük az első lépést, és várakozzon a másodikra.

Redback 05-17-2012 21:42

Egy kis segítségre lenne megint szükségem, most JAVA nyelv rejtelmeiben merül el. Agyhullám könyvsorozat JAVA könyvében találtam egy feladatot, a szövege a következő:
Quote:

Mit tehetsz, ha olyan osztályt szeretnél írni, amelyből csak EGY példány hozható létre, hogy mindenkinek, aki ebből az osztályból szeretne egy példányt, ezt az egy példányt kelljen használnia.
Ahogy gyakorikérdéseken felvilágosítottak, Singleton mintához hasonló megoldás nekem is eszembe jutott, DE! Úgy nem lehet megoldani, hogy úgy tudjunk példányosítani, mint bármely másik osztályt, tehát az általános
Singleton one = new Singleton();
módon. Valakinek valami ötlet?

Cpt Balu 05-17-2012 22:23

Nos, ha jól értem, olyan osztály kell, ami egy példányban szerepel max, és az sem példányosítás útján, erre a legegyszerűbb a statikus osztály szervezése. A singleton példában már látni, hogyan működne, egyszerűen minden metódus és mező statikus kell hogy legyen, így példány létrehozására nincs is szükség, a statikus szerkezet a típuson keresztül érhető el, persze kell egy metódus, ami konstruktorként funkcionál (ha nem a kódban vannak inicializálva az értékek)
a kérdés, hogy ki az a mindenki, aki használná ezt az osztályt, és hogyan?

Redback 05-17-2012 22:37

Quote:

Originally Posted by Cpt Balu (Post 297251)
Nos, ha jól értem, olyan osztály kell, ami egy példányban szerepel max, és az sem példányosítás útján, erre a legegyszerűbb a statikus osztály szervezése. A singleton példában már látni, hogyan működne, egyszerűen minden metódus és mező statikus kell hogy legyen, így példány létrehozására nincs is szükség, a statikus szerkezet a típuson keresztül érhető el, persze kell egy metódus, ami konstruktorként funkcionál (ha nem a kódban vannak inicializálva az értékek)
a kérdés, hogy ki az a mindenki, aki használná ezt az osztályt, és hogyan?

Épp ez az, hogy példányosítás útján lehessen létrehozni az objektumot. Egy példa:
Quote:

TheClass one = new TheClass();
TheClass two = new TheClass();
Ekkor az lenne számomra a jó, hogy ha one és two ugyan arra az objektumra mutatna. Ezt meg lehet valahogy valósítani? Mondjuk most eszembe jutott valami, mindjárt ki is próbálom.

Cpt Balu 05-17-2012 22:56

na arra én is kíváncsi leszek :) a példányosítás definíciója szerint önálló entitást hoz létre, erre is utal a "new" kulcsszó, régi újat létrehozni nem lehet, elvben úgy lehetne megoldani, hogy egy statikus metódus visszaadja az egyetlen példány azonosítóját:
TheClass One = TheClass.GetTheOne();
TheClass Two = TheClass.GetTheOne();

csak kérdés, hogy mi is az amit ez a függvény visszaad? lehet egy statikus változó, de egyszer létre kell hozni ezt is, mondjuk egy másik statikus függvénnyel:

Cpt Balu 05-17-2012 23:01

class TheClass
{
static TheClass TheOnlyOne;
public static TheClass GetTheOne()
{
return TheOnlyOne;
}

public static void CreateTheOne();
{
if([még nem létezik])
TheOnlyOne=new TheClass();
else
[már létezik];
}
private TheOne()<--privát konstruktor
{
[példányosítás];
}
}

Cpt Balu 05-17-2012 23:06

Ha pedig mindenképp a hagyományos eljárás kell a példányosításra, akkor az egyetlen megoldás, hogy a mezők statikusak, a metódusok pedig nem, ilyenkor sok-sok különböző példány jön létre, de ha a metódusok hívásakor mindig ugyanazt a statikus adatot érik el, a látszat az lesz, hogy ugyanazt az objektumot használod :P
A new kulcsszó mindig új memóriaterületet foglal, tehát új példányt hoz létre, ezen változtatni nem lehet (kb olyan, mintha az összeadás jelet akarnád kivonásra használni, nem fog menni és kész)

Redback 05-17-2012 23:44

Quote:

Originally Posted by Cpt Balu (Post 297255)
Ha pedig mindenképp a hagyományos eljárás kell a példányosításra, akkor az egyetlen megoldás, hogy a mezők statikusak, a metódusok pedig nem, ilyenkor sok-sok különböző példány jön létre, de ha a metódusok hívásakor mindig ugyanazt a statikus adatot érik el, a látszat az lesz, hogy ugyanazt az objektumot használod :P
A new kulcsszó mindig új memóriaterületet foglal, tehát új példányt hoz létre, ezen változtatni nem lehet (kb olyan, mintha az összeadás jelet akarnád kivonásra használni, nem fog menni és kész)

Azt hiszem, ez teljesen kielégíti a tudásszomjamat. Köszönöm szépen!


All times are GMT +1. The time now is 18:10.

Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Design partly based on Hódító's design by Grafinet Team Kft.

Contents and games copyright (c) 1999-2020 - Queosia, Hódító

Partnerek: Játékok, civ.hu