Hirdetés
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- Magga: PLEX: multimédia az egész lakásban
- Luck Dragon: Asszociációs játék. :)
- Brogyi: CTEK akkumulátor töltő és másolatai
- laskr99: DFI és DFI Lanparty gyűjteményem
- btz: Internet fejlesztés országosan!
- GoodSpeed: Egy bihari a Hajdúságban
- Syl: Just Works! …. Vagy mégsem?
- sziku69: Szólánc.
- Gurulunk, WAZE?!
Új hozzászólás Aktív témák
-
Keem1
veterán
-
joysefke
veterán
válasz
Jester01
#7895
üzenetére
Nem tudom hogy akarod utána használni, de egy sor/oszlop index ami megmondja hogy az i. sor/oszlop az fizikailag melyik sor/oszlop az viszonylag egyszerű törlést tesz lehetővé.
Hmm...
most jobban belegondolva megfontolom:
Egy 4000x3000 elemű List<List<>> előállításánál elmegy egyszer 300ms, utána minden egyes sor segédlistákból való törlésénél elmegy még sor-törlésenként egyszer 6-8ms (de ez mondjuk 1000x is megtörténhet). Lehet tényleg előrébb tartanék egy index-fordító táblázattal, kérdés, hogy a statikus tömbök rugalmatlansága mennyi plusz futásidőt eredményezne, elvinné-e a megtakarítást.
-
joysefke
veterán
válasz
Jester01
#7895
üzenetére
Számon tartok egy gradiens táblázatot is, amely az egyes képpontok szomszédainak eltérőségét adja meg.
valueMap[x][y] = sqrtLookup[
sqr[Math.Abs((pixelList[modKadder(x, 1,width)][y].R - pixelList[modKadder(x, -1, width)][y].R))]
+ sqr[Math.Abs((pixelList[modKadder(x, 1, width)][y].G - pixelList[modKadder(x, -1, width)][y].G))]
+ sqr[Math.Abs((pixelList[modKadder(x, 1, width)][y].B - pixelList[modKadder(x, -1, width)][y].B))]
//+ sqr[Math.Abs((pixelList[modKadder(x,1,width)][y].A - pixelList[modKadder(x,-1,width)][y].A))]
+ sqr[Math.Abs((pixelList[x][modKadder(y, 1, height)].R - pixelList[x][modKadder(y, -1, height)].R))]
+ sqr[Math.Abs((pixelList[x][modKadder(y, 1, height)].G - pixelList[x][modKadder(y, -1, height)].G))]
+ sqr[Math.Abs((pixelList[x][modKadder(y, 1, height)].B - pixelList[x][modKadder(y, -1, height)].B))]
//+ sqr[Math.Abs((pixelList[x][modKadder(y, 1, height)].A - pixelList[x][modKadder(y, -1, height)].A))]
];minden Pixelpozícióra ki van számolva a gradiensfüggvény arra a pontra. Amikor egy képpont kiesik, akkor a szomszédainak (akik esetleg bentmaradnak) megváltoznak a szomszédai, tehát a gradienstáblázatot is updatelni kell azokban a pixelpozíciókban, ahol változás történt.
egy sor vagy oszlopnyi pixel fizikai (vagy logikai) törlése nagyságrendileg 4000 pixel törlését és 8000 pixelnyi gradiens újraszámítást igényel. Ha 1000 sort veszel ki, akkor mindezt 1000x. A gradiens újraszámítás pedig igényi, hogy gyorsan el tudd dönteni, hogy egy pixelnek kik a szomszédai. Nem rakhatok bonyolult logikát a ki-kinek a szomszédja meghatározásába.
-
Jester01
veterán
válasz
Jester01
#7888
üzenetére
Aha, kétféle GC közül lehet választani, a másik az jobb

Sequential :48ms, count = 3840
Creating 64 sublists in parallel took: 55 ms
Concat of 64 Lists took :2 ms, count: 3840Ha adok neki többet:
Sequential :232ms, count = 19200
Creating 64 sublists in parallel took: 239 ms
Concat of 64 Lists took :3 ms, count: 19200Ez meg nem gyorsul egyáltalán, a lista allokáció az lehet, hogy lockol a háttérben.
-
joysefke
veterán
válasz
Jester01
#7885
üzenetére
Egyébként attól eltekintve, hogy nálad legalább gyorsul, a Mono (még nem próbáltam) ezek szerint valami iszonyat optimalizálatlan kódot készít:
nekem Windowson egy négymagos géppel ca 280ms, függetlenül attól,
hogyan erőlködöm a párhuzamosítással. A procim egy szálon sem erősebb a tiednél. -
joysefke
veterán
válasz
Jester01
#7885
üzenetére
Köszi hogy kipróbáltad!
ez ugye a párhuzamos eredménye:
var cList = result.ToList();Tehát a cList változó.
Elképzelhető, hogy a Mono fordítója észreveszi, hogy a cList semmire sincsen használva, az előtte lévő Concat függvénynek meg ugye a taskoknak sincsenek mellékhatásai, ezért a cList kiszámításához vezető utat kioptimalizálja (= ki sem számítja)?
SZERK:
Nálad valahogy iszonyat jól gyorsul: 796ms x 64 = 51sec az alig több mint a 46sec.De ennyit nem szabadna sehogy sem gyorsulnia, én ugye a Taskok számát a logikai procimagok száma x 4-re vettem. A max gyorsulás amit várnék az a logikai procimagok arányában lenne (nálam 4, nálad 16(????))
-
scarbantia
aktív tag
válasz
Jester01
#7863
üzenetére
Soha nem paramétereztem exe-t, de most futtatásba beírtam az elérési utat és a paramétereket, működik!
Kösz, Viszont a parancssor így nyitva marad, illetve azt szeretném elérni, hogy az indítópultba téve (win7), paraméterezve induljon el automatikusan, és csukja is be maga után a parancssort. -
scarbantia
aktív tag
válasz
Jester01
#7861
üzenetére
Bocs, a lényeg kimaradt, ha futtatom a konzolt, akkor egy pillanatra megnyílik a parancssor, de kb. azonnal be is zárja, még ctrl+s-el se nagyon tudtam megállítani. Azt ki tudtam hámozni, hogy kiírja, 600hz-en fut, és tényleg, onnantól kezdve csökken a vibrálás. Viszont hol adom meg a paramétert?
Én csak az exe-ket szedtem le. Kellene valamelyik .cs fájl, amit átírok?
-
Karma
félisten
-
-
Karma
félisten
válasz
Jester01
#6934
üzenetére
Azért azt is vedd hozzá, hogy az eredeti kérdés számpárokat akart Tárolni. Arra egy kettes Tuple vagy a KeyValuePair bőven elég, nem gondolom hogy annyira indokolt lenne az új osztály bevezetése, ha logika nem tartozik hozzá.
Egy hetes Tuple már tényleg téboly viszont.
-
Dilikutya
félisten
válasz
Jester01
#6360
üzenetére
Valami nem kerek valahol, egyelőre ezt a részét félreteszem. Most előbb adjunk hozzá az adatbázishoz lekérdeznivalót. Fel van töltve kezdő adatokkal, ez egyik tábla kulcsmezői 1-8 értékekkel kezdődnek. Hozzáadok egy új elemet, az megkapja a kulcsnak a 0-át. Hozzáadok még egy elemet, és hibát dob.
A SelectedIndex-nek kéne szerintem jól megadni valamit. -
Jester01
veterán
válasz
Jester01
#6358
üzenetére
Akkor cseréld fel, ha úgy akarja ...
var query = from s in model.Movies
join genre in model.Genres on s.Genre_Id equals genre.Genre_Id
join director in model.Directors on s.DirectorId equals director.DirectorId
select new
{
Title = s.Title,
Release_year = s.Release_year,
Director = director.Director,
Genre = genre.Genre
}; -
Dinter
addikt
válasz
Jester01
#6148
üzenetére
Köszi, ez lesz az.

(#6149) kingabo: láttam már azt a megoldást is, tényleg egyszerűbb, csak ahogy most keresgéltem, az egyikben sem szerepelt

Mondjuk így ha belegondolok, nem az lenne a logikus, hogy az első ReadLine után a második while ciklussal mégegyszer beolvassa az első sort (mert egyébként nem, így jó), vagy csak az én hülyeségem?

-
Goose-T
veterán
válasz
Jester01
#6126
üzenetére
Az a jagged array egészen pontosan.
-
Jester01
veterán
válasz
Jester01
#6106
üzenetére
Ha tudnál konkrétummal szolgálni, röviden mit kellene pontosan cserélni a fentebb belinkelt programom végén, azt megköszönöm.
A Main első sora elé szúrd be, hogy while(true) { és a kapcsoszárójelet zárd be a ReadLine után. Ezzel a program végtelen ciklusban fog futni. Ha jól értettem a kérdést akkor ezt akartad.
-
zuzu000
őstag
válasz
Jester01
#6080
üzenetére
Igaz, igaz, ott a pont! Így már megy, köszi

Szerk.: ez még mindig a beadandó feladatomhoz kell, és tegnap utánaolvasva kiderült, hogy a tanár nem gondolta át egészen. A feladat az, hogy adott egy T szöveg. Keressünk meg azt a legrövidebb X szót, melyre igaz, hogy T minden szava részsorozata X-nek. Részsorozat az, hogyha a karaktereinek törlésével előállítható, a sorrendet figyelembe véve.
Pl: A = "abba" B = "aa", akkor B részsorozata A-nak.
Ahogy néztem ez lenne a Shortest Common Supersequence, amire jelenleg nincs olyan kód (n szavú szövegre), mely ésszerű időn belül lefutna. Ti mit tudtok erről? -
zuzu000
őstag
válasz
Jester01
#6078
üzenetére
De ez 3-at adna vissza b-re, nem? Azt akartam, hogy maximum hányszor fordul elő, tehát ha 'a' már volt az első szóban, és a másodikban is csak egyszer van, akkor ne növelje az értéket. Ha 'b' egyszer van az első szóban és 2x a másodikban, akkor 2 legyen a mimennyi megfelelő eleme. Vagyis csak akkor növelje a mimennyi[i2]-t, ha többet talál a következő szóban, mint amennyi már eddig van.
-
Karma
félisten
válasz
Jester01
#5548
üzenetére
Dehát wrapperből indult ki az egész feladat, semmi értelme átrakni egy másikba...
zsambek:
A Dictionarynek van egy ContainsKey metódusa, ami true-t ad vissza, ha van benne ilyen kulcs.
Például így, ami nem a legszebb, de szerintem érthető mit csinál:
if (eredmenyek.ContainsKey(teszt))
{
eredmenyek[teszt] ++;
}
else
{
eredmenyek[teszt] = 1; -
Karma
félisten
válasz
Jester01
#5544
üzenetére
A konkrét feladat ismeretében szerintem nincs gond a stringgel, hiszen egészen addig a pontig két intről van szó egy structban, amiket csoportosítási feltételnek kell felhasználni meg formázottan kiírni.
Ehhez még vegyük hozzá, hogy a Tuple megint egy új típus lenne, amit zsambeknak meg kéne ismernie két nappal az érettségi előtt.
Egyébként meg LINQ-kel egy sorban meg lehetne írni az egész feladatot, de nem ez volt a kérdés.
-
-
nolika
senior tag
válasz
Jester01
#4840
üzenetére
A gond az, hogy a IO::SOCKET perl modul IPv6 nem működik rendesen Windows alatt. Tudattam a fejlesztővel is. Tehát nem nyit socketet Windows alatt. Épp ezért most virtuális linux-al tesztelem.
Windows alatt fejlesztenék, mert valószínűleg ez tovább fejlődhet a jövőben, további célokat szolgálhat.A kérdés az, hogy maga az állapotokat egy táblázat színezgetésével megoldható? Vagy van C#-ban ennél szebb megoldás?
Illetve maga a színezgetést hogyan állítom be? Ugye ezt PERL-ben egy új labelt kellett pakolni az adott táblázat helyére. -
#51177472
törölt tag
válasz
Jester01
#4798
üzenetére
Ehhez visszatérve lenne az a kérdésem, hogy a számlálónak ha beállítom hogy a +1 legyen, akkor 1-et ad másodpercenként, ha 15 akkor 15-öt, minden egész számmal.
Viszont én azt szeretném, hogy 0.5-öt adjon másodpercenként (így 0,5 aztán 1, aztán 1,5 aztán 2, stb. növekedne). Írtátok, hogy ez X/2, de ha átírom a +1et 1/2-re, akkor nem működik. Tudtok segíteni? -
Jester01
veterán
válasz
Jester01
#4797
üzenetére
using System;
using System.Windows.Forms;
public class MainForm : Form
{
private Label _label;
private Timer _timer;
private double _counter;
static public void Main ()
{
Application.Run (new MainForm ());
}
MainForm ()
{
_label = new Label();
Controls.Add(_label);
_timer = new Timer();
_timer.Interval = 100;
_timer.Tick += TimerTick;
_timer.Start();
}
void TimerTick(object sender, EventArgs args)
{
_counter += 0.1;
_label.Text = _counter.ToString("0.0");
}
} -
metrion
aktív tag
válasz
Jester01
#4755
üzenetére
Köszi, de nem jó. :S
Amúgy ez a DrawStripe ez csak a függvény fantázianeve?
namespace magyar_zaszlo
{
class Program
{
static void Main(string[] args)
{
int kszelesseg = (Console.WindowWidth / 2);
int kmagassag = (Console.WindowHeight / 2);
Console.SetCursorPosition(kszelesseg, kmagassag);
DrawStripe(kszelesseg, kmagassag, ConsoleColor.Red);
DrawStripe(kszelesseg, kmagassag + 3, ConsoleColor.White);
DrawStripe(kszelesseg, kmagassag + 6, ConsoleColor.Green);
}
static void DrawStripe(int x, int y, ConsoleColor color)
{
Console.BackgroundColor = color;
for (int i = 0; i < 3; i += 1)
{
Console.SetCursorPosition(x, y + i);
for (int j = 0; j < 40; j += 1)
{
Console.Write(' ');
}
}
Console.ReadKey();
}
}
} -
Karma
félisten
válasz
Jester01
#4740
üzenetére
Ilyet éltem már én is; ettől függetlenül szerintem megvan a maga megérdemelt helye az eszköztárban, mert az se ritka, hogy valami regexben kapásból olvasható, száz-ezer sor imperatív kódban meg nem.
(#4742) peter9228: A 48 valójában a '0' karakter ASCII kódja, a Convert.ToInt32 meg teszi a dolgát, és a karakterből ezt állítja elő a char típusból. Használj valami mást a számmá konvertáláshoz, vagy mondjuk használd ki, hogy az ASCII kódból egy egyszerű kivonással (48) megkapod a számjegy értékét.
Amúgy meg StreamReadert csak és kizárólag using blokkal együtt használj, plz!
-
-
Karma
félisten
válasz
Jester01
#4734
üzenetére
Milyen más módon mennél neki a regexen kívül?
Önerőből lehet, hogy én egy korutint írnék rá ami egyszer iterál végig a stringen, figyeli a relációs jeleket, és azok alapján adja vissza a substringeket. De egy kicsit merengve rajta az ehhez kellő állapotgép ekvivalens egy egyszerű regexszel.
-
Karma
félisten
válasz
Jester01
#4624
üzenetére
Szerintem helyzetfüggő, lehet hogy ilyen esetben a fél eredmény a cél.
Mondjuk a hibakezelés egyik esetben se merülne ki ennyiben. Azért kár try-catchbe tenni, hogy utána szó nélkül lenyelje a kivételt; mint ahogy ha esetleg nem találkozott a TryParse-szal, minden egyes hívást külön try blokkba rakjon. Az előbbire tömegesen, de azért az utóbbira is láttam már példát.
-
kkdesign
senior tag
válasz
Jester01
#3985
üzenetére
elvetettem a tömbös megoldást, de most sem jutok el odáig, mi lehet a hiba. Nem tudom, hogy hogyan kell itt helyesen elhelyezni működőre a 2 számot
static void Main(string[] args)
{
double szam1=64;
double szam2=32;
Szamolo szObj = new Szamolo(szam1, szam2);
Console.WriteLine((double) szObj.Osszead(szam1, szam2)); // ide ad hibát: no overload for method readline takes 2 arguments
Console.ReadKey();
}
} -
-
-
Joci93
senior tag
válasz
Jester01
#3929
üzenetére
Pontosan valahol itt:
"A listában összegezze a sorokat, az oszlopokat és számítsa ki a főösszeget is.
Minden számot 10 széles mezőben 2 tizedesjeggyel írjon ki."vlevi: "Jó, tudom, hogy az a sorok és oszlopok száma" Igen, az az első két szám a sorok és oszlopok száma. Szerintem két külön szám vagy szívat a tanár xD
-
-
amargo
addikt
válasz
Jester01
#3446
üzenetére
"A GC belső működésére építeni szerintem elég szörnyű dolog" Ezzel egyetértünk, nem értem hol írtam az ellenkezőjét?
Szerintem meg elvárható, hogy valaki tudja, hogy miért használ using-ot és az IDisposable mire való és bizony tudja, hogy mi milyen költségekkel jár.Most már értem

A végén martonx megemlítette a GC működését is. Félre érthetően nem emeltem ki, melyik részére reagálok, meg igazából előtte olvastam el az előző HSZ-t is és valahogy összevontam. -
Cyno
tag
válasz
Jester01
#3380
üzenetére
Jogos.
A labelből olvasom ki a user nevét aki bejelentkezett, egy login formon(login form, user textbox-ából -> a mianForm egyik label-ébe).(Ezt a megoldást tudtam magamból kisajtolni
)
És akkor most ott tartok, hogy ebből a labelből kellene kiolvasni a user nevét, hogy lássam van-e jogosultsága bizonyos tabPageket látni.Igazad van, elfelejtettem bekötni, de ötletem sincs, hogy mihez tudnám. A load-hoz nyilván nem.
Szerk.:
Rész siker.
VS-ből bekötöttem a focus_activated-hez.
Ez szép is lenne, de ez meg ugye állandóan meghívja. -
WonderCSabo
félisten
válasz
Jester01
#3329
üzenetére
Én mindjárt megnézem, ha VS elé kerülök. Én teljesen tisztán emlékszem arra, hogy felhasználói bezárás után exceptiont kaptam újbóli megnyitás miatt. Viszont most az télleg homályos, hogy WinForms vagy WPF alatt (ugyanazt az alkalmazást kellet megírnom mindkét felületen, ezért mosódik össze).
-
WonderCSabo
félisten
válasz
Jester01
#3207
üzenetére
Ez természetesen így van, de 10 db (vagy sokkal több) szám esetén 1-hez nagyon közeli valószínűséggel nagyon rövid idő alatt fut le. Én tesztelgettem ezt, és még sosem sikerült elhúzni az időt ezzel. Persze ha biztosra akarsz menni, akkor csinálsz egy láncolt listát 1-n-ig, megkevered őket, aztán random indexeket választasz és a választottad kiszeded a listából, csinálod ezt amíg üres nem lesz a lista.

Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- HIBÁTLAN iPhone 14 128GB Starlight -1 ÉV GARANCIA -Kártyafüggetlen, MS3680, 100% Akkumulátor
- DELL Precision 5540 Workstation i7-9850H Nvidia Quadro T1000 32GB 1000GB 15.6 új akksi 1év garancia
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- HIBÁTLAN iPhone 14 Pro Max 256GB Space Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3541
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7500F 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő



De úgy gondolom, ha két (primitív) érték között nincs semmilyen kapcsolat azon kívül, hogy időben egyszerre kell őket használni, még nem vezetnék be hozzá külön osztályt. Mondjuk internal láthatóságnál kb. mindegy...

![;]](http://cdn.rios.hu/dl/s/v1.gif)






