ismétlő számológép

Fórumok

Olyan számológépet keresnék linuxra, ami, ha nyomom az egyenlőség gombot, akkor folyamatosan ismétli az utolsó műveletet, az előző végeredményéből.
Tehát 100+25 és ha lenyomom és nyomva tartom az egyenlőséget, akkor nem a 125 villog, hanem 125,150,175 stb.

Létezik ilyen? Vagy csak beállítás kérdése?

Hozzászólások

Szerkesztve: 2021. 03. 17., sze – 17:41

Kcalc -> Beállítóablak -> Általános -> Repeat operation for each result (ez a 20.04-el shippeltben még nincs lefordítva).

Annyi kitétel van, hogy nem nyomva kell tartani, hanem nyomkodni kell.

Szerkesztve: 2021. 03. 17., sze – 18:49

Felteszed a calc nevű CLI alkalmazást. Ez nem a LibreOffice Calc, hanem a C-style Artibrary-precision Calculator rövidítése, és egy 23 KiB-os progi. Egyfajta C-script interpreter, amiben sok beépített matekfüggvény van. Én ezt használom, akárhányszor ismételhető benne a művelet, meg írhatók benne scriptek mindenféle loop-pal, eredmények és műveletsorok visszahívhatók historyból. De lehet ilyen célra Python-t vagy Octave-ot is használni, esetleg R-t, azok is ugyanez a kategória, csak más szintaxissal. Illletve SageMath vagy Matlab, de azok már overkill kategória számológépnek. Ezek jobbak, mint egy számológépalkalmazás, mert többet tudnak (komplex számokkal, vektorokkal, mátrixokkal végzett műveletek, deriválás, integrálás, diffegyenletek megoldása, numerikus módszerek), az arbitrary precision miatt akár millió tizedesjegyig is simán köpködik az eredményeket, meg gigantikus hatványokat, faktoriálisokat (amiktől a legtöbb számológép kiakad, mint a taxióra), historyból csomó minden menthető, programozhatók, GNU plottal interface-elhetők, nem csak egérrel tudsz bevinni műveletsort (ami akkor kínos, ha félrekattintottál, és csak későn veszed észre, kattintgathatod végig újra az egészet), látod mit vittél be, eredményeket továbbgördítheted, újrafelhasználhatod, visszagörgethetsz, stb.. Ezek nagy részét átlag számológépalkalmazásban nem tudod megtenni.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

Sok megoldás van, ha ki akarsz írni sorozatokat. Akár az imént említett bc, akár más alapból telepített szkript nyelv. Főleg ha van interaktív  módja.

$ bc -l

for (x=0; x<30; x++) { 100 + 25 * x; }

$ python3

>>> for x in range(30):
...     print (100 + 25 * x)
<enter>

De a webes interaktív kód demózó szolgáltatások is jól használhatóak erre.

Python és bc nélkül elképzelhető egy Linux rendszer. Node bash nélkül? :-)

bash$ for i in  {0..29} ; do echo $(( 100 + 25 * i )); done

De gyanítom a kérdező valami kliketi-klikk eszközt keres. (Sőt már meg is találta.)

Sajnos sehogy. Nem véletlenül szoktam (nem annyira) finoman utalni arra, hogy ksh-t kell használni. A ksh93-ban typeset -E f egy float tipusú f változót eredményez (hasonlóan a typeset -i i integerjéhez).

Ja, ez is jó, de a Bash csak integer műveleteket tud. A Pythont meg nem azért ajánlottam, mert az a legjobb, én magam egy bloat lámanyelvnek tartom, de az is egy alkalmas eszköz erre, sokan nem tudják, és általában a legtöbb desktop rendszeren fent van, mert valami behúzza függőségnek, vagy mert alapból telepítve van. És ha már ott van, használható ilyenre, van hozzá egy csomó library (math, numpy, sympy, stb.), akkor miért ne használjuk valamire alapon lehet azzal is próbálkozni. De bármilyen fordított vagy interpretált nyelv jó erre, C, awk is, meg Bashon kívül PHP, Perl, Lua, lisp, nagyon webfetisisztáknak valami JS-es megoldás, vagy online is vannak erre webes számológépek, wolframalpha (ebben nem lehet mondjuk ismételni műveletet), online Python interpreter, stb.. Kinek mi áll kézre, ennek csak a fantázia szab határt, ha valaki nem ragad le windowsos mentalitással a hagyományos számológépappoknál.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

Nem minden disztrón, meg minimal installokon általában nem, de abban igazad van, hogy az egy még alapabb tool, a bc-n alapul a calc is. De ha valaki nagyon RPN-fetisiszta, akár a dc-vel is próbálkozhat. Rettenet sok ilyen alap alternatíva van erre, pár soros CLI toolok, scriptelhetők, interaktívan használhatók. Igaz ezek általában alapabb matekra valók, de fel lehet bennük építeni összetettebb függvényeket is.

A kolléga problémájára visszatérve, calc-ban 100 Enter, majd .+25 Enter, és innen historyból lehet hívogatni, de az is jó, amit a kolléga írt, for vagy while ciklus, és ott végigfuttatni. Ez a jó ezekben a megoldásokban, sokkal rugalmasabbak, mint egy számológép vagy táblázatkezelő.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

Én RPN fetisiszta vagyok.
Nagyságrendekkel közelebb áll az RPN az emberi gondolkodáshoz. Csak le kell győzni a kezdeti lustaságot, és felülkerekedni a rossz beidegződésen (algebraic notation).
Egy HP 50g-vel élem napjaim, ami ráadásul Reverse Polish Lisp-ben programozható. Ha egy ilyen gépet megtanulsz használni (kezdetben kemény a learning curve), egy idő után olyan, mintha az agyad kiterjesztése lenne. Meg se fogalmazod már szavakkal a problémát, csak csapkodod be a stack-re a változókat és hívod sorban az operátorokat. És annyira természetesen békés az egész folyamat. Csodálatos vele dolgozni.

bc-hez annyit tennék hozzá, hogy alapban integer aritmetikával számol. Ha float-ban kell az eredmény, az '-l' opcióval kell hívni. Ezt kezdetben sokan benézik, aztán van nagy csodálkozás.

Te valamit keversz. A bc -l opciója betölt egy extra függvénykönyvtárat (ebben van néhány fv: sin / cos / exp / log / arctan / Bessel ), de minden további nélkül lehet floattal számolni. Ha az kell, akkor a pontosságát kell állítani:

$ bc

scale
0
7/3
2
17/28
0
scale=2
7/3
2.33
scale=22
17/28
.6071428571428571428571

Nem tudom, lehet az én hibám, de nem bírom megszokni. Mindig fejben kell tartani, hogy milyen tagok vannak stackben, és hogy mikre fog vonatkozni a műveleti jel. Valahogy nagyon kitekert logikája van. Azt tudom, hogy a HP nagyon favorizálta.

bc -l trükköt jó tudni, elteszem későbbre.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

Pont hogy nem kitekert a logikája, hanem az emberi gondolkodást követi. Ha ráérzel, milyen sorrendben vágyik a stack-re az adat, onnantól villámgyors. A balról-jobbra logikát kell elfelejteni, végeredményben az agyunk sem így működik. Először szokatlan, azt aláírom. De ha erőt veszel magadon és elkezded használni, egyszer csak nagyon jó és gyors lesz. Nekem olyan, mintha csak gondolnom kéne valamire és máris bent van a gépben.

A stack kezelés már egyénfüggő. Valaki szeret kevés operandusra meghívni operátorokat, valaki először felvisz egy csomó mindent, aztán tolja be az operátorokat. A stack tetejének rotálását kell még megszokni (SWAP és ROT a HP terminológiában), mert erre néha szükség van, főleg amikor az ember még gyakorlatlan.

Ha keveset számolsz géppel, talán nem érdemes belevágni, le tudod élni az életedet e nélkül is.
Számomra a sok számoláshoz brutál változást hozott. Megtanultam a számológéppel gondolkodni. Mintha kapott volna az agyam egy ko-processzort. Az RPL programozhatóság pedig már csak hab a tortán. Valamint hpcalc.org-on van hozzá rengeteg solver és funkció, ami másoknak a munkájukhoz kellett. Speciálisabb területeken ez nagyon jól jön.

Hőn szeretett TI-89-emet fájó szívvel nyugdíjaztam. Mert be kellett látnom, hogy bármilyen jó gép is, sosem lesz olyan, mint a HP. Ráadásul a HP-n az SD slot megoldja a backupolás problémáját is.