User:Iddi01

From Esolang
Jump to navigation Jump to search

Semi-serious language list

(My other nick: NDusN, due to how some Redcode software display теsт)

The username was originally without meaning, but you can consider it as a recursive acronym, iddi01 dislikes Discord indefinitely.

I'm an expert in uniсode and errology (i know how to make unimaginably long errors from very compact code, although updates to Python limits the possibilities).

I never publish esolangs unless they're unique in some way and i've implemented them (and i encourage everyone else to do that as well!)

Execode/Exechars
Genetic
IP
emit
Mеmоrу
Rеlаng

I nearly stopped creating esolangs because it's impossible to bring attention to a language by only creating a page on this wiki, and what fun it is to create languages that nobody will ever know of?

Programming games

I am a big fan of programming games ever since i met brainfUck (a.k.a BF joust), which unfortunately almost went dead due to the same reason as Core War, which is that the programs (warriors) are becoming too strong to even think about making for a beginner, and so people will lose interest in it.

And BF joust is the easy one, and i mean easy. The Beginner's hill for Core War is about as easy as the only hill for BF joust. So BF joust should be the game to introduce programming games to beginners.

Everybody, please make more and better beginner resources (including hills) for BF joust and Core War, so that they will become popular once again.

My brainfUck (not bf!) programs

You can get an idea of how the three works by visiting the strategy guide and then scrolling to the bottom of BF Joust champions.

This program is a champion called β (i still wish the hill could allow non-ASCII characters), although it is #22 at time of writing:

(>+)*4>[<<<<(+)*5<(-)*15(>)*5(>[+[+[---[-[(-[{(+)*15(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%13}])%11]]]]])*21]+
>[<<<<(+)*5<(-)*7<(-)*15(>)*6(>[+[+[---[-[(-[{(+)*15(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%13}])%11]]]]])*21]+
>[<<<<(+)*5<(-)*7<(+)*16<(-)*15(>)*7(>[+[+[---[-[(-[{(+)*15(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%13}])%11]]]]])*21]+
>[<<<<(+)*5<(-)*7<(+)*16<(-)*17<(-)*15(>)*8(>[+[+[---[-[(-[{(+)*15(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%13}])%11]]]]])*21]+
(<)*4
>-[<++++<(-)*17<(+)*97<(-)*132<(-)*16(>)*11(>[+[+[---[-[(-[{(+)*22(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%20}])%18]]]]])*21]+
>-[<++++<(-)*17<(+)*65<(-)*97<(+)*132<(-)*16(>)*12(>[+[+[---[-[(-[{(+)*22(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%20}])%18]]]]])*21]+
>-[<++++<(-)*17<(+)*65<(-)*97<(+)*97<(-)*132<(-)*16(>)*13(>[+[+[---[-[(-[{(+)*22(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%20}])%18]]]]])*21]+
>-[<++++<(-)*17<(+)*65<(-)*97<(+)*97<(-)*132<(+)*132<(-)*16(>)*14(>[+[+[---[-[(-[{(+)*22(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%20}])%18]]]]])*21]+
(<)*7
(-[(>)*9(>[+[+[---[-[(-[{(+)*21(+[{(+)*89(+.)*27(>[(+)*113(+.)*27>])*-1}])%19}])%17]]]]]-)*21](+)*65>)*8
(>[([+[+[---[-[(-[{(+)*25(+[{(+)*93([+{[+-+]}[++-[++-]]>(+)*117])%5000[++-[++-]](>[(+)*117([+{[+-+]}[++-[++-]]>(+)*117])%5000[++-[++-]]>])*-1}])%23}])%21]]]]]+>)*21](+)*21)*21

I always thought i'm only good at offensive programs, but then i made a one-line defensive program (clock) which made #1, unfortunately not as original as the above:

>>>+<-<-(>(-)*128<+[<(-)*111(>)*9(+)*111(+.)*33(<)*9(-)*111(>)*10(+)*111(+.)*33(<)*10(---+)*-1]-)*8>+[-((-)*256<+[<(---+)*-1]->)*8(-)*96431<(+)*65(>)*9(>[(+)*111(+.)*32>])*19](+)*21<(-)*33(>)*11([(-)*106[-.][--+[--+]]>]>)*21

Later, i made ε, a rush program which came first despite two_thirds winning against everything else:

>+>-(>)*6(>[-[-[-[++++[+[+([(+[{(-)*11(-[{(-)*97([-{[-+-]}[++-]>])%2000[++-]>}])%13}])%9]>)*21]]]]]])*5
(<-<+)*5<+[<<(-)*132(>)*13(>[-[+([(+[{(-)*12(-[{(-)*97([-{[-+-]}[++-]>])%2000[++-]>}])%14}])%12]>)*21]])*16]
-<-[<(-)*132(>)*13(>[-[+([(+[{(-)*12(-[{(-)*97([-{[-+-]}[++-]>])%2000[++-]>}])%14}])%12]>)*21]])*16]+((+)*5>(-)*5>)*6
(<(-)*7<(+)*7)*6<(+)*43>((+)*17>(-)*17>)*4>>>>>
((>[-[+([(+[{(-)*16(-[{([-{[-+-]}[++-]>])%5000[++-]>}])%18}])%16]+>)*21]](+)*11)*2>)*4
([(+[{(-)*16(-[{([-{[-+-]}[++-]>])%5000[++-]>}])%18}])%16]>)*-1

My Redcode programs

;redcode-94nop
;name lzma2
;or rather, Epsilon. This is actually totally unrelated to lzma, but it shares
;the same core feature: deadly against imps.
;author NDusN
;which is how CoreWin display теsт
;strategy q, Very anti-imp paper and ordinary stone
;This warrior is somewhat ordinary, and not nearly as original as lzma
;assert CORESIZE == 8000

org     qscan;from Core Warrior #92

qm      equ 3722
qm2     equ 2681

qa1     equ ((qtab1-1-found)*qm2+1)
qa2     equ ((qtab1-found)*qm2+1)
qb1     equ ((qtab2-1-found)*qm2+1)
qb2     equ ((qtab2-found)*qm2+1)
qb3     equ ((qtab2+1-found)*qm2+1)
qc      equ ((qtab3-found)*qm2+1)

        dat 7, qb1
qtab2   dat 7, qb2
        dat 7, qb3
        for 11
        dat 0, 0
        rof

cnt     equ 3358
step    equ 3039
step1   equ 7848
step2   equ 2566
step3   equ 3201
step4   equ 2167
step5   equ 4081

boot    spl 2, {1111
        spl 2, {2222
        spl 1, }0
        spl 1, {3333
        mov <1, {1
        spl step5, data+2
        spl *-1, {4444
        mov <1, {1
        jmp step4, data2+1

        spl @0, >step1
        mov }-1, >-1
        spl @0, >step3
        mov }-1, >-1
        mov data2, >4063
        mov data2, >1102
        mov {-4, <1
        djn @0, <step2
data2   dat <2667, <5334

        spl #0
        mov data, @atk
hit     add #step*2, atk
atk     mov data, }hit-step*cnt
        djn.f -3, >hit-step*cnt
        dat 0, 0
        dat 0, 0
data    dat >step, >1
        for 12
        dat 0, 0
        rof

qtab3   dat >-90, >qc
        for 5
        dat 0, 0
        rof
        dat 0, qa1
qtab1   dat -1, qa2
        for 5
        dat 0, 0
        rof
qscan   sne found+qm*qc, found+qm*qc+qb2
        seq <qtab3, found+qm*(qc-1)+qb2
        jmp q0, }q0
        sne found+qm*qa1, found+qm*qa1+qb2
        seq <(qtab1-1), found+qm*(qa1-1)+qb2
        djn.a q0, {q0
        sne found+qm*qa2, found+qm*qa2+qb2
        seq <qtab1, found+qm*(qa2-1)+qb2
        jmp q0, {q0
        sne found+qm*qb1, found+qm*qb1+qb1
        seq <(qtab2-1), found+qm*(qb1-1)+(qb1-1)
        jmp q0, {q2
        sne found+qm*qb3, found+qm*qb3+qb3
        seq <(qtab2+1), found+qm*(qb3-1)+(qb3-1)
        jmp q0, }q2
        sne found+qm*qb2, found+qm*qb2+qb2
        seq <qtab2, found+qm*(qb2-1)+(qb2-1)
        djn.f q0, <found+qm*(qb2-1)+(qb2-1)
        seq >found, found+qm+(qb2-1)
        jmp q1, <found
        seq found+(qm+1)*(qc-1), found+(qm+1)*(qc-1)+(qb2-1)
        jmp q0, }q0
        seq found+(qm+1)*(qa2-1), found+(qm+1)*(qa2-1)+(qb2-1)
        jmp q0, {q0
        seq found+(qm+1)*(qa1-1), found+(qm+1)*(qa1-1)+(qb2-1)
        djn.a q0, {q0
        jmz.f boot, found+(qm+1)*(qb2-1)+(qb2-1)
q0      mul.b *q2, found
q1      sne {qtab1, @found
q2      add.b qtab2, found
        mov qtab3, @found
found   mov qtab3, }qm
        add #5, found
        djn -3, #20
        djn.f boot, @found

end
;redcode-94nop
;name V.shot
;originally named Veryshot for its specialness; The dot must be read aloud for no good reason ;)
;author NDusN
;which is how CoreWin display теsт
;strategy q and bishot utilizing Lore-style clear
;To my knowledge, the only other published warrior at this time that uses
;this sort of clear is Forgotten Lore II itself. Why haven't anyone else thought
;of using it despite it being handy in several situations
;assert CORESIZE == 8000

org     qscan;from Core Warrior #92

qm      equ 3722
qm2     equ 2681

qa1     equ ((qtab1-1-found)*qm2+1)
qa2     equ ((qtab1-found)*qm2+1)
qb1     equ ((qtab2-1-found)*qm2+1)
qb2     equ ((qtab2-found)*qm2+1)
qb3     equ ((qtab2+1-found)*qm2+1)
qc      equ ((qtab3-found)*qm2+1)

        dat 7, qb1
qtab2   dat 7, qb2
        dat 7, qb3
        for 13
        dat 0, 0
        rof

step    equ 15
step2   equ 4500
off     equ 10

boot    
i       for 6 ;boot clear
        mov 12, step2-off
        rof
        for 5 ;boot scan
        mov 12, step2
        rof
        djn.f boot+step2+6, {3333

        ;lore-style clear written from scratch because it's actually easy to understand
gate    dat step, step
        dat <2667, 8
data    spl #16, {-2077
        mov data, >gate
        mov *-1, }gate
        jmp -2, <-3
        ;scanning part
init    add gate-off, scan
scan    sne 30, 4030
        djn.f init, @scan
        mov.f scan, gate-off
        jmp data-off, {3333
        for 13
        dat 0, 0
        rof

qtab3   dat >-90, >qc
        for 5
        dat 0, 0
        rof
        dat 0, qa1
qtab1   dat -1, qa2
        for 5
        dat 0, 0
        rof
qscan   sne found+qm*qc, found+qm*qc+qb2
        seq <qtab3, found+qm*(qc-1)+qb2
        jmp q0, }q0
        sne found+qm*qa1, found+qm*qa1+qb2
        seq <(qtab1-1), found+qm*(qa1-1)+qb2
        djn.a q0, {q0
        sne found+qm*qa2, found+qm*qa2+qb2
        seq <qtab1, found+qm*(qa2-1)+qb2
        jmp q0, {q0
        sne found+qm*qb1, found+qm*qb1+qb1
        seq <(qtab2-1), found+qm*(qb1-1)+(qb1-1)
        jmp q0, {q2
        sne found+qm*qb3, found+qm*qb3+qb3
        seq <(qtab2+1), found+qm*(qb3-1)+(qb3-1)
        jmp q0, }q2
        sne found+qm*qb2, found+qm*qb2+qb2
        seq <qtab2, found+qm*(qb2-1)+(qb2-1)
        djn.f q0, <found+qm*(qb2-1)+(qb2-1)
        seq >found, found+qm+(qb2-1)
        jmp q1, <found
        seq found+(qm+1)*(qc-1), found+(qm+1)*(qc-1)+(qb2-1)
        jmp q0, }q0
        seq found+(qm+1)*(qa2-1), found+(qm+1)*(qa2-1)+(qb2-1)
        jmp q0, {q0
        seq found+(qm+1)*(qa1-1), found+(qm+1)*(qa1-1)+(qb2-1)
        djn.a q0, {q0
        jmz.f boot, found+(qm+1)*(qb2-1)+(qb2-1)
q0      mul.b *q2, found
q1      sne {qtab1, @found
q2      add.b qtab2, found
        mov qtab3, @found
found   mov qtab3, }qm
        add #5, found
        djn -3, #20
        djn.f boot, @found

end
;redcode-94nop
;name Fort Destruction
;I originally reserved this name for a powerful stone/imp, but...
;author NDusN
;which is how CoreWin display теsт
;strategy Adding some diversity to the KotH hill: airbag and incen. bombs instead of imps
;It was independently developed, but ended up very similar to Behemot...
;assert CORESIZE == 8000

;Placed #4 when entered the nop hill, but did not enter the draft hill :(
;Thanks to Steve Gunnell for providing me with a hill approximation benchmark which this warrior is optimized against

org     qscan;from Core Warrior #92

qm      equ 3722
qm2     equ 2681

qa1     equ ((qtab1-1-found)*qm2+1)
qa2     equ ((qtab1-found)*qm2+1)
qb1     equ ((qtab2-1-found)*qm2+1)
qb2     equ ((qtab2-found)*qm2+1)
qb3     equ ((qtab2+1-found)*qm2+1)
qc      equ ((qtab3-found)*qm2+1)

        dat 7, qb1
qtab2   dat 7, qb2
        dat 7, qb3

step    equ 447
step2   equ 1959
step3   equ step2-65
off     equ -109
bmoff   equ 1

        mov.i {0, #0
init    mov jump+off, *2
        mov split+off, <1
        mov step*2-bmoff, @step-bmoff+1
        add *esc, -1
        mov }move+off, @-2
        jmz.a init, {move+off
esc     djn.f clr+step3-step2, {5555

boot    mov esc, esc+step2
bdata   spl 1, esc+step2
        spl 1, clr+step3+4
        mov <clr+4, <-1
        mov <split+3, <1
        mov.i -3, #split+3+step2+off
        mov {boot, <bdata
        djn.f >bdata, {6666

        dat 0, 0
split   spl #2, step*2
move    mov @0, }-1
jump    jmp -step, {1
        dat 0, 0

clr     spl #step*3, >step*3+1
        mov data, >data-16
        djn.f -1, >data-16
data    dat <2667, #21
        for 24
        dat 0, 0
        rof

qtab3   dat >-90, >qc
        for 5
        dat 0, 0
        rof
        dat 0, qa1
qtab1   dat -1, qa2
        for 5
        dat 0, 0
        rof
qscan   sne found+qm*qc, found+qm*qc+qb2
        seq <qtab3, found+qm*(qc-1)+qb2
        jmp q0, }q0
        sne found+qm*qa1, found+qm*qa1+qb2
        seq <(qtab1-1), found+qm*(qa1-1)+qb2
        djn.a q0, {q0
        sne found+qm*qa2, found+qm*qa2+qb2
        seq <qtab1, found+qm*(qa2-1)+qb2
        jmp q0, {q0
        sne found+qm*qb1, found+qm*qb1+qb1
        seq <(qtab2-1), found+qm*(qb1-1)+(qb1-1)
        jmp q0, {q2
        sne found+qm*qb3, found+qm*qb3+qb3
        seq <(qtab2+1), found+qm*(qb3-1)+(qb3-1)
        jmp q0, }q2
        sne found+qm*qb2, found+qm*qb2+qb2
        seq <qtab2, found+qm*(qb2-1)+(qb2-1)
        djn.f q0, <found+qm*(qb2-1)+(qb2-1)
        seq >found, found+qm+(qb2-1)
        jmp q1, <found
        seq found+(qm+1)*(qc-1), found+(qm+1)*(qc-1)+(qb2-1)
        jmp q0, }q0
        seq found+(qm+1)*(qa2-1), found+(qm+1)*(qa2-1)+(qb2-1)
        jmp q0, {q0
        seq found+(qm+1)*(qa1-1), found+(qm+1)*(qa1-1)+(qb2-1)
        djn.a q0, {q0
        jmz.f boot, found+(qm+1)*(qb2-1)+(qb2-1)
q0      mul.b *q2, found
q1      sne {qtab1, @found
q2      add.b qtab2, found
        mov qtab3, @found
found   mov qtab3, }qm
        add #5, found
        djn -3, #20
        djn.f boot, @found

end

Semi-serious language list

I created the Semi-serious language list, An attempt to distinguish the good esolangs from the others (which is about 99% of esolangs and still increasing). If you're interested, please help out!