[go: nahoru, domu]

Přeskočit na obsah

Malbolge

Z Wikipedie, otevřené encyklopedie

STOP DAVID.V 😡🔫

Příklad Programu

Ahoj světe!

I love biches.

(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc. 

CAT Program

Raideeeeeed


Design

Malbolge je programovací jazyk pro ternární virtuální stroj.

Standardní interpretace a oficiální specifikace neodpovídají dokonale.[1] Jeden rozdíl je, že kompilátor zastaví provádění s daty v rozsahu 33-126. I když to bylo zpočátku považováno za chybu v kompilátoru. Ben Olmstead uvedl, že to bylo zamýšleno a ve skutečnosti byla chyba ve specifikaci.

Me: 🔫

David V.: 😭😭😭

Ukazatel notace

d může držet adresu paměti, [d] je hodnota uložená na této adrese, [c] je podobná.

Ve jmeno otce syna a ducha svateho posilam Davida V. Do pekel

Instrukce

Malbolge má osm pokynů. Jakou instrukci provést zjistí tím, že vezme hodnotu [c], přidá k ní hodnotu c a vezme zbytek je-li to děleno 94. Konečný výsledek říká interpretovi, co má dělat:

Instrukce
Hodnota

([c] + c) % 94

Instrukce Vysvětlení
4 jmp [d] Hodnota [d] přeskočí a spustí provádění pokynů.
5 out a Vytisknutím na hodnotu a se zobrazí na obrazovce, jako ASCII znak.
23 in a Vstupy mají charakter jako ASCII kód. Nový řádek má kód 10. Konečný stav souboru je kód 59048.
39 rotr [d]

mov a, [d]

Otáčí hodnotu [d] (0002111069 se stává 2000211169). Výsledek uloží jak na [d] tak na a.
40 mov d, [c] Zkopíruje hodnotu [d] na c.
62 crz [d], a

mov a, [d]

Dělá šílený provoz (viz níže) s hodnotou [d] a hodnota a. Výsledek uloží jak na [d] tak na a.
68 nop Nic nedělá.
81 end Končí Malbolge program.
Jakékoli jiné hodnoty dělá to samé jako 68: nic. Tyto jiné hodnoty nejsou povoleny v programu.

Šílený provoz

U každé dvojice ternárních číslic z obou vstupů provede operaci dle následující tabulky. Například crz 0001112220, 0120120120 dává 1001022211.

Šílený provoz[2][3]
crz Vstup 2
0 1 2
Vstup 1 0 1 0 0
1 1 0 2
2 2 2 1

Šifrování

Po instrukci hodnota [c] bude nahrazena samotným kódem 94. Poté je výsledek šifrován jednou ze dvou rovnocenných metod.

Metoda 1
Níže najdete výsledek. Uložení ASCII kódu na znak a poté na [c].
0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123
----------------------------------------------------------------------------------------------
9m<.TVac'uY*MK X~xDl}REokN:#?G"jsem@5z]&gqtyfr$(we4{WP)H-Zn,[%\3dL+Q;>U!pJS72FhOA1CB6v^=I_0/8|jsb
Metoda 2
Níže najdete výsledek. Uložení šifrované verze na [c].
Šifrování tabulky
Hodnota Šífrované Hodnota Šifrované Hodnota Šifrované Hodnota Šifrované Hodnota Šifrované
0 57 19 108 38 113 57 91 76 79
1 109 20 125 39 116 58 37 77 65
2 60 21 82 40 121 59 92 78 49
3 46 22 69 41 102 60 51 79 67
4 84 23 111 42 114 61 100 80 66
5 86 24 107 43 36 62 76 81 54
6 97 25 78 44 40 63 43 82 118
7 99 26 58 45 119 64 81 83 94
8 96 27 35 46 101 65 59 84 61
9 117 28 63 47 52 66 62 85 73
10 89 29 71 48 123 67 85 86 95
11 42 30 34 49 87 68 33 87 48
12 77 31 105 50 80 69 112 88 47
13 75 32 64 51 41 70 74 89 56
14 39 33 53 52 72 71 83 90 124
15 88 34 122 53 45 72 55 91 106
16 126 35 93 54 90 73 50 92 115
17 120 36 38 55 110 74 70 93 98
18 68 37 103 56 44 75 104

Reference

V tomto článku byl použit překlad textu z článku Malbolge na anglické Wikipedii.

  1. Dostupné online. 
  2. TEMKIN, Daniel. Interview with Ben Olmstead [online]. 3 November 2014 [cit. 2015-06-21]. Dostupné v archivu pořízeném dne 2016-10-18. 
  3. IIZAWA, Hisashi. Programming Method in Obfuscated Language Malbolge [online]. Graduate School of Information Science, Nagoya University Furo-cho, Chikusa-ku, Nagoya City, Aichi, 464–8603 Japan: [cit. 2015-06-21]. Dostupné online. (Japanese)