2025. december 19., péntek

A Vyxal programozási nyelv érdekességei

A Vyxal egy golfing (versenyprogramozásra optimalizált) programozási nyelv, amelynek szintaxisa és parancsai rövid, szimbólumokból álló utasításokra épülnek, és jellemzően egyetlen karakterből álló műveleteket tartalmaznak. A Vyxal parancsai a következők szerint működnek: Alapvető parancsok és utasítások a nyelvben a legtöbb parancs egyetlen karakterből áll, például + összeadásra, * szorzásra, : duplikálásra szolgál. Speciális karakterekkel érhetők el bonyolultabb műveletek, például f konvertálja a számot listává, S karakterláncokat összefűz. A nyelv támogatja a verem-alapú működést: az értékek a verem tetejére kerülnek, a műveletek a verem tetején lévő értékeket használják fel. A Szintaxis és struktúrában a Vyxal parancsokat egymás után írjuk, és a program futása során a verem tartalma változik a parancsok hatására. Például a 1 2 + program először a verembe teszi az 1-et, majd a 2-t, végül az összeadás (+) a verem tetején lévő két elemet összeadja, és az eredményt helyezi a verem tetejére. Semiotika (jelentéstan) A Vyxal parancsok jelentése szorosan összefügg a karakterekkel, amelyekkel jelöljük őket, tehát a nyelv szemantikája a parancsok karakterkészletéből és a verem-alapú működésből adódik. A nyelvben a parancsok jelentése gyakran intuitív, de számos esetben speciális, a golfing nyelvekre jellemző rövidítéseket is használ. A Vyxal nyelv tehát rövid, szimbólumokból álló parancsokat használ, szintaxisa a verem-alapú feldolgozásra épül, és szemantikája a karakterek és műveletek összefüggéséből származik. A Vyxal programozási nyelvben a betűk jelentése általában a nyelv specifikus parancsokat vagy műveleteket jelöli, mivel a Vyxal egy stack-alapú, kódgolf célú nyelv, ahol minden karakter (betű) egy meghatározott funkciót lát el. Például: A kis- és nagybetűk különböző parancsokat jelenthetnek. Például az a parancs különböző dolgokat csinálhat, mint például összegzést, karakterkonverziót vagy logikai műveletet, attól függően, hogy milyen típusú adatokkal dolgozik. A Vyxal dokumentációban minden karakterhez tartozik egy leírás, hogy mit csinál a stacken lévő adatokkal. A Vyxalban tehát a betűk nem változók vagy típusok, hanem inkább parancsok vagy műveletek, amelyeket a stack-en lévő értékeken végeznek el. 

Alapvető műveletek
  • Összeadás: +
    Példa: 3 5 + eredménye 8.

  • Kivonás: -
    Példa: 10 4 - eredménye 6.

  • Szorzás: *
    Példa: 2 7 * eredménye 14.

  • Osztás: /
    Példa: 15 3 / eredménye 5.

Függvények és változók

  • Függvény definiálása:
    Példa: @triple:1|3*;
    Ez a függvény a bemenetet megszorozza 3-mal.

  • Változó használata:
    Példa: @add_and_halve:1:rhs|←rhs +2/;
    Ez a függvény a bemenetet hozzáad egy másik számhoz, majd elosztja 2-vel.

Logikai és feltételes műveletek

  • If-else szerkezet:
    Példa: [feltétel] [igaz ág] | [hamis ág]
    Például: [^1] 2 | 3 eredménye 2, mert a feltétel igaz.

  • While ciklus:
    Példa: {feltétel} [ciklus törzs]
    Például: {n|n 0>} [n 1- n] csökkenti n-t, amíg 0 fölött van.

További példák

  • Lista létrehozása: [1,2,3]

  • Lista elemeinek összeadása: [1,2,3]∑ eredménye 6.

  • Feltételes végrehajtás: [feltétel] [utasítás]
    Példa: [^1] 2 eredménye 2.

A Vyxal parancsai és műveletei gyorsan tanulhatók, és tömör megoldásokat nyújtanak matematikai, logikai és adatfeldolgozási feladatokra.

Nézzünk egy példát

Írassuk ki 2-100-ig a prímszámokat

2…100 2…√⁺ Ṁ¬∧×∑¬∧

Magyarázat lépésről lépésre:

2…100 # 2-től 100-ig terjedő tartomány
2…√⁺ # minden szám négyzetgyöke +1-ig tartomány (pl. 10-hez: 2…4)
Ṁ¬∧×∑¬∧ # Vyxal lánc: nincs osztó → prímszám

Részletes lebontás a láncnak:

  • - map (alkalmazza a belső kifejezést minden elemen)

  • ¬ - nem (logikai tagadás)

  • - és (logikai és)

  • × - szorzat

  • - összeg

  • ¬∧ - nincs osztó (a teljes lánc eredete)

Tesztelt kimenet: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97


Vyxal utasitások és parancsok magyarázata

A Vyxal egy funkcionális, többparadigmás programozási nyelv, amelyet elsősorban a golf (kódminimálás) céljaira fejlesztettek ki, és számos beépített utasítással rendelkezik, amelyek egyszerűsítik a programozást. Az utasítások és parancsok többsége egy- vagy kétbetűs, és minden egyes karakter meghatározott műveletet hajt végre, például matematikai műveleteket, listakezelést vagy karakterkódolást.

Alaputasítások példák

  • + – Összeadás (két szám vagy lista összeadása)

  • - – Kivonás

  • * – Szorzás

  • / – Osztás

  • : – Duplikálja a legfelső elemet a veremben

  • @ – Eltárolja az aktuális elemet változóba

  • ? – Beolvas egy bemenetet

  • # – Komment (nem hajtódik végre)

  • " – Karakterlánc indítása

  • ' – Egy karakter indítása

Speciális parancsok

  • ƛ – Lambda kifejezés (függvénydefiníció)

  • ø – Speciális karakterekkel kezdődő parancsok (pl. øM – matematikai függvények)

  • Þ – További speciális parancsok (pl. Þf – listákat feldolgozó függvények)

  • ∆ – Matematikai konstansok és függvények (pl. ∆e – e szám, ∆p – π)


Nézzünk egy Kő-papír-olló játékot Vyxal nyelven;

" Kő Papír Olló "s₹
" Kő-Papír-Olló játék!
Válaszd ki a figurádat: 0 - Kő, 1 - Papír, 2 - Olló "P
"Választásod: "P
⌈?i
¬2∧¬*«"Csak 0, 1 vagy 2 közül választhatsz!"P
"Te: "P∑
" Számítógép: "P∑
=«"Döntetlen!"P
0 2=∨2 1=*∨1 0=*«"Te nyertél!"P
"A számítógép nyert!"P

Magyarázat;

" Kő Papír Olló "s₹ - Felosztja a karakterláncot a három opciós tömbre

Először P kiírja a játék bevezetőjét

⌈?i - Felhasználói bemenetet egész számként kéri le

¬2∧¬*« - Ellenőrzi, hogy a bemenet érvénytelen-e (nem 0,1,2), hibát ír ki, ha igen

∑ - A választási szöveget index alapján kéri le a tömbből

3xr0 - Véletlenszerű számítógépi választást generál (0-2)

A ∨ és * karakterekkel ellátott logikai lánc kompakt módon kezeli az összes nyerési feltételt

 

Szövegszerkesztő vyxalban

fájl neve: "K⟇
"i/o: "K⟇
DuplD
=i
| „
(⟇
'‛vagy: '
K
¬


Þc

Magyarázat a Vyxal kódhoz:

  • fájl neve: "K⟇ - szöveg kiírása + input

  • DuplD - bemenet duplikálása (mindkét ág használja)

  • =i| - feltételes ág: ha 'i', akkor ír

  • (vagy: )K¬ - input ciklus üres sorig (¬ break)

  • Þc - sorokhoz sorvég hozzáadása + fájlba írás

  • Olvasás ág: ⟇‡Þ₌ - sorok olvasása, utolsó kar. eltávolítása, kiírás



Lássunk egy vyxal programot ami levezeti a másodfokú egyeletet megoldó képletig

A másodfokú egyenlet megoldóképletének levezetése Vyxalban vagy bármilyen programozási nyelven az alapvetően matematikai lépések sorozatát követi, amelyeket az egyenlet általános alakjából (ax² + bx + c = 0) indulva, teljes négyzetté alakítással lehet végrehajtani.

Lépések a megoldóképlet levezetéséhez

·       Az egyenletet nullára rendezzük: ax² + bx + c = 0, ahol a ≠ 0.

·       Kiemeljük az a-t: a(x² + (b/a)x + c/a) = 0.

·       Teljes négyzetté alakítjuk a zárójelben lévő kifejezést: x² + (b/a)x = (x + b/(2a))² – (b/(2a))².

·       Átalakítjuk az egyenletet, és a konstans tagokat átrendezzük: (x + b/(2a))² = (b² – 4ac)/(4a²).

·       Négyzetgyököt vonunk: x + b/(2a) = ±√(b² – 4ac)/(2a).

·       Kifejezzük x-et: x = (–b ± √(b² – 4ac))/(2a).

Vyxal példa

Vyxalban a megoldóképlet alkalmazására például így nézhet ki a kód:

: 2* : * 4* - √ : + 2* / : - 2* /

Ez a kód (részletesebben magyarázva):

·       Beolvassa az a, b, c értékeket.

·       Kiszámolja a diszkriminánst: b² – 4ac.

·       Négyzetgyököt von belőle.

·       Kiszámolja a két gyököt a képlet alapján.

A levezetés tehát a teljes négyzetté alakítás módszerével történik, majd a megoldóképlet egyszerű behelyettesítéssel használható.

 

Nincsenek megjegyzések:

Megjegyzés küldése