Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

Fórum: A KöMaL pontverseny

  [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]    [11]    [12]    [13]    [14]    [15]    [16]    [17]    [18]    [19]    [20]    [21]    [22]    [23]    [24]    [25]    [26]    [27]    [28]    [29]    [30]    [31]  

Szeretnél hozzászólni? Jelentkezz be.
[181] Ronci Bonci2004-11-15 21:12:58

Hi!

Van valakinek valami jó ötlete, hogy Pascal alatt, akármelyik pascal fordítóval, hogy lehet értelmesen nyitott tömböket (v. dinamikus tömbök), létrehozni? Mert nekem sehogysem sikerül, csak freepascal 1.9.2 alatt, és az meg 1,5 percenként kifagy, mert csak az 1.0.10-es verzió a "stabil".

Teljesen kétségbe vagyok esve, ezzel szenvedtem egész délután, és emiatt nem tudom megírni a programom...persze Delphi alatt menne, de az nem jó, a többit meg nem ismerem. :-)

Szóval, tudna valaki segíteni?

Nagyon szépen köszönöm! Ronci

[180] Király Zoltán2004-11-04 17:48:15

Kedves Balázs, és egyéb kérdezők! Úgy látszik az S2. feladat sokakban vetett fel különböző kérdéseket. Bár Kós Géza már adott egy korrekt választ a futási időre, de most segítségként adok némi pontosabb, további infót:

A programok Athlon XP 1800+ processzoron lesznek tesztelve, a teljes memória 512 Mb, úgyhogy egy program lehetőleg ne akarjon 300 MB-nál többet használni. Ezen a gépen az én összedobott -- a lényegét tekintve néhány soros -- programom kevesebb, mint 2 sec alatt futott a nagy tesztadatokon, és fél órán belül az óriásokon (itt max 38 MB memóriát használva). Kipróbáltam egy profi által megírt programot is, az az óriási tesztadatokon is 0.1 sec alatt lefutott.

Fontos: (éppen memória-kímélés szempontjából): nem kértük a berakandó tárgyak sorszámát, az output csak az elérhető maximálás érték!

Temp/swap: inkább ne. Persze a swap nem a programon múlik, ha több, mint 300 MB-ot zabál, úgyis létrehozza, de ettől várhatóan nagyon lassú lesz. Ha mindenképp szükségesnek érzel egy temp file-ot, akkor amiatt nem fogom formailag hibásnak értékelni, ha a file neve "/tmp/hatizsak.dat" lesz (de persze ez is legalább akkora lassulást okoz).

A programokat Linux alatt szeretném tesztelni, gcc ill. Free Pascal fordítókkal, de persze minden, a kiírásnak megfelelő megoldás is érvényes, ha valahogy le tudom fordítani. Lásd még Kós Géza régebbi megjegyzéseit.

Stippinger Marcell kérdezte, hogy az egyes változóknál milyen maximális értékekre kell felkészülni. Ugyan ez a teszt file-okból kiolvasható, de egy profi program meg kell, hogy engedje az összes szereplő számnál a 232-1 maximális értéket.

Király Zoltán, a feladat kitűzője.

Előzmény: [179] clayman, 2004-11-04 00:21:22
[179] clayman2004-11-04 00:21:22

Tisztelt Kós Géza,

Ismét az S feladatokkal kapcsolatban lenne 2 rövid kérdésem:

- a program által felhasználható maximum memória mennyi? (természetesen csak nagyságrendekben...)

- futás közben a program hozhat-e létre átmeneti, temp/swap fájlokat? - ha igen, ezek mérete korlátozva van-e, tehát mondjuk egy 300MB-os fájl használható-e!?

Válaszát előre is köszönöm, Engedy Balázs

[178] Kós Géza2004-11-02 15:23:12

Igen.

Előzmény: [176] cescrules, 2004-11-01 21:10:05
[177] Kós Géza2004-11-02 15:22:34

Kedves Balázs,

A program olvasson a standard bemenetről és írjon a standard kimenetre. A feladatot nem én fogom javítani, de feltételezem, hogy a javító szeretné majd a tesztelést minél inkább automatizálni, ezért az inputot egy fájlból irányítja a standard inputra. A feladatban kértnél több interaktivitás nem szükséges, sőt.

A fejlesztői környezet nem szabad, hogy számítson. Az S.1. feladat esetében -- amit én javítottam --, a linuxos GCC és a Free Pascal kiválóan működött.

Előzmény: [175] clayman, 2004-11-01 16:42:18
[176] cescrules2004-11-01 21:10:05

Tisztelt szerkesztoseg,

A B.3761. feladatban valos megoldasokat keresunk?

Koszonom.

[175] clayman2004-11-01 16:42:18

Tisztelt Kós Géza!

Nekem is az S. pontversennyel kapcsolatban lenne 2 kérdésem.

Az e havi (S.2) feladatban igencsak tetemes mennyiségű adatot kell a programnak futtatáskor beolvasni. Gondolom a javítók közül senki sem vállalja, hogy kézzel ezeket minden futtatásnál beírja. Ebből kifolyólag a kérdésem - mivel a feladatban erre vonatkozó utalást nem találtam -, hogy a programnak hogyan kell beolvasnia az adatokat, például jó e az úgy, ha bekéri egy fájl nevét, ami az 'bemenetet' tartalmazza, vagy javításnál ez egy appal lesz megoldva ami küldi a tesztfájlok tartalmát az stdin-re?

Továbbá másik kérdésem, hogy MS Visual C++ .NET 2003 fejlesztőkörnyezetben készült (természetesen win32.console.application) megoldás megfelelő -e. (remélem mert a múlt havit is ebben készítve küldtem be ;) )

Előre is köszönöm a választ, Engedy Balázs

[174] BrickTop2004-10-19 21:17:18

Nem túl fontos kérdés, és sajnos az A pontversenyhez sincs túl sok közöm, de miért pont MO az űrváros neve az A.355. feladatban?

[173] Kós Géza2004-10-19 16:54:21

Kedves kondenzator,

1. Mindenképpen formai hiba -- ha nem is súlyos --, a feladatban szó sem volt fájlokról.

Eredetileg a "konzol" szó (ami lényegében a standard be- és kimenetet jelenti) szerepelt a feladatban, csak valakinek nem tetszett. Végül abban maradtunk, hogy a program egyszerűen csak "olvasson be" és "írjon ki".

2. Az egyes feladatokat nem ugyanazok javítják, így semmi biztosíték nincs arra, hogy ugyanazokat a fordítókat fogjuk használni. Arra viszont törekedni fogunk, hogy fordítóspecifikus dolgok nélkül is meg lehessen a feladatokat oldani.

3. Nem valószínű, hogy 10 perceken múlna a dolog. Egy hatékony program ennél sokkal gyorsabban lefut, egy nem hatékony pedig 1000-szer ennyi idő alatt sem. Találd ki úgy az algoritmusodat, hogy a te gépeden egy percen belül lefusson.

Előzmény: [171] kondenzator, 2004-10-19 13:46:20
[172] Kós Géza2004-10-19 16:40:45

Azt kell igazolni, hogy a két sorozatban összesen végtelen sok összetett szám van.

Előzmény: [170] KiCsa, 2004-10-16 21:56:50
[171] kondenzator2004-10-19 13:46:20

Tisztelt Kós Géza!

1. A feladat szövegében nem szerepelt konkrétan, hogy a standard be- ill. kimenetet kell használni. Meg lehet-e a kapni a teljes pontszámot az első feladatra (S.1.), ha a beküldött program konstans nevű fájlokkal (input.txt és output.txt) dolgozik?

2. A leírásban írtam, hogy én az ingyenes lcc és a gcc fordítókkal teszteltem a programot. Maradhatok-e továbbra is ezeknél a fordítóknál? Ha nem, akkor melyik(ek)kel lesz kipróbálva?

3. Idézet az S.2. feladatból: "max 10 perc futási idő alatt". A kérdés, hogy milyen szintű géppel lesz az idő mérve? Ha egy program lefut 9 perc allatt egy 2.5Ghz-es gépen (és a diák mindenféle rosszindulat nélkül ilyenen is fejleszt), de egy 800Mhz-es gépen lesz tesztelve, akkor kicsúszik az időkeretből. Tehát nem tudom mihez viszonyítsak.

Előre is köszönöm a válaszokat!

Előzmény: [165] Kós Géza, 2004-10-12 10:24:49
[170] KiCsa2004-10-16 21:56:50

Tisztelt Szerkesztőség!

Az A. 353. feladatban az "együttvéve" alatt mit kell érteni?

Köszönettel: Király Csaba

[169] Degu2004-10-14 17:45:56

Köszönöm az utánajárást

[168] Kós Géza2004-10-13 23:33:14

I. Egy kicsit utánajártam a dolognak. Először is hadd jegyezzem meg, hogy az StrToFloat függvény nem az operációs rendszer része, és egy ilyen kérdés sohasem lehet az operációs rendszer szintjén bedrótozva.

* * *

Háromféle fordítóval próbálkoztam:

1. Dos, Turbo Pascal 6.0. Ez nem ismeri az StrToFloat függvényt, ami nem meglepő, hiszen egy több, mint 15 éves fordítóról van szó. :-)

2. Linux, Kylix3 (delphi). Valószínűleg Windows alatt is nagyon hasonló a helyzet, de ennek hadd ne én járjak utána. :-) A DecimalSeparator nevű változó mondja meg, hogy milyen karakter választja el az egészrészt a törtrésztől. Tehát akár egy programon belül is lehet ide-oda kapcsolgatni. A változó kezdeti értéke fordításkor dől el, mégpedig -- legalábbis Linuxban -- a LANG környezeti változó alapján. A változó értékét a fejlesztői környezetben is felül lehet bírálni.

3. Linux, Free Pascal. Az StrToFloat függvény és a DecimalSeparator változó is létezik. A dokumentáció szerint ugyanúgy kellene működni, mint az előző példában, de nekem az StrToFloat minden esetben csak a pontot fogadta el.

* * *

Röviden összefoglalva:

- Használhatod az StrToFloat függvényt.

- A fejlesztői környezetben állítsd be a LANG-nak megfelelő változó értékét mondjuk "en"-re, vagy pedig a programban a DecimaSeparator értékét '.'-ra. Ettől kezdve az StrToFloat a pontot fogja elfogadni.

-----------------------

II. Nem látok különbséget a Dos, a Windows vagy egy Unix shell között. Ugyanazokkal a parancsokkal lehet írni és olvasni. Miután a forráskódot kell beküldeni, nincs értelme az olyan mondatoknak, hogy "windowsra lett fordítva".

Előzmény: [167] Degu, 2004-10-13 18:10:46
[167] Degu2004-10-13 18:10:46

I.Köszönöm a segítséget, de ami nekem problémát okoz az az, hogy windows alatt (de konzolról) fut a program, a tizedes törteket először stringbe olvassa, csak utána alakítja át, de a magyar windows beépített (delphi:strtofloat) függvénye tizedesvesszőt használ, amit egyszerűen ki tudokcserélni, de nem tudom, hogy magyar vagy angol windows alatt lesz-e tesztelve a program. II. Egyáltalán windows konzolról lesz-e tesztelve a program? Dos alól nyilván nem müködik, mert windowsra lett fordítva, ez fontos, mert, ha csak mondjuk turbo pascal programot fogadnak el még átírom.

[166] Kós Géza2004-10-12 10:26:37

A feladat szövegében ez áll:

,,... minden egyes sor legfeljebb tizennégy számjegyet és egy tizedespontot tartalmaz.

Előzmény: [164] Degu, 2004-10-11 18:48:24
[165] Kós Géza2004-10-12 10:24:49

Az adatokat a standard inputról kell olvasni és az eredményt a standard outputra kell írni. Ez alapértelmezésben a billentyűzet és a képernyő, de a megoldások tesztelésnél mindkettőt át fogjuk irányítani.

Nem mondjuk meg előre, hogy hány adat lesz, a végét enélkül is észre lehet venni. (A fájl végét a billentyűzetről is lehet jelezni, DOS-ban Ctrl-Z, UNIX-ban Ctrl-D.)

Előzmény: [163] Degu, 2004-10-11 18:42:47
[164] Degu2004-10-11 18:48:24

Még egy probléma: a magyar operációs rendszerek tizedesvesszőt használnak, nem tizedespontot, ezért a string->valós szám átalakító function is ez alapján dolgozik. Feladata-e a programnak, hogy eldöntse, hogy milyen nyelvű op rendszeren fut, vagy vehető-e a magyar alapértelmezettnek? Mindenki türelmét köszönöm.

[163] Degu2004-10-11 18:42:47

Megint az s pontversennyel kapcsolatban: Képernyőröl kell müködnie az inputnak? Megkérdezheti a program, hogy hány bejövő adat lesz?

[162] Kós Géza2004-10-11 17:56:58

Semmi akadálya. Küldhetitek egy borítékban.

Előzmény: [161] KiCsa, 2004-10-11 17:28:55
[161] KiCsa2004-10-11 17:28:55

Tisztelt Szerkesztőség!

Az lenne a kérdésem, hogy ha én és a húgom is küldünk be feladatokat, akkor azokat küldhetjük-e egy borítékban, vagy egy borítékon belül két másik borítékba téve, hogy ne kelljen duplán fizetni a Postán. Köszönettel: KiCsa

[160] Kós Géza2004-10-07 13:14:49

Nincsenek komoly tapasztalataim a Delphivel, de úgy tudom, hogy valamennyire felülről kompatibilis a Pascallal. Így tudsz Pascal programokat írni a Delphi környezetben.

Előzmény: [158] Degu, 2004-10-06 18:34:20
[159] Kós Géza2004-10-07 13:12:29

Kizárólag a versenykiírásban felsorolt nyelveken fogadjuk el a megoldásokat.

Próbáld meg a javító szemével nézni a dolgot. Képzeld el, hogy beérkezik mondjuk 150 program, 30 nyelv összesen 50-féle változatában. Ezt mind el kell olvasnod, le kell fordítanod és tesztelned is kell.

A javítók dolgát nem akarjuk fölöslegesen megnehezíteni, ezért a lehetséges nyelvek listáját igyekeztünk minél szűkebbre szabni.

Előzmény: [157] WebMonster, 2004-10-06 15:18:32
[158] Degu2004-10-06 18:34:20

Ehhez kapcsolodva, lehet s pontversenyes feladatot Delphiben megoldani(ezt a nyelvet s-nél nem említik)?

[157] WebMonster2004-10-06 15:18:32

Üdvözlet mindenkinek! Egy kérdésem volna a számítástechnika pontversennyel kapcsolatban. Azt szeretném kérdezni, hogy be lehet küldeni prolog nyelvű programokat, vagy csak C-ben írtakat? Ugyansi szerintem elegánsabban meg lehetne oldani a problémákat prologban ;)

  [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]    [11]    [12]    [13]    [14]    [15]    [16]    [17]    [18]    [19]    [20]    [21]    [22]    [23]    [24]    [25]    [26]    [27]    [28]    [29]    [30]    [31]